POINTS OF LIGHT
Shape Planet  ·  Scroll 0%  ·  9,000 points · 1 draw call
Scroll ↓
✦ Three.js · Scroll · One Number

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.

9,000Points of light
4Shapes to morph
60 fpsFrame-loop scroll
1Draw call
Start scrolling ↓
01
The Wave

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.

02
The Ring

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.

03
The Galaxy

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:

TOOL 1 — DRAWS

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.

TOOL 2 — LISTENS

Scroll progress

One smoothed number, 0 → 3, updated by a passive scroll listener and consumed only inside the animation frame.

TOOL 3 — GLUES

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.

The lights could not start

Your browser could not start WebGL for this demo.
Try a current version of Chrome, Edge, Firefox or Safari, then reload the page.