currently we do all particle updates on the CPU, which is costy for millions of particles. We could use transform-feedback instead. This would also allow depth-buffer based collisions. https://gpfault.net/posts/webgl2-particles.txt.html