Particle Systems

Started by
5 comments, last by gunning 18 years, 8 months ago
I've been asked to compile a list of limitations and disadvantages for particle systems, but I am struggling. There must be more than the few I have listed. So what limitations and disadvantages are there with respect to using particle systems for things like fire, explosions, clouds, water fountains, blood and other "fuzzy" objects?
Advertisement
Compared to what?

Particle systems may add more CPU load, because particles need evolving; a scrolling texture won't.

Particle systems may use more RAM, which is important on some platforms.

Particle systems are harder to control if you want a very specific effect, compared to a painted texture or model.

Particle systems add more geometry transfer load from main RAM to graphics card because you change the geometry each frame.
enum Bool { True, False, FileNotFound };
Speaking of which, I just came across an excellent new article from GDC called Interactive 3D Lighting in Sprites Rendering. The idea behind the article is to perform volumetric lighting calculations on particles just as you would on the rest of the scene. I experimented with it today and boy was I surprised at the results (see below). It now appears that we can achieve the same quality of cinematic effects (explosions, smoke, fire) that pre-rendered graphics have had for years.

But these lighting calculations seem to apply best to fire and smoke-like effects. Water is still a growing field and I am still looking for the perfect solution. As for fuzzy objects, I thought the current implementation used extruded fins to accomplish the technique, not particle systems. I could be wrong about that though.

The article assumes the use of shaders, which could be a disadvantage...

Here were the results of my little experiment with jet engine fire. This still frame unfortunately does not truly represent the effect. You can notice it much better if you take the light in the scene and move it around the particles. Also, I will note that this effect only used 10 particles. And it might look even better if I knew how to make a good fire texture in Photoshop.



hplus0603-

With DirectX 9 shaders, the geometric transfer between card and system memory can be very small. You can store a set of particle positions in a vector of floats and upload that into the shader constants. Then each particle can index that vector differently. I don't know exactly how the performance compares, but I would assume that with lower bandwidth usage the performance would go up significantly. You could actually, in theory, update very particle in a pixel shader and output it to a texture. I would be very interested to know if anyone has attempted this.
....[size="1"]Brent Gunning
Disadvantage: Anytime you use a particle system to simulate something that doesn't actually involve particles, it looks fake -- fire, explosions, and clouds, for example.
John BoltonLocomotive Games (THQ)Current Project: Destroy All Humans (Wii). IN STORES NOW!
well, from my experiments (i've programed a scriptable particle system win C++, scripting in LUA), there are a lot of things you can do with particles. even physics simulations, many of them, are made using particle springed systems. as a major drawback, the large number of polygons is still a performance hit for older cards. I remember back in time when i had an riva tnt 2 card, the "latest" games from that period where running fine, until a fire or water made up from particles got in my view. To get a realistic effect, you have to use a lot of particles, and that might be a performance hit. But with shader technology, that is not the case.
another drawback may be the fact that is very hard to simulate natural effects, due to randomness and things like that. you cannot script your particles, no matter how hard you try, to behave like particles in nature do.
Actually, I disagree that you can't script particles... :)


if you break em down into atoms and molecules (sp?) there's more or less a "simle" algo to keep em drawn to each other... negative to positive, larger value - stronger bond....

But then again, I'm not a rocket scientist so I may be totally off here.. :D

peace!
"Game Maker For Life, probably never professional thou." =)
Quote:Original post by JohnBolton
Disadvantage: Anytime you use a particle system to simulate something that doesn't actually involve particles, it looks fake -- fire, explosions, and clouds, for example.


Not true.

The reason many particle systems look so fake is because they fail to represent the depth, substance and animation that makes up the aforementioned effects. But the CG industry has been using particles to represent such effects for a while now. As stated in the paper I posted above, you have to treat each particle not as a flat sprite but as a representation of a volume in space. With that in mind, lighting can become much more realistic. Now combine that with animated textures and moving particles and you can achieve surprisingly realistic results.

The Ruby 2 demo from ATI used particle explosions and I must say that it looks completely realistic in real-time. So it is definitely possible to create complex natural effects using particle systems in real-time.

Here are two examples of particle systems used to create realistic fire. The first is in real-time. The second is not, but could be.


....[size="1"]Brent Gunning

This topic is closed to new replies.

Advertisement