Prateek Marathe

Particle Systems

Particle Systems using GPGPU

The video below is a demo created as part of the final project for CSCI 522 (Game Engine Development), taught by Artem Kavalovs who is a game programmer at Naughty Dog.  

100,000+ particles, at 30 FPS. The motion, collision with static objects and resolving of collisions is done on GPGPU using Compute Shaders, DirectX11.

This was a Particle system demo made by myself and my project partner Handa Zhang.  The demo is created in Prime Engine (A game engine created by Artem),  and within the demo the user is able to interact with objects in the scene by using the  flame thrower (A projectile particle system), and triggering other particle system on collision.

My contribution to this semester long project was:

  1.  Adding the Particle System object (i.e the emitter and the particles) to the graphics pipeline within the game engine.
  2.  Initializing the DirectX 11 shader buffers, optimizing the constant buffers and writing the actual compute buffer to realize the particle motion and camera rotation for the billboard particles.
  3. Character and camera motion upon user input.
  4. Finally I also worked on resolving particle-object collisions, which were also taken care of on GPU using compute shaders.  

After optimizing the code we were able to compute the motion as well as collision of 100,000+ particles at 30fps on an NVIDIA GeForce 840M graphics card.

Working on this project help me develop a deep understanding of graphics pipelines in game engines, functioning of particle systems and particle behaviours as well as DirectX 11 Compute shaders.

The project was selected for the USC Gamepipe Lab Demo Day Fall 2016. 

Prateek Marathe