Fast Scene Voxelization and Applications

May 1, 2007 at 4:31 am (Papers)

Right now (well not literally right now, it’s a bit late), I3D 2007 is going on in Seattle. I already talked a bit about a paper from this year’s conference, but the event reminded me of my favorite paper from last year’s conference:

Fast Scene Voxelization and Applications by Elmar Eisemann and Xavier Decoret

This paper deals with converting an arbitrary polygonal scene into a voxelized representation. It’s a simple idea that has awesome potential. Coming from a volume rendering background, I’m used to going the other way and converting voxels to polygons ala marching cubes/tetrahedra. I didn’t realize at first glance the potential of discretizing a complex scene into a uniform grid.

The idea is simple and is implemented in one fragment shader. The goal is to produce one RGBA8 texture (32-bits total) of resolution equal to the viewport, where each pixel represents one column of voxels reaching into the scene and each bit indicates if a polygon crosses that voxel. To create this texture, the scene is rendered. In the fragment shader, each depth value is used to index a bit mask texture. The result of the lookup is a 32-bit value with one bit turned on, equivalent to that depth value. This result is OR blended into the final texture. After all fragments are rendered, you have your grid.

The applications covered in the paper are transmittance shadow maps, shadow volume culling, and refraction/attenuation of light. However, I think there are a lot of other uses and you could probably think of a few too.

Here is a powerpoint slide deck which might elaborate on a few details from the paper and adds some thoughts about how the algorithm may be aided by DX10.

Voxelized man

Advertisements

1 Comment

  1. Stoo said,

    I really like this idea. Any idea how to OR together results in D3D? – It doesn’t expose OR as a blendmode. A previous voxelization paper to this one* uses addative blending, but I’ve not read it in detail (yet) to see how that achieves the result.

    stoo

    * – “Real-time Voxelization for Complex Models”.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: