My implementation of Fourier Opacity Mapping

sebh 101 Feb 19, 2010 at 15:00


The up-coming I3D conference on interactive 3D Graphics and Games will feature several interesting papers. I have found one of these paper called “Fourier Opacity Mapping”, proposed by Jon Jansen and Louis Bavoil, very interesting. I could not resist implementing this nice paper.

Fourier Opacity Mapping (FOM) is about approximating light attenuation through a volume made of particles for the purpose of volumetric shadow. Let’s consider a spot light: the authors propose to reconstruct the light transmittance function along each ray using a Fourier series. The coefficients of the Fourier series are stored in the fourier opacity map in light view space. This map is generated using usual particles rendering with transformation in the Fourier basis of absorption coefficients in the fragment program. Then, when rendering the particles from the camera view, the correcte light attenuation can be recovered for each particle. I will not go into the details here. You can read this nice paper here or my report on my personal webpage. You can also find open a demo with source code. (You will need a recent video card to run the demo since it uses GLSL 1.5 and render data into 6 buffers in one pass)

This method is really efficient to simulate colored light attenuation when passing through a volume of particles. Furthermore, if you want an exemple of good use by skilled artists, just have a look at the game Batman Arkham Asylum which features this method.

2 Replies

Please log in or register to post a reply.

roel 101 Feb 19, 2010 at 17:24

I saw it on your blog, great job!

sebh 101 Feb 21, 2010 at 20:29

Thank you very much! :)