Fast Scene Voxelization and Applications
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.

May 8th, 2007 at 4:32 pm
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”.
February 27th, 2009 at 8:11 pm
[...] rendering paper from Sintorn and Assarsson. This one introduces Occupancy Maps, which is basically fast voxelization used in an intelligent manner for hair rendering. The occupancy map, in conjunction with something [...]
February 4th, 2010 at 6:01 pm
[...] scene per-pixel and filtering the results. This uses everyone’s (especially mine) favorite scene voxelization technique. Didn’t read this one too in-depth, but it seems to be worth a closer [...]