ludic/packages/ludic.render3d
Orkuncakilkaya 617ac10c5a render3d: the terrain's GPU maps paged round the camera while the tiles are on
At the cut the whole 4096 height, normal and photograph textures go, replaced by a coarse
2048 level (the CPU's tt_coarse uploaded; the normal and photograph blitted down on the GPU,
the photograph mipmapped) and a pool of fine tiles in three array textures - heights, normals,
photograph, each layer a tile with a one-texel border - addressed through a tt_n^2 page table
(u_tp_page: slot + 1, 0 = the coarse level). The pool holds the tiles within the reach (900 m,
or the fog wall's when nearer) and a ring, and is made again when the fog wall changes its size
(terrain_pages_fog). Once a frame (tp_frame, beside tt_frame) tiles past the reach and two tiles
go and the wanted ones come in nearest first, 8 a frame, written into a staging buffer kept for
the process (two halves, one per frame in flight) and copied into their layers inside the frame's
own command buffer - no submit of their own - with the page table re-uploaded only when it
changed. tp_bind binds the pool (or 1-layer stand-in arrays while paging is off, u_tp_on = 0) for
every program that reads the ground: terrain_bind_height (models, scatter, shadow_bind, grass),
terrain_bind_prog, the sun pass and the shadow bake. grass_cull.comp reads through the same page
table. R3D_VKMEM prints the pool's line. Tiles off, nothing changes. Compile-only: not run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 17:13:11 +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 render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +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
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's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +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_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's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +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: 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
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's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +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_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_coarse.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 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_tiles_cut.ludic render3d: the terrain's GPU maps paged round the camera while the tiles are on 2026-09-29 17:13:11 +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