ludic/packages/ludic.render3d/shaders/spv
Orkuncakilkaya b12228c662 feat(render3d): light you can see - sun shafts and valley mist
Everything before this made the air a COLOUR APPLIED TO A SURFACE. Nothing put light
in the space between surfaces, so the basin had no shafts, no pooled mist and no rays
off a ridge at any hour, whatever was done to the fog.

A half-resolution march from the camera to the depth buffer, asking the same shadow
the rest of the frame asks - the cascades, the baked height-field shadow and the cloud
mask - so a shaft is cast by the actual trees and the actual ridge and a passing cloud
dims its own rays. Henyey-Greenstein scattering, because real air throws light forward.
Density and a separate ground-hugging mist layer ride the sun's elevation, so mist
forms in the cold at either end of the day and burns off by mid-morning.

Composited with the bloom pyramid's own tent upsample under ONE/ONE - what was wanted
and already there - and before bloom, so a shaft blooms. Into post_hdr, not post_scene:
post_scene is what the water refracts and shafts added there would sit under the lake.

The tuning that mattered was the sky term, which is added at every step: at 0.06 it
accumulated into a flat grey wash lifting lit and shadowed air equally, which is the
contrast a shaft is made of, and the valley came out one pale sheet. At 0.012 the sun
dominates and there is light rather than fog. I cut the density and mist three times
before the frame looked like air instead of paint.

R3D_NOVOL=1 for an A/B; Off in Settings skips the pass whole.

400 frames at 07:00: GL 7.1 -> 7.3 s, VK 7.2 -> 7.4 s. Backends agree to 0.08/255.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 16:06:16 +03:00
..
1b654972.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
1b654972.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
1ce5c5d1.frag.spv feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
1ce5c5d1.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
1f95f31b.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
1f95f31b.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
1fde9cd2.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
1fde9cd2.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
2e2908c8.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
2e2908c8.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
2ee6d2e3.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
2ee6d2e3.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
3b183d8f.frag.spv feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
3b183d8f.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
3e4b62f9.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
3e4b62f9.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
4a8e9f28.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
4a8e9f28.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
4be7acd9.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
4be7acd9.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
4cf96468.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
4cf96468.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
4d4fa91b.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
4d4fa91b.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
4dda406a.frag.spv feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
4dda406a.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
5e4589a1.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
5e4589a1.vert.spv render3d(vulkan): the ground reads the sun cascades itself - no separate terrain sun pass 2026-09-15 17:26:39 +03:00
7ed7de52.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
7ed7de52.vert.spv feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
7f096322.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
7f096322.vert.spv feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
9d3e2ddd.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
9d3e2ddd.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
9dce3246.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
9dce3246.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
46e2325c.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
46e2325c.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
79b77ed9.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
79b77ed9.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
86f427b0.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
86f427b0.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
254e7887.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
254e7887.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
428caa3a.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
428caa3a.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
439a2253.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
439a2253.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
858f5089.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
858f5089.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
01089da8.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
01089da8.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
3733fc38.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
3733fc38.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
9068df1c.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
9068df1c.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
512004a1.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
512004a1.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
638623c2.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
638623c2.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
676965ab.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
676965ab.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
725523d9.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
725523d9.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
74258189.frag.spv feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
74258189.vert.spv feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
a0f2dbac.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
a0f2dbac.vert.spv render3d(vulkan): the ground reads the sun cascades itself - no separate terrain sun pass 2026-09-15 17:26:39 +03:00
a5ad521e.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
a5ad521e.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
a45356c7.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
a45356c7.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
a64015f2.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
a64015f2.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
a4683767.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
a4683767.vert.spv feat(render3d): HDR10 output, and DLSS that stays still 2026-09-15 20:06:18 +03:00
b9fc2041.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
b9fc2041.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
b79a1f4e.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
b79a1f4e.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
b4587cd4.frag.spv feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
b4587cd4.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
b964507f.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
b964507f.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
bf3151c8.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
bf3151c8.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
bfa15301.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
bfa15301.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
c57b4f14.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
c57b4f14.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
d48d6a48.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
d48d6a48.vert.spv feat(render3d): mesh-shader grass 2026-09-15 20:20:42 +03:00
e9b6300c.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
e9b6300c.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
e18e40c9.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
e18e40c9.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
e86f78e8.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
e86f78e8.vert.spv feat(render3d): HDR10 output, and DLSS that stays still 2026-09-15 20:06:18 +03:00
f4a2b586.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
f4a2b586.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
f34dce08.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
f34dce08.vert.spv fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
f2952361.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
f2952361.vert.spv render3d(vulkan): the ground reads the sun cascades itself - no separate terrain sun pass 2026-09-15 17:26:39 +03:00
f4382918.frag.spv feat(render3d): the air and the light are the hour's, not one constant apiece 2026-09-19 14:42:30 +03:00
f4382918.vert.spv fix(render3d): Vulkan exposure, foliage depth and meadow alpha 2026-09-15 12:29:24 +03:00
manifest.txt feat(render3d): light you can see - sun shafts and valley mist 2026-09-19 16:06:16 +03:00
probe.comp.spv feat(render3d): compute and indirect draws on Vulkan, and tree layers culled on the GPU (opt-in) 2026-09-15 14:19:43 +03:00
scatter_cull.comp.spv 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