render3d: the terrain as quantized tiles (LTT2) that every reader answers from, baked or cut
Heights as u16 over each 64 m tile's own minimum and step (a tile spanning 200 m steps 3 mm), normals octahedral 8 + 8, the photograph RGB8, and the coarse level (2048: heights f32, normals, photograph) - 30 + 32 + 48 + 16 + 8 + 12 MB, about 146 MB a map where the float tiles were 192 plus nothing coarse. The writer puts the whole copy back to the quantized values as it goes, so the build's own queries, the physics, the placements' bake and every machine read the same numbers; a tile read decodes them into the pools the queries and the page pool already use. terrain_tiles_bake(path, key, version, inputs_hash) writes a bake's file (ludic.base's LBAK header, the tiles as its payload) from a made map; terrain_from_baked(path, key, version, half, ox, oz) opens one at boot in place of terrain_use_dem / terrain_use_ortho, and terrain_init then generates nothing (and bakes the sun's shadow from the coarse level unless terrain_shadow_from_bytes gave it). Without a bake the cut writes the same format to <dir>/<key>.tiles and reads it back. The GPU's coarse level is made from the file's coarse sections (the blit from the whole maps is gone). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
883ea8d48a
commit
a12f1b1201
8 changed files with 397 additions and 149 deletions
|
|
@ -29,8 +29,9 @@ import "terrain.ludic"
|
|||
import "terrain_chunks.ludic"
|
||||
import "terrain_tiles.ludic"
|
||||
import "terrain_tiles_cut.ludic"
|
||||
import "terrain_ltt2_write.ludic"
|
||||
import "terrain_ltt2_read.ludic"
|
||||
import "terrain_pages.ludic"
|
||||
import "terrain_pages_coarse.ludic"
|
||||
import "terrain_pages_frame.ludic"
|
||||
import "terrain_pages_fill.ludic"
|
||||
import "overlay.ludic"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue