NatureGL Skyv1.1.0

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

NatureGL Sky
cloudpro.html
cloudpro.htmlNatureGL Sky
The 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.

After
Before
BeforeAfter

#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.

Full reprojection
Rotation only
Rotation onlyFull reprojection

#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.

After
Before
BeforeAfter
After
Before
BeforeAfter
The same fix at a cloud edge: the disc now sits behind the cloud.

#Rain veils without rainbows

Crepuscular darkening now scales instead of subtracting per channel. The subtraction had tinted storm rain violet and blue.

After
Before
BeforeAfter

#A lunar aureole

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

After
Before
BeforeAfter

#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.