Contents
A More Accurate Volumetric Particle Rendering Method Using the Pixel Shader
 
 
Printer-Friendly VersionPrinter-Friendly Version
 


Part of:



[More information...]
 

Latest News
spacer View All spacer
 
November 22, 2009
 
Video Game Watchdog National Institute On Media And The Family Shutting Down [11]
 
Modern Warfare 2 Infinity Ward's 'Most Successful PC Version' Yet [12]
 
New Tech, Design Details Of Project Natal To Emerge At Gamefest In February
spacer
Latest Jobs
spacer View All     Post a Job     RSS spacer
 
November 22, 2009
 
Trion Redwood City
Sr. Evnironment Modeler
 
Trion Redwood City
Sr. Environment Artist
 
Sucker Punch Productions
3D Environment Artist
 
Sucker Punch Productions
Network Programmer
 
Sucker Punch Productions
Character Artist
 
Sucker Punch Productions
Texture Artist
 
Monolith Productions
Sr. Software Engineer, Engine - Monolith Productions - #113767
 
Sony Online Entertainment
Brand Manager
spacer
Latest Features
spacer View All spacer
 
November 22, 2009
 
arrow Upping The Craft: Susan O'Connor On Games Writing [6]
 
arrow Small Developers: Minimizing Risks in Large Productions - Part II [7]
 
arrow iPhone Piracy: The Inside Story [48]
 
arrow And Yet It Grows: Analyzing the Size and Growth of the European Game Market [5]
 
arrow NPD: Behind the Numbers, October 2009 [13]
 
arrow Reflecting On Uncharted 2: How They Did It [5]
 
arrow Sponsored Feature: Rasterization on Larrabee -- Adaptive Rasterization Helps Boost Efficiency
 
arrow Postmortem: Wadjet Eye's The Blackwell Convergence [2]
spacer
Latest Blogs
spacer View All     Post     RSS spacer
 
November 22, 2009
 
Time Fcuk
 
Accepting the Inherent Value of Games
 
Planckogenesis, Part II: Song Structure & Gravy Train [1]
spacer
About
spacer News Director:
Leigh Alexander
Features Director:
Christian Nutt
Editor At Large:
Chris Remo
Advertising:
John 'Malik' Watson
Recruitment/Education:
Gina Gross
 
Features
  A More Accurate Volumetric Particle Rendering Method Using the Pixel Shader
by Mike Krazanowski
7 comments
Share RSS
 
 
June 11, 2008 Article Start Previous Page 3 of 4 Next
 

We should also assert that the pixels rendered on the poly implicitly represent volumes from the camera's perspective.

The idea is to take the drawn poly and define a pseudo volume around it. This volume is defined by the extents of the poly, extruded in the direction the camera is facing.

For the following example, the poly is extruded both towards and away from the camera by some distance D to define the volume.

The original poly defines the mirror-image plane P(mi) and the alpha channel in each pixel defines to what extent the sub-particle boundary B(sp) deviates from the P(mi). In practice the volume would be defined as the poly extruded away from the camera only to make full use of hardware clipping.

This is due to the fact that pixels that are rejected due to being occluded will never get calculated for the near region of the volume.

Fig 2.

Now for each pixel rendered in the particle, we have extents along all the view rays through those pixels that define the collision information necessary to remove the visual aliasing caused by a planar particle. There are at least two ways to consider the information provided by the alpha component of the texture:

  1. As an average density of microscopic particles over the range from the front to back of the volume. I will call this method the average density method.
  2. As relative the density that relates to the extent of the microscopic volume along the ray represented by the pixel. I will call this the density extent method.

In the shader we will need the depth of the environment at the given pixel. This could be passed in as texture information from a previous render-to-texture stage. I will call this EnvironmentDepth.

We will need the pixel position of the original poly that will define our mirror plane. This can be propagated from the vertex shader, and I will call it ParticleDepth.

We will also need a function to define the mapping from alpha value to real-world depth do define our deviation extent, I will call it DeviationExtent. The deviation extent will likely be constant across the whole poly and possibly the whole particle effect.

We will use the existing particle texture unmodified with its colour and alpha values as they were originally defined.

We will define a global opacity/transparency function that will be used to relate the maximum particle density and relates the actual colour transmission through the volume which I will call VolumeAlpha. This function is used to define the maximum transparency/opacity the extents of the volume will allow.

 
Article Start Previous Page 3 of 4 Next
 
Comments

Ronald Mexico
profile image
Very interesting. Nice work.

Anonymous
profile image
Not sure what method UBI used, but GRAW 2 took care of this issue. Pretty amazingly realistic smoke in that game. No plane seams on the ground at all. They even made mention of their new particle tech in a pre-release, PR video.

Anonymous
profile image
How is this different from the DX10 soft particle sample?

Josiah Manson
profile image
What happens when particle volumes intersect? Do the particles act independently and double up the density, or do they somehow preserve uniform density. I think that uniform density may be achieved by having the particles write to the depth buffer.

Aaron Casillas
profile image
Great article!

I'm also interesting in learning more about "Baked" particle animations like the ones found in WOW. Is there a package out there that allows the particles system to be baked in?

Karsten Schwenk
profile image
Nice article, but I think variants of this method have been used for some time now.

My implementation uses the extinction factor to calculate the alpha value, which is a bit more physically based, and optionally also does a short ray-marching (for shadowing and non-homogeneous media). I called them 'thick particles'.

Unfortunately, from my experience, the default soft particles are usually preferable. At least in scenarios where the improved physical correctness isn't needed - and that includes almost all applications in games. Simply because they essentially do the same thing but are cheaper to render and easier to tweak for artists.

Space Games
profile image
I remember in older games like Call of Duty the smoke would just be ridiculous, going through walls and just not really conforming to what it should be doing. Recent games seem to be a lot better in that regard, including the newer Activision stuff. Interesting article either way. :)


none
 
Comment:
 


Submit Comment