ludic/packages/ludic.render3d
Orkuncakilkaya e691f072ae render3d/shadow: tree impostors cast only into the far cascades
Every tree on the map was drawn as an impostor card into all the cascades,
the near two included, whose receivers (within 60 m) are shaded by the near
trees' own LOD2 meshes cast beside them. The cards now cast from cascade 2 on.

Aspen view, same main and foundations, 240 frames, with the figure capsule:
shadow instances 323,587 -> 202,743; shadow GPU 4808-4942 -> 4579/4578 us;
median frame 17200-17693 -> 17178/17205 us. The look held: shots of the view
taken twice a side are identical within a side (0.00% of pixels past 8) and
differ by 0.04% across (every pairing).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 12:37:24 +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/foliage: a small plant is occluded by the sward it stands in, so it no longer glows at night 2026-09-29 12:19:10 +03:00
actor.ludic render3d/shadow: a dressed figure casts one capsule in the far cascades 2026-09-29 12:37:24 +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: scratch the frame uses is made with the state, not on first use 2026-09-28 16:30:17 +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/shadow: a dressed figure casts one capsule in the far cascades 2026-09-29 12:37:24 +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
gltf.ludic render3d: a model owns its skin - @creates(Skin) skin_load, @releases(Skin) skin_free, @owns on Model.skin 2026-09-28 17:09:00 +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 r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +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: gvk_read_screen reads back into one buffer kept in the state 2026-09-29 12:09:11 +03:00
gpu_vk_res.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
grass.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
grass_gpu.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
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: frame keeps 32 to 16 - tables and queues sized at start-up, the rest declared; birth leaks freed 2026-09-28 16:46:17 +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: to its floor - messages in declared helpers, post and DLSS set up at start, lists sized 2026-09-28 16:36:44 +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 Merge branch 'lang/chunks' into lang/uifree - the ground's heights by chunk and its Jolt ground per chunk; both new render checks kept (steady, chunks) 2026-09-28 11:55:55 +03:00
render.ludic render3d: frame keeps 32 to 16 - tables and queues sized at start-up, the rest declared; birth leaks freed 2026-09-28 16:46:17 +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/shadow: tree impostors cast only into the far cascades 2026-09-29 12:37:24 +03:00
shadow.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +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: 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
stream.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
streamline.ludic render3d: frame keeps 32 to 16 - tables and queues sized at start-up, the rest declared; birth leaks freed 2026-09-28 16:46:17 +03:00
terrain.ludic render3d: to its floor - messages in declared helpers, post and DLSS set up at start, lists sized 2026-09-28 16:36:44 +03:00
terrain_chunks.ludic feat(render3d): terrain_chunk_heights - the ground's B-spline heights a chunk at a time (23.5) 2026-09-28 11:25:21 +03:00
texture.ludic r3d/runtime: allocs, keeps and births at 0 on this side 2026-09-28 20:10:59 +03:00
texture_dds.ludic render3d: 671 frame-reachable allocation sites to 161 - declared, split, or made nothing 2026-09-28 15:58:18 +03:00
water.ludic render3d/water: the saved camera's two views made once, not with each reflection target 2026-09-28 23:47:25 +03:00