Tag Archives: Smoke

Normal Mapped Billboards

This technique doesn’t actually invent something new. It’s just a combination of normal mapping and billboards to realistically lit particle systems. It has been used successfully in many games to fake volumetric smoke.

The movie below shows an example of a lot of particles, rendered as billboards that are normal mapped to look like spheres.

Lit smoke and Post-process system design (also in the book ShaderX 5)
http://www.gamedev.net/community/forums/topic.asp?topic_id=432218&whichpage=1?

A thesis that tried to implement this method (some interesting info, but results aren’t good enough)
http://epubl.ltu.se/1404-5494/2008/011/LTU-HIP-EX-08011-SE.pdf

Some discussion about normal mapped billboards
http://www.drone.org/tutorials/lighting_flat_objects.html

Fluid Simulation and Rendering

For effects like smoke or water, a fluid simulation and rendering approach is needed. There are currently two popular methods for this:

  1. Simulate the fluid on the CPU and send the result as particles to the GPU for rendering as billboards. This is often called a particle system. The technique has been around since the dawn of computer graphics.

  2. Simulate the fluid on the GPU and render the result into textures. This will then be rendered by doing volume ray casting (or ray marching) on the GPU. This technique is new and rather unexplored, and there are few real-life implementations. The result can be very realistic but slow.

Technique one burdens both CPU, bandwidth and GPU. Although in modern solutions, it’s the bandwidth that’s the bottleneck. The GPU based technique only burdens the GPU ( but a lot ).

The movie shows the GPU method of fluid simulation and rendering. More info about this particular implementation in the two last links.

Building an Advanced Particle System
http://www.mysticgd.com/misc/AdvancedParticleSystems.pdf
Building a Million Particle System
http://www.2ld.de/gdc2004/MegaParticlesPaper.pdf
Real-Time Simulation and Rendering of 3D Fluids
http://http.developer.nvidia.com/GPUGems3/gpugems3_ch30.html
The previous page’s authors homepage:
http://www.cs.caltech.edu/~keenan/project_fluid.html

Real-Time Volumetric Smoke

This approach to render volumetric smoke uses the new feature of DirectX10 that enables rendering to 3D textures. It uses voxelization of the geometry to enable the smoke to flow around and react to the geometry in a realistic way.

 Volumetric Smoke Rendering

All details can be found in this paper by Nvidia.
http://developer.download.nvidia.com/presentations/2007/gdc/RealTimeFluids.pdf