Rain that actually falls through the stage. Drops are quads stretched along their own velocity — fall speed plus wind — so the streak is the motion blur a camera shutter would leave. The moment one hits a surface it freezes there and throws a brief expanding splash ring, then recycles to the top
It shares its GPU simulation system with snow, and like snow it is scene geometry rather than a stage in the post chain
Controls
| Control | Range | Default | Effect |
|---|---|---|---|
| Amount | 100 – 10000 | 4000 | Number of simultaneous raindrops |
| Speed | ×0.2 – ×3 | ×1 | Fall-speed multiplier |
| Wind | −6 – 6 m/s | 0 m/s | Steady sideways wind along the stage's x axis |
| Drop Length | 0.2 – 3 | 1 | How far a streak is stretched |
| Drop Width | 0.4 – 3 | 1 | How thick a streak is |
| Splashes | 0 – 1 | 0.7 | Strength of the impact rings. 0 recycles on contact |
| Opacity | 0.05 – 1 | 0.4 | Opacity of the streaks and splashes |
×1 is a little over five metres per second, slightly slower than real rain — any faster and a streak crosses the frame in one tick as a nearly invisible line
Wind Steers the Streaks
Wind does more than blow the rain sideways. Streaks stretch along the combined fall-plus-wind velocity, so as wind rises the streaks tilt with it and the whole downpour reads as slanting across the stage
Wind is metres per second and is independent of the Speed multiplier — Speed only accelerates the fall. For a storm, push wind past 4, lengthen Drop Length and pull Opacity down a little; what you get is a dense sheet cutting across the frame
Drops wrap around the volume surrounding the stage, so no amount of wind can drain it
Splashes
Drops hit a top-down height map that sees everything on the stage — the avatar, props, and the implied ground underfoot. On contact the drop stops, and a splash ring spreads flat across that surface for about a third of a second before it fades
The splash lies flat on the surface it hit rather than always facing the camera, so from a low angle a splash on top of the head is foreshortened by perspective, exactly as it would be if it were really there
At Splashes 0 a drop recycles the instant it touches a surface — no ring, and none of its draw cost
Rendering in the Scene
Like snow, rain is real geometry in the scene:
- Lights do not illuminate it — streaks are self-lit transmissive highlights rather than lit bodies, so rain stays visible in the darkest scene
- Depth of field blurs it by its actual distance from the camera
- The whole look stack treats it like anything else, because it is already in the frame before those stages run
- Whether a drop is in front of or behind the avatar depends on where it happens to be falling
Cost
Rain does not occupy the post chain, so running it does not add a fullscreen pass the way the other effects do. Its cost is elsewhere: one compute dispatch per frame plus a height-map render every other frame — shared with snow, so enabling both does not duplicate height-map rendering
Amount is the main performance control. Buffers allocate for the maximum once, so moving it rebuilds nothing — but simulating more drops takes longer
Rain fades in and out over about 0.4 seconds when toggled, rather than appearing or vanishing outright
Rain needs GPU compute, so it appears on the 3D stage only. On a machine that falls back to WebGL the compute graph may be rejected — rain then turns itself off and leaves a line in the console without interrupting the rest of the stage
Last updated on September 19, 2026