Fog That Knows Where Things Are
Volumetric fog now composites into the frame for real: geometry dissolves into it at the right distances, near objects punch through it, and the density knob is connected to physics instead of a background tint. The six-week-old placeholder tint is gone.

Until this release, wiring a FogField into your scene changed exactly one thing: the background colour. A hand-tuned formula nudged the clear colour toward your scattering tint, scaled by density, and that was the entire visible output of the volumetric fog system. Objects did not fade with distance. Heavy fog left a crisp, unbothered box at a hundred and twenty metres. Setting density to 2.0 and 4.0 produced bit-identical frames, because past a cap the tint stopped caring. It looked like a fog parameter; it behaved like a wallpaper swatch.
The whole pipeline, connected
The pieces have existed for a while: a 160 by 90 by 128 voxel grid hugging the camera frustum, filled and integrated every frame since the last release with physically computed scattering and transmittance. What was missing was the final step, the one that takes that volume and puts it in front of your eyes.
That step is the new resolve pass. For every pixel it reads the scene’s depth, finds how far that pixel’s geometry sits along the view ray, looks up the accumulated in-scattered light and remaining transmittance at exactly that distance, and blends: surface times transmittance, plus inscatter. Geometry far away dissolves into the haze. Geometry up close keeps nearly all of its light, because eight metres of thin fog should cost you nine percent of a surface, not all of it. The fog also got the real camera this release, so its volume aligns with what you actually see, and height falloff and sun phase operate in world space rather than a placeholder’s idea of it.
The whole thing rides the same frame graph as the rest of the renderer, ordered after the mesh raster, with its bind group cached and zero allocations at steady state. Downstream passes, temporal antialiasing, bloom, tonemap, all see fogged pixels without knowing anything changed.
Tested against the exponential
The acceptance test renders two glowing boxes, one at eight metres, one at a hundred and twenty, inside fog of a precisely chosen density, and compares each box’s attenuation against the Beer-Lambert exponential computed independently. The near box must keep about 91 percent of its light; the far one must keep about 24; the ramp from density zero to four must strictly decrease, every step. The old facade fails every clause of that test simultaneously, which is the point: there is no way to pass it with a tint.
And with the real thing in place, the placeholder went into the ground in the same commit, all four of its tints, sky lift, cloud darkening, fog wash, water tinge, along with the test that had been carefully tuned to bless them. Clouds, sky and water now do their GPU work without any pixel output at all, which is the honest state until their own composites land, one task each, next on the list.
What it buys you
Atmosphere, the real kind. A FogField in your patch now produces depth, distance and mood: far geometry softens into the murk, near subjects stay present, and the density, scattering and height-falloff pins each do exactly what they say at every value. The fog of the demo patches finally looks like the fog of the screenshots that sold you on volumetrics in the first place, and the parameter you perform with live behaves like a physical quantity instead of a paint mixer.