This is a particle rendering system built on top of an open source C++ DirectX11 project . The system supports multiple emitters operating simultaneously, each with its own parameters and behavior, enabling a single architecture to generate a wide variety of visual effects.
My work includes implementing sprite-based and mesh-based particle systems, support for custom materials, beam rendering, and mesh-shaped particle emitters, enabling flexible and extensible particle representations within the renderer.
Try it out here:
GitHub Download
Here is the demo video. ↓
1 months, 2025.4 - 2025.5
1
Graphics Programmer
DirectX11, C++, HLSL, Visual Studio
This project implements a CPU/GPU hybrid particle system built with C++ and DirectX 11, where most simulation logic is executed in the vertex shader to improve scalability and performance.
Each particle system is driven by an Emitter class, responsible for controlling emission rate, lifetime, and per-emitter parameters. The CPU tracks particle lifetimes and manages living and dead particles, while particle data is uploaded to a GPU structured buffer for simulation and rendering.
Particle simulation is handled primarily in the vertex shader. Using the particle's emit time and the global time, I calculate particle age and normalized lifetime to drive motion and visual changes. This approach allows per-particle behavior to scale efficiently with large particle counts.
Particles are rendered as camera-facing quads using shader-based billboarding. The vertex shader computes quad corners per particle using SV_VertexID, eliminating the need for a traditional vertex buffer.