ludic/packages/ludic.render3d
Orkuncakilkaya a12f1b1201 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>
2026-09-29 17:23:53 +03:00
..
lib/macos-arm64 feat(render3d): 22.10 - ludic.render3d carries MoltenVK, so a Mac program has its Vulkan driver 2026-09-28 01:16:26 +03:00
native feat(render3d): 22.10 - ludic.render3d carries MoltenVK, so a Mac program has its Vulkan driver 2026-09-28 01:16:26 +03:00
shaders Merge branch 'r3d/tp-shd' into r3d/fog-wall 2026-09-29 17:14:08 +03:00
actor.ludic render3d: the fog wall culls on the CPU - nothing past it costs a draw, a vertex or a caster 2026-09-29 15:38:00 +03:00
assets.manifest feat(gl): OpenGL 4.1 and the ludic.render3d renderer 2026-09-10 03:31:12 +03:00
bake_parts.ludic render3d: the deterministic work as bytes a bake keeps, and the textures made from them 2026-09-29 17:19:13 +03:00
camera.ludic render3d: the fog wall culls on the CPU - nothing past it costs a draw, a vertex or a caster 2026-09-29 15:38:00 +03:00
daylight.ludic packages: ludic.ui's render3d backend threads Render3dState; render3d's settable vars (r3d_dem_path, post_*, grass_*, wt_wade_*, ...) are Render3dState's fields again, not lets 2026-09-25 17:11:15 +03:00
drawstats.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
env.ludic render3d: the terrain as quantized tiles (LTT2) that every reader answers from, baked or cut 2026-09-29 17:23:53 +03:00
FEATURES.md r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
fmath.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
fog_casters.ludic render3d: under a fog wall the volumetric air is marched only to it, SSGI stops where it is solid, and card casters that fill the wall stop rebuilding 2026-09-29 17:00:27 +03:00
fog_impostors.ludic render3d: a fog wall nearer than a layer's cards lets its impostor atlases go, and a fog that opens bakes them again 2026-09-29 16:05:16 +03:00
fog_streams.ludic render3d: the uniform ring is 16 MB a half and grows when a frame outgrows it; streamed layers are sized for the fog's reach 2026-09-29 16:22:45 +03:00
gltf.ludic render3d: R3D_VKMEM=<frame> says where the GPU memory is, by owner, and the renderer's big CPU arrays 2026-09-29 15:58:59 +03:00
gltf_cached.ludic render3d: 671 frame-reachable allocation sites to 161 - declared, split, or made nothing 2026-09-28 15:58:18 +03:00
gltf_release.ludic render3d: @creates / @releases on its handles 2026-09-28 16:58:31 +03:00
gpu.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
gpu_manifest.ludic render3d: start-up declared, ov_nine and the caster test on buffers made once - 362 frame sites to 122 2026-09-28 16:21:51 +03:00
gpu_vk.ludic render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +03:00
gpu_vk_bc.ludic feat(render3d): 23.3 - a .dds beside a .png is uploaded BC-compressed with its whole mip chain 2026-09-28 01:23:45 +03:00
gpu_vk_draw.ludic render3d: the uniform ring is 16 MB a half and grows when a frame outgrows it; streamed layers are sized for the fog's reach 2026-09-29 16:22:45 +03:00
gpu_vk_layers.ludic render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +03:00
gpu_vk_readback.ludic render3d: the deterministic work as bytes a bake keeps, and the textures made from them 2026-09-29 17:19:13 +03:00
gpu_vk_res.ludic render3d/vk: a buffer re-filled every frame ping-pongs between two instead of being made again 2026-09-29 14:45:02 +03:00
grass.ludic render3d: R3D_VKMEM=<frame> says where the GPU memory is, by owner, and the renderer's big CPU arrays 2026-09-29 15:58:59 +03:00
grass_gpu.ludic render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +03:00
hooks.ludic wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run 2026-09-25 15:31:34 +03:00
mesh.ludic render3d: @owns on the handles records hold 2026-09-28 17:08:15 +03:00
overlay.ludic render3d/overlay: the font atlas kept as its coverage, one byte a texel 2026-09-29 14:45:02 +03:00
package.ludic feat(render3d): 22.10 - ludic.render3d carries MoltenVK, so a Mac program has its Vulkan driver 2026-09-28 01:16:26 +03:00
post.ludic render3d: under a fog wall the volumetric air is marched only to it, SSGI stops where it is solid, and card casters that fill the wall stop rebuilding 2026-09-29 17:00:27 +03:00
prof.ludic render3d: start-up declared, ov_nine and the caster test on buffers made once - 362 frame sites to 122 2026-09-28 16:21:51 +03:00
programs.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
quat.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
r3d.ludic render3d: the terrain as quantized tiles (LTT2) that every reader answers from, baked or cut 2026-09-29 17:23:53 +03:00
render.ludic render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +03:00
safe_api.ludic wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run 2026-09-25 15:31:34 +03:00
scatter.ludic render3d: under a fog wall the volumetric air is marched only to it, SSGI stops where it is solid, and card casters that fill the wall stop rebuilding 2026-09-29 17:00:27 +03:00
shadow.ludic render3d: the survey DEM is let go once the height field is made, and the terrain sun shadow is R32F + RG16F 2026-09-29 16:48:26 +03:00
skin.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
sky.ludic render3d: the deterministic work as bytes a bake keeps, and the textures made from them 2026-09-29 17:19:13 +03:00
stream.ludic render3d: the uniform ring is 16 MB a half and grows when a frame outgrows it; streamed layers are sized for the fog's reach 2026-09-29 16:22:45 +03:00
streamline.ludic render3d: r3d_fog_wall(dist) - fog that closes to the sky's horizon colour from 0.3 dist to dist, and nothing drawn past dist + 8 m 2026-09-29 15:07:40 +03:00
terrain.ludic render3d: the terrain as quantized tiles (LTT2) that every reader answers from, baked or cut 2026-09-29 17:23:53 +03:00
terrain_chunks.ludic render3d: the height field and photograph on the CPU as tiles read from a file (off until the game asks) 2026-09-29 16:53:28 +03:00
terrain_ltt2_read.ludic render3d: the terrain as quantized tiles (LTT2) that every reader answers from, baked or cut 2026-09-29 17:23:53 +03:00
terrain_ltt2_write.ludic render3d: the terrain as quantized tiles (LTT2) that every reader answers from, baked or cut 2026-09-29 17:23:53 +03:00
terrain_pages.ludic render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +03:00
terrain_pages_fill.ludic render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +03:00
terrain_pages_frame.ludic render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +03:00
terrain_tiles.ludic render3d: the terrain as quantized tiles (LTT2) that every reader answers from, baked or cut 2026-09-29 17:23:53 +03:00
terrain_tiles_cut.ludic render3d: the terrain as quantized tiles (LTT2) that every reader answers from, baked or cut 2026-09-29 17:23:53 +03:00
texture.ludic render3d: R3D_VKMEM=<frame> says where the GPU memory is, by owner, and the renderer's big CPU arrays 2026-09-29 15:58:59 +03:00
texture_dds.ludic render3d: R3D_VKMEM=<frame> says where the GPU memory is, by owner, and the renderer's big CPU arrays 2026-09-29 15:58:59 +03:00
vkmem_report.ludic render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +03:00
water.ludic render3d: the height field and photograph on the CPU as tiles read from a file (off until the game asks) 2026-09-29 16:53:28 +03:00