150,000 Particles in a Browser Tab with WebGPU

June 13, 2026 · 1 min read · by cybernoid

The CyberLab homepage greets you with a swarm of 150,000 particles. They aren’t a video — every one is simulated and drawn live on your GPU using WebGPU compute and render pipelines.

Why ABC flow?

The Arnold–Beltrami–Childress flow is a divergence-free solution to Euler’s equations. In plain terms: it swirls forever without bunching up, which makes for endlessly watchable motion.

The trick to 60fps isn’t fewer particles — it’s never leaving the GPU.

The pipeline

Positions live in a storage buffer. A compute pass integrates the flow field; a render pass draws each particle as an additive instanced quad. The CPU only uploads a single matrix per frame.

@compute @workgroup_size(64)
fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
  // advect particle through ABC flow
}

Read the source in the theme — it’s all there, MIT-spirited and commented.

Leave a note

Your email address will not be published. Required fields are marked *