9,000 points
of light.
One swarm of light, four homes. Scroll — and the swarm leaves the planet, becomes a wave, folds into a ring, then opens into a galaxy. No 3D artist. No game engine. Just three tools, one job each.
Scroll becomes
one number.
A passive listener turns the whole page into a single value: 0 at the top, 3 at the bottom. That number is read inside the frame loop, 60 times a second — so the page itself never re-renders while you scroll. That is the trick that keeps it silky.
Each point leaves
a little early,
a little late.
Every point carries its own delay. When the shape changes, some rush ahead and some linger — so the swarm moves like a flock, never a hard cut, never a fade.
You bring
the feeling.
Same recipe, different feeling. Describe the motion in one sentence — the shapes, the shader and the timing follow. The whole recipe, live:
Three.js + Bloom
9,000 points in one draw call — a bright core layer and a soft halo layer, finished with an Unreal bloom pass so every point truly glows.
Scroll progress
One smoothed number, 0 → 3, updated by a passive scroll listener and consumed only inside the animation frame.
The shader
A small vertex shader mixes the four homes with each point's own delay — the flocking swarm is about ten lines of GLSL.