ludic/packages/ludic.render3d/r3d.ludic
Orkuncakilkaya 5b3cfac48e render3d: the height field and photograph on the CPU as tiles read from a file (off until the game asks)
terrain_tiles_to(dir, key) before a map is made: once made, its heights, photograph and baked normals
are written tile by tile (64 m, TT_TEX) to <dir>/<key>.tiles - fresh every time, header last, so no
other generator's or a torn file is ever read - and the whole copies go. Every read goes through the
tile: resident, else read from the file there and then into a 2048-tile clock, so terrain_height,
terrain_height_smooth, terrain_ortho* and terrain_chunk_heights answer exactly what the whole copy
did (R3D_TT_CHECK: worst 0.0 m over 4000 points) whatever is resident - two machines and the boot's
placements agree to the bit. terrain_chunk_heights takes render3d_st mut for it.

terrain_height_near(read-only): the tile if it is in, else a coarse 2048^2 level (worst 0.91 m), never
the file - for line checks that must not take render3d_st mut. terrain_texel() is the texel size,
terrain_tiles_prefetch(x, z, r, budget) reads ahead, and a frame that reads more than 8 tiles says so
once. R3D_TERRAIN_TILES=<dir> turns it on for a run.

At the overlook with MallocLargeCache=0: 1731 MB off, 1658 MB on; 192 MB written in ~200 ms; the
frame unchanged (0 pixels over 8).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 16:53:28 +03:00

49 lines
1.5 KiB
Text

# ============================================================================
# ludic.render3d — a physically based 3D renderer on Gl.* (OpenGL 4.1 core).
# Import this one file, and register what a frame draws: r3d_on_draw, r3d_on_casters and, for a
# streamed layer, r3d_on_stream_fill (hooks.ludic).
# ============================================================================
numbers float # the renderer's numbers are floats whoever imports it
import "env.ludic"
import "hooks.ludic"
import "fmath.ludic"
import "gpu.ludic"
import "gpu_manifest.ludic"
import "gpu_vk.ludic"
import "vkmem_report.ludic"
import "gpu_vk_res.ludic"
import "gpu_vk_bc.ludic"
import "texture_dds.ludic"
import "prof.ludic"
import "drawstats.ludic"
import "programs.ludic"
import "texture.ludic"
import "mesh.ludic"
import "gpu_vk_draw.ludic"
import "camera.ludic"
import "sky.ludic"
import "daylight.ludic"
import "terrain.ludic"
import "terrain_chunks.ludic"
import "terrain_tiles.ludic"
import "terrain_tiles_cut.ludic"
import "overlay.ludic"
import "shadow.ludic"
import "post.ludic"
import "quat.ludic"
import "gltf.ludic"
import "gltf_release.ludic"
import "gltf_cached.ludic"
import "skin.ludic"
import "scatter.ludic"
import "fog_casters.ludic"
import "fog_impostors.ludic"
import "actor.ludic"
import "stream.ludic"
import "fog_streams.ludic"
import "grass.ludic"
import "grass_gpu.ludic"
import "water.ludic"
import "streamline.ludic"
import "render.ludic"
import "safe_api.ludic"