I made Party, a particle system and physics engine. It uses WebGPU compute shaders when available, falling back to CPU + Canvas2D otherwise.
This was mostly an opportunity for me to experiment with WebGPU. Having built particle systems several times before, I wanted something modular and performant that I could actually reuse and extend over time, and that would let others create their own modules too.
On the homepage https://caza.la/party a few different configurations run automatically, so you can get a sense of what it can do just by watching for a bit.
If you go into the playground, you can interact with everything in realtime: spawn/remove particles, apply forces, draw joints, tweak parameters live, undo/redo, save/load sessions, etc.
Repo: https://github.com/cazala/party
It includes several force modules (boids-like behaviors, ellastic collisions, smoothed particle hydrodynamics, physarum-like networks, and more) and a few basic render modules.
Would appreciate any thoughts, especially if you end up writing custom force/render modules.