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.