ludic/changes/render3d-chunk-heights.md
Orkuncakilkaya ff658633fb feat(render3d): terrain_chunk_heights - the ground's B-spline heights a chunk at a time (23.5)
n x n samples of chunk (i, j) of a size_m grid from the terrain's corner, row-major into the
caller's buffer with nothing allocated, each the (1 4 1) / 6 B-spline filter of the texels under it
(ter_spline_at): what ludic.physics' jph_shape_heightfield_bspline makes of the whole map, so a
chunk's physics ground matches the drawn one and its neighbours' to the bit. The read-back lives
for the whole map (terrain_generate to terrain_unload). examples/rendering/chunks.ludic, in the
suite, checks the shared edges, a sample against the filter by hand, and a short buffer refused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 11:25:21 +03:00

722 B

bump: minor type: feature The ground's heights a chunk at a time: terrain_chunk_heights(i, j, size_m, n, out). For whatever is built per chunk (plan 23.5 of maroon-lake: the physics ground by 64 m chunks): n x n samples of chunk (i, j) of a grid laid from the terrain's corner, row-major into the caller's buffer, nothing allocated. Each is the ground's cubic B-spline at the texel under it - the separable (1 4 1) / 6 filter ter_spline_at, the same numbers ludic.physics' B-spline heightfield makes of the whole map - so neighbouring chunks share their edges bit for bit and agree with the drawn ground. The read-back lives from terrain_generate to terrain_unload. examples/rendering/chunks.ludic holds it.