A while ago I wrote a small GPU-based particle system.
This uses a Geometry Shader with two buffers, which are swapped on each update.
You can watch a little demo of it here:
I was thinking about adding the following at some point in the future:
– Drawing particle paths directly on-screen at runtime.
– Fill a mesh / shape with particles.