Mist rising off the point where a waterfall lands, plus a thinner veil
clinging to the sheet itself. Puffs are born small and fairly solid and
swell as they thin, wandering on turbulence rather than following a
trajectory — they are not thrown, so there is no arc and no gravity term.
Drawn as THREE.Points over the geometry from
buildWaterfallSprayGeometry; every particle's motion is computed in
this vertex shader from uTime, so the CPU cost per frame is one uniform
write no matter how many falls are on screen.
Depth-tested (a ridge in front of the fall occludes its mist) but never
depth-writing, so particles composite against each other without popping.
Mist rising off the point where a waterfall lands, plus a thinner veil clinging to the sheet itself. Puffs are born small and fairly solid and swell as they thin, wandering on turbulence rather than following a trajectory — they are not thrown, so there is no arc and no gravity term. Drawn as
THREE.Pointsover the geometry from buildWaterfallSprayGeometry; every particle's motion is computed in this vertex shader fromuTime, so the CPU cost per frame is one uniform write no matter how many falls are on screen.Depth-tested (a ridge in front of the fall occludes its mist) but never depth-writing, so particles composite against each other without popping.