Volumetric effects

Does anyone know of any sources of information (or are sources themselves) about volumetric effects? You know, like volumetric explosions, clouds, fog, or the really cool nebula effect seen in Freespace2? Any info would help immensely! Thanks!

At least in the version I saw of Frespace 2 their “nebular” was lookin’ really crap.

Hmmm, perhaps we’ve seen two different version because I thought it looked really good and it really looked like you were flying through a 3D cloud of multi-colored gas. And as you moved around, it really looked like it had volume. Not just some stupid textured quad. And I hope nobody trys to tell me they used 3D textures because that game ran acceptibly on my K62-400 w/Voodoo3 which I know doesn’t do 3D textures in hardware. Plus, 3D textures that size would take up a TON of memory.

I haven’t seen FreeSpace 2, but I would suggest experimenting with particles a bit.

  • Tom

Freespace2 used billboarded quads. If you fly along the hull of a big cruiser, you can see the lines where the quads intersect the ship.

The basic idea is to use a whole bunch of quads or particles to simulate volume, using a whole lot of alpha blending.

One idea I’ve been thinking about for a while is applying a depth based alpha texture to the scene using the TexGen functionality, and then storing that in the alpha buffer (Only works in 32 bit). Then apply a textured quad over the whole screen, using the alpha buffer to control the blending. This probably will avoid the quad intersecting with ship problem in Freespace2, but will also look less volumetric and “billowy”, and more like plain old fog with a cool texture to it.

j

Hmmm… as my system was too slow to really enjoy the game (FS2), I decided to wait until I upgrade my machine so I can get the full experience of the game. Subsequently, I never got to see the nebula effect against large ships to notice the effect you described. So, I’ll take your word for it. Do you think they billboarded the quads or did they place them all at right angles (like in a cubic arrangement or something)? I’ll have to play around with something like that. Okay, so what about the explosions in Homeworld? They look pretty 3D. Are those fancily placed quads as well?

This billboard method is smart, but is heavily fillrate dependant for huge volumes.
Drawing many transparent surface one over the other can slow down the best 3D hardware.
Even the mighty GeForce seems to slow down on this, only the GeForce 2 and the RadeON behave quite good on this.
You can test your hardware using a little proggy i wrote a while ago to test this :
http://www.io-labs.com/paddy/rtfog.zip

It kinda simultates 3D texturing / fogging using many blended polygons.

Don’t resize the window or move the mouse during the bench, it lasts for about 10 seconds.

ENJOY

Hmmm… then I wonder if the supposition that this is the technique used in Freespace is true? After all, I was using pretty crappy hardware and it was almost playable… in fact, it was playable in parts. And this effect covered the entire viewing area and is probably at least three or four layers deep. I agree, I’ve seen just a few blended quads bring my system to an absolute crawl, but not so in Freespace2. Does anyone else have any info to add?

In Freespace2 they billboarded the quads, and to make the nebula look as if it were shifting around, they drift the billboards sideways while slowly rotating them.

The reason why they managed to get decent performance out of this might have been because they could set the far clip plane much nearer and cull more geometry, due to limited visiblility. Most of the time in nebulas, you can’t see all that many ships.

In many games, the screen is effectively drawn about 4 or 5 times due to overdraw anyways, so the performance hit wouldn’t be that bad.

j

But in simple OpenGL demos, I’ve noticed even a handful of blended quads upclose (filling most or all of the screen) causes my system to slow to the speed of mud. But this didn’t seem to happen in Freespace2. Hmmm… I’ll have to try a similar thing and see what kind of performance I get.