ludic/packages/ludic.render3d
Orkuncakilkaya 182cbf3cc3 fix(render3d): a leaf is not matte
Foliage roughness was pinned to 1.0 and grazing Fresnel switched off, so nothing green
in the game had a highlight anywhere. The glint off waxy leaves and wet needles is most
of what makes a stand look alive rather than painted.

The reason it was off is real: a crown is card quads, and at a grazing angle the card's
normal is a lie, so a specular lobe frosted whole crowns white against the sky. The sheen
returns as its own term gated on exactly that - it fades as the card turns edge-on, which
is where its normal stops meaning anything. A tight lobe for the glint, a weak wide one
for the waxy rim, nothing at the angles that frosted.

Translucency reaches 260 m rather than 140, and a dense crown passes 0.45 of it rather
than 0.3, so a backlit stand glows for as far as you can see it.

400 frames: GL 7.1 s, VK 7.4 s. Backends agree to 0.14/255.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 16:41:33 +03:00
..
shaders fix(render3d): a leaf is not matte 2026-09-19 16:41:33 +03:00
actor.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
assets.manifest feat(gl): OpenGL 4.1 and the ludic.render3d renderer 2026-09-10 03:31:12 +03:00
camera.ludic feat(render3d): DLSS super resolution and Reflex through NVIDIA Streamline 2026-09-15 19:26:12 +03:00
collide.ludic feat(render3d): replace the world at run time, water bodies, terrain_sea 2026-09-13 00:03:40 +03:00
daylight.ludic fix(render3d): the ground keeps more of its own colour, and the rock keeps all of it 2026-09-19 16:29:17 +03:00
drawstats.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
env.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
FEATURES.md feat: per-voice audio, outlines for what is not an actor, and a coast 2026-09-11 15:25:46 +03:00
fmath.ludic feat(render3d): gpu.ludic - the seam for a second graphics API, and what the GPU can do 2026-09-15 09:52:12 +03:00
gltf.ludic render3d(vulkan): GPU-driven trees - one merged mesh per material, one draw per material; on by default 2026-09-15 16:44:00 +03:00
gpu.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
gpu_manifest.ludic feat(render3d): read the SPIR-V manifest the way a Vulkan backend will 2026-09-15 10:41:43 +03:00
gpu_vk.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
gpu_vk_draw.ludic fix(window): the title a program passes to gl_open / gvk_open reaches the window 2026-09-17 14:02:23 +03:00
gpu_vk_res.ludic feat(render3d): HDR10 output, and DLSS that stays still 2026-09-15 20:06:18 +03:00
grass.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
mesh.ludic perf(render3d): Vulkan draws find pipelines by integer and reuse descriptor sets 2026-09-15 13:22:51 +03:00
overlay.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
package.ludic feat(gl): OpenGL 4.1 and the ludic.render3d renderer 2026-09-10 03:31:12 +03:00
post.ludic feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
prof.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
programs.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
quat.ludic feat(gl): OpenGL 4.1 and the ludic.render3d renderer 2026-09-10 03:31:12 +03:00
r3d.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
render.ludic feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
scatter.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
shadow.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
skin.ludic refactor(render3d): vertex data and draws behind gpu.ludic 2026-09-15 10:21:55 +03:00
sky.ludic perf(render3d): the sky light baked once at start, the terrain load in four steps, actor cull bounds by height 2026-09-15 15:03:06 +03:00
stream.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
streamline.ludic feat(render3d): gate R3D_* switches behind R3D_DEV in windowed builds 2026-09-16 13:21:51 +03:00
terrain.ludic Merge the R3D_DEV gate: render3d's debug switches only in headless or R3D_DEV builds 2026-09-16 15:31:54 +03:00
texture.ludic feat(render3d): texture filtering and shadow resolution a game can change while it runs 2026-09-15 14:25:55 +03:00
water.ludic Merge the R3D_DEV gate: render3d's debug switches only in headless or R3D_DEV builds 2026-09-16 15:31:54 +03:00