00:00 / 00:00

Persona

Snow

Flakes fall through a fixed volume around the stage, settle on the first surface they meet — avatars, props, and the implicit floor underfoot — rest there, melt away, and respawn at the top to fall again

The whole loop runs on the GPU. Ten thousand flakes cost one compute dispatch, not ten thousand JavaScript objects

Controls

ControlRangeDefaultEffect
Amount100 – 100002000Number of simultaneous snowflakes
Speed0 – ×3×1Fall and drift clock multiplier. 0 freezes them mid-air
Wind−3 – 3 m/s0 m/sSteady sideways drift along the stage's x axis
Sway0 – 31How much a flake wanders side to side on its way down
Flake Size0.4 – 31Flake size multiplier
Melt Time0.5 – 30 s6 sHow long a settled flake takes to finish melting away
Opacity0.1 – 11Flake opacity

Every flake also carries its own randomness — fall speed, size, and sway phase all differ — so slow floaters mix with fast darts instead of the field translating as one sheet

Size is not uniformly distributed but layered in two: the large majority are fine, distant grains, and roughly one in ten is a much larger near flake. That sense of depth comes from VTube Studio's snow, and it is why pushing Flake Size up does not turn the frame into a field of identically sized dots — it scales the two layers rather than flattening them together

Rendering in the Scene

Snow is rendered as geometry in the same 3D space as the avatar, before post-processing. This means:

  • Lights reach it, so the snow picks up the scene's colour instead of staying flat white
  • Depth of field blurs it by its actual distance from the camera
  • The whole look stack grades it, because it is already in the frame before those stages run
  • Whether it passes in front of or behind the avatar depends on where it happens to be drifting

Its material is slightly emissive, so the snow stays visible even in a scene with no lights at all

Falling, Settling, Melting

Flakes land on a top-down heightmap refreshed every other frame, which sees everything on the stage — avatars, props, and the implicit floor at y = 0. Flakes are excluded from it, as is the skybox, so snow never lands on snow and never mistakes the background for ground

The moment a flake crosses a surface it stops and starts its clock. Over the last stretch of Melt Time it shrinks away, then respawns at the top and begins again. So this is not snow that piles up over the stream — it is a steady loop, and Amount is what sets how much of it is on screen

Enabling it seeds flakes through the whole column rather than starting them at the top, so the first frame after the switch already shows snow mid-fall

Wind and Sway

Wind is a constant sideways drift in metres per second; Sway is each flake's own wander. Both wrap around the volume, so no amount of wind ever empties it

Zero wind with a little sway is quiet snowfall. Push wind to either extreme and it streaks across the stage — pair that with a shorter Melt Time and it produces a blizzard effect

Cost

Snow does not join the post chain, so turning it on does not add a full-screen pass the way the other effects do. Its cost sits elsewhere: one compute dispatch per frame, plus a heightmap render every other frame — shared with rain, so enabling both does not duplicate height-map rendering

Amount is the main performance control. Buffers allocate for the ceiling once, so moving it rebuilds nothing — but simulating more flakes takes longer

Snow fades in and out over about 0.4 seconds when toggled, rather than appearing or vanishing outright

Last updated on September 19, 2026

Tech otakus destroy the world