Soharab Zia
01 — Engine

Particles that take any shape you give them.

A scroll-driven WebGL point cloud that flows from one form to the next as the reader moves down the page. One mesh, no video, no sprite sheets.

24,000 points1 draw call
02 — GPU morph

Morphing, not keyframes.

Every point knows its position in each target shape. The vertex shader blends between them with a single uniform, so points move in parallel without touching the CPU.

mix() in-shadersimplex noise field
03 — Choreography

Motion tied to the reader.

Lenis smooths the scroll into a single progress value and snaps to each section. Shapes settle when centered and tumble across the canvas in between.

Lenis + snapscroll → uniform
04 — Dissolve

And then, the sea.

Keep going. At the bottom of the page the last shape breaks apart and settles into an open sea of particles, rolling under smooth waves.

scroll to the end
Scroll to morph
Compiling shaders