An experiment designed to teach myself how to use Compute Shaders and Geometry Shaders in the context of a GPU-powered particle system.
I put this demo together as part of a series of experiments to learn the techniques which power high performance next-generation graphics techniques.
In this case, I wanted to learn how to take advantage of compute shaders and geometry shaders for particle systems. A compute shader calculates perlin noise per-particle, treated as velocity and added to the particle's current velocity, as well as respawning particles which have expired. The same particle buffer is also bound to a custom shader, and DrawMeshProcedural is used to send a number of vertices equal to the number of particles in the buffer. The vertex shader transforms each vertex based on the corresponding particle's position, then the Geometry shader generates a screen-aligned quad for each vertex.