One million particles

Positions and velocities live in GPU storage buffers. A TSL compute pass advances them every frame and the InstancedMesh reads the same buffer as an instanced attribute — nothing round-trips through JavaScript.

Poster of a swirling cloud of a million tiny particles

Reduced motion is on — showing the poster instead of the live scene.

Slider from 100 k to 1 M on WebGPU. With ?forceWebGL=1 the same graph runs through transform feedback at about 50 k particles.