   Pointsprites or Billboards for Particle System
  I''ve been reading up on particle systems, and I''ve read two conflicting articles.One says to use point sprites because its the ''next generation'' of billboards.  And the other says to use billboards, because pointsprites can''t be scaled and such.Now point sprites look ''easier'' to use, because you simply define a point in space and DX does the rest (as far as I can gather).  But you''re going to have a billboarding system anyways (depending on your game).So what should be used for a particle system?  Pointsprites or Billboards? 
  Both!  Make a wrapper that supports both.  You could make the wrapper choose which one to use, based on which one the system supports.  What I did was have the programmer type in the max size of the point sprite he would be using and if the width and height will be the same.  If the width and height are the same and the size of the particle will be within system limits (by checking the D3D9CAPS structure), then go ahead and use point sprites because they are MUCH faster.  On the other hand, if the user wants to change the width of any of the particles with a value different than the height, you need to billboard it or use a vertex shader (I found them to be faster).  Oh and just for fun, throw in an option for them to manually specify which one they want (point sprite or billboard (or even shader)) and then return failed if it's not an option available for that hardware.  Then they can call the function in the order they want (first they try point sprites with their options, if that fails they try a shader, and if that fails, they use billboarding...or they may want to reverse that order for their own purposes).  The same basic steps actually go into your wrapper as well.  You decide which of those three are available and use the best one for the parameters.  Hope that helps.  It's a lot of code, but you will have a more robust and efficient engine.  It will allow for all hardware support (within the 3D arena anyway).EDIT: The first paragraph is in regards to an instantiation of the class for the emitter.Good luck,Chris   [edited by - Supernat02 on February 16, 2004 1:53:04 AM];  Pointsprites render faster but are limited. You can only scale them to a certain size (like 64 pixels) and cannot rotate them. However, on newever cards the size restriction gets much better. What I would do is have your system transparently use pointsprites whenever possible (small particles + no rotation) and use billboards for all the other cases.