The following shows a sample shader code for the particle system. You can find an explanation for this example from the following link. (for different types of particles) http://msdn.microsoft.com/en-us/library/bb205329(VS.85).aspx NOTE: this sample code uses a Geometry shader -- a Geometry shader is not needed for Project 1. // // Explanation of different particle types // #define PT_LAUNCHER 0 //Firework Launcher - launches a PT_SHELL every so many seconds #define PT_SHELL 1 //Unexploded shell - flies from the origin and explodes into many PT_EMBERXs #define PT_EMBER1 2 //basic particle - after it's emitted from the shell, it dies #define PT_EMBER2 3 //after it's emitted, it explodes again into many PT_EMBER1s #define PT_EMBER3 4 //just a differently colored ember1 // // Generic particle motion handler // void GSGenericHandler( VSParticleIn input, inout PointStream ParticleOutputStream ) { input.pos += input.vel*g_fElapsedTime; input.vel += g_vFrameGravity; input.Timer -= g_fElapsedTime; ParticleOutputStream.Append( input ); } // // Shell type particle handler // void GSShellHandler( VSParticleIn input, inout PointStream ParticleOutputStream ) { if(input.Timer <= 0) { VSParticleIn output; float3 vRandom = float3(0,0,0); //time to emit a series of new Ember1s for(int i=0; i