What it does
Rayleigh and Mie scattering are integrated once into transmittance and multiple-scattering lookup tables, then into a sky-view table. Every pixel of the dome, every cloud sample and every fogged surface reads from the same tables, so the colours agree: the blue deepens toward the zenith, the horizon whitens with haze, and a low sun reddens because the tables say it does.
The clouds are a cumulus shell marched through a noise volume, eroded at the edges and lit with multiple scattering.
Each frame only a fraction of the pixels is marched, and a reprojecting temporal resolve rebuilds the rest at full
detail. Clouds carry their own depth, so geometry in front of them hides them. A top-down cloud shadow map darkens the
ground and blocks the god rays, which render-3d's shadow cascades block too, so a mountain or a mast throws a shaft.
An aerial-perspective pass fades distant surfaces toward the sky behind them.
A day clock places the sun and the moon on the arc for the observer's latitude, spins a star panorama about the pole
and eases the twilight. The sky bakes itself into a mipped environment map for anything reflective and writes
render-3d's lighting record, so shadows, ambient and fog match the hour. In a 2D world, an independent background
camera renders the same atmosphere and clouds before the sprites, with no 3D scene needed.
Features
- A physically based atmosphere — scattering through lookup tables shared by the sky, the clouds and the fog.
- Volumetric clouds — a shell you can fly through, rebuilt over a lattice of 4, or 2 for fast cameras.
- Cloud shadows — a shadow map over a box round the camera, 4,000 metres half-width by default, published for
render-3dandwatermax. - God rays — marched through the cloud shadow and the scene's shadow cascades, tuned by the haze and the distance.
- A day clock —
time,hour,daySecondsandlatitude, with the moon on its own arc and a turning star panorama. - Eight presets — among them
partlyCloudy,stunningSunset,thunderstorm,stormyEvening,moonlitNight,fluffyandhazy. - Quality tiers —
low,medium,highandultra, switched live. - Drives the lighting — sun, ambient and fog written into
render-3d, with auto exposure so a moonlit night is not black. - An environment map — baked and mipped for water and reflective materials.
- 2D backgrounds — a sky-only camera with yaw, pitch, field of view and altitude, behind the sprites.
Good for
- Open-world and flight games — clouds the camera can climb into and through.
- Sea and sailing games — with
watermaxreflecting the sky and reading the same sun. - Landscapes — cloud shadows drifting across the ground.
- Cinematic moments — sunsets that colour the clouds from below, god rays, a thunderstorm rolling in.
- 2D games with a dramatic sky — a volumetric cloudscape behind side-on or top-down play.
Make it yours
Start from a preset and change what you need. apply merges a partial set of parameters for the atmosphere, the sun,
the time, the clouds, the weather, the god rays and the night sky, and every field of params can be edited in place.
Options set the quality tier, the clock and latitude, which features run (clouds, god rays, cloud shadows, the
environment map and the lighting), the god-ray step count, a cloud wind that outlives every preset, and the moon, star
and cirrus textures.
Two very different uses: an open 3D world at high quality with a two-minute day, cloud shadows on the terrain, god
rays, and the lighting driven by the sky; and a 2D side-scroller with the fluffy preset, a still clock, a background
view tilted up 30 degrees, and the environment map, cloud shadows, lighting and god rays switched off because nothing
3D reads them.
A quick look
A sunset preset with a two-minute day, more cloud and stronger god rays:
game.skymax.preset('stunningSunset');
game.skymax.daySeconds = 120;
game.skymax.apply({ cloud: { shape: { coverage: 0.6 } }, godRays: { strength: 1 } });
Works with
render-webgpu— the backend it needs; there is no WebGL fallback.render-3d— its lighting is driven by the sky, and its shadow cascades cast god rays.watermax— reflects the environment map and reads the same sun.terrain-3d— its ground takes the cloud shadow.world-sideandworld-topdown— the 2D worlds it can stand behind.sky-3d— the light, painted sky on WebGPU and WebGL2; compose one or the other, never both.
Good to know
- WebGPU only, and far heavier than
sky-3d; choosequality: 'low'for integrated GPUs. - The clouds resolve over a few frames when the camera moves fast;
lattice: 2halves the wait at twice the cost. - Distances are metres and the clouds sit thousands of units up, so scale the world to match or push the far plane past them.
- The aerial-perspective fog needs kilometres of scene to show, and a 2D scene has no depth fog, ground shadows or geometry god rays.
- The exposure meter reads the sky and the sun, not the frame, so a dark cave under a bright sky is metered for the sky.






