oceanUnderwater
Everything that happens to light on the water side of the surface, as one full-screen pass: caustics on submerged geometry, per-channel absorption fog along the eye ray, sun shafts when looking up from below, and the waterline band when the camera straddles the surface.
These cannot live in the surface shader, because they apply to fragments the water is never drawn over — the seabed, a hull, a reef — and to the whole screen once the camera goes under. All four fall out of one reconstruction: each pixel's world position from scene depth and the drawn camera's inverse view-projection, which gives its depth below the surface and the length of water the eye looks through to reach it.
The caustics are read from the ocean's own cascade fields rather than a
stand-in noise, so the light on the seabed is cast by the waves actually
overhead. The ocean publishes which buffers to sample through
~.modules.oceanUnderwaterState.
Scoped to this part · feeds back into the world's score.