More
Under the hood
What the renderer does each frame, and the fixes it makes over the cloudpro.html page it grew from. Drag each slider to compare.
#The frame
#Atmosphere
A sky-view LUT with Rayleigh, Mie and ozone is evaluated at the camera altitude and throttled. A CPU twin of the transmittance gives the key-light colours without a GPU readback.
#Cloud march
A low-resolution, jittered raymarch through the world-space slab. It uses a weather map (km-scale clumps and clearings) evaluated once per sample and reused by the light march, and a lattice-keeping empty-space skip.
#Temporal reconstruction
Each pixel is reprojected with the full previous and current view-projection matrices at the cloud depth the march recorded. Rays without cloud reproject as directions. History that disagrees with that depth is rejected. A clip box is gathered at each pixel's own position, and Catmull-Rom history reads keep repeated reprojection from blurring.
#Bakes
The top-down cloud shadow map around the camera, the time-sliced equirect environment, and a throttled, reduced-sample PMREM.
#Backdrop
A fullscreen triangle at the far plane composites the atmosphere, clouds, sun, moon and stars behind your geometry.
#Parity with cloudpro.html

marine preset: the original page next to the NatureGL Sky demo’s “Sea 60 m” view, 1280×720.#Rendering fixes
Each pair was rendered in the demo with sky.debugLegacy (the cloudpro behaviour) off and on.
#Hatch-free clouds
cloudpro's empty-space skip strode 1.7 steps. That shifts the sample lattice ray by ray, and the converged image kept a fixed hatch pattern. The skip now strides 2 steps on a cheap probe and rewinds on entry, which keeps the lattice.

#Reprojection that survives flying
With the camera flying at 250 m/s, rotation-only reprojection smears the cloud bases. Full reprojection at the recorded depth keeps them sharp.

#No sun through an overcast deck
The discs, aureole, moon and stars are dimmed by the cloud's true transmittance, tracked through the TAA. Before, the aerial-perspective blend dimmed them, and the sun glowed through overcast.


#Rain veils without rainbows
Crepuscular darkening now scales instead of subtracting per channel. The subtraction had tinted storm rain violet and blue.

#A lunar aureole
A bare moon disc becomes a moon with its aureole, dimmed correctly behind thin cloud.

#Smaller improvements
- Dither that converges under TAA. The per-frame dither step stays low-discrepancy when the 8-frame jitter cycle sub-samples it.
- Silver lining. A tight forward-scattering lobe on thin, lightly shadowed fringes. The eroded detail is curl-warped so rims break into wisps.
- Night. A warm-cored milky way, and stars sized from the real pixel footprint.
- Horizon. Cloud aerial perspective uses the depth actually seen. A lit ground model with cloud shadows sits below the horizon, and the horizon dips for high cameras.
- Faster. Pruned Worley noise, the lattice-keeping skip, a weather-map cache, map-only shadow lookups in the backdrop and post pass, a throttled LUT, a time-sliced env bake and a reduced-sample PMREM.