What it does
At half resolution, every pixel walks 28 steps toward the sun's position on screen, reading the opaque depth as it goes: sky lets light in, geometry blocks it, and the decayed sum becomes shafts. Half resolution is deliberate, since the result is a smooth radial field and full resolution would add only cost.
The trick that makes beams rather than haze is the mask. A sample only adds light if it is sky and near the sun, not any sky at all; counting every sky pixel along the path gives a diffuse wash that disappears into a bright horizon, while gating on the sun turns it into defined beams radiating through the gaps. A radial falloff then keeps the shafts near the sun, and the result is added to the frame, so the rays add light rather than tinting what is underneath.
The pass follows the sun position the renderer publishes, so whatever owns the sun, sky-3d's day cycle or your own
sun, moves and colours the shafts. With underwater-3d composed and the camera submerged, the shafts dim with depth
and take the water's colour instead of hanging at full brightness below the surface.
Features
- Defined beams — the sun-region mask makes shafts through gaps, not a wash over the sky.
- Half resolution — one pass of 28 depth reads a pixel, plus an additive composite.
- Free when unseen — the pass does not run while the sun is off screen.
- Live controls —
strength,decayandenabledongame.godRays, andvisibleto tell whether it is drawing.
Good for
- Forests and woodland — sunlight breaking through a stand of trees.
- Hills and doorways — beams past a ridge or through an opening when the sun sits behind it.
- Exploration and walking games — the cheapest single thing that makes the air feel full.
- Underwater scenes — sun shafts from above that die away as the player dives.
Make it yours
Three options, set in the manifest or live on game.godRays: strength, the shafts' brightness (default 0.9);
decay, the falloff at each step of the march (default 0.94); and enabled. A woodland walk under a day cycle can run
it at full strength and let the shafts come and go as the sun moves through the trees; an underwater level can
compose it beside underwater-3d, which fades and tints the same shafts as the dive goes deeper.
A quick look
{ "id": "god-rays-3d", "options": { "strength": 0.8 } }
game.godRays.strength = 1.2; // live: brighter shafts
game.godRays.visible; // false while the sun is off screen
Works with
render-3d— required; it supplies the depth and the sun's screen position.core-3dbrings it.sky-3d— a day cycle that moves and colours the shafts.flare-3d— the lens flare: the rays are the light in the air, the flare is what the lens does with it.underwater-3d— dims and tints the shafts with depth when the camera is submerged.
Good to know
- It is screen-space, so it only knows what is in the frame: an occluder just off the edge casts no shaft, and the beams fade at the frame border.
- It reads the opaque depth, so water, particles and glass neither block the light nor catch it.
- The sun is the only source; a lamp or a torch makes no shafts.
- Looking away from the sun, it does nothing at all.






