Mark Schmelzenbach
CS684: Radiosity
Final Project: Instant Radiosity


For the final project, I chose to implement the radiosity solution method outlined in SIGGRAPH 1997 paper entitled "Instant Radiosity."  This paper was written by Alexander Keller of the Universistat Kaiserslautern. His web page can be reached here.

The idea of this paper is similar to that of the Monte Carlo path tracer written for homework 1.  However, instead of using a ray tracer as the sampling method, the OpenGL image buffer is used.  Several images are rendered using OpenGL, and are composited in the accumulation buffer. This method converges fairly rapidly to the radiosity solution--without having to evaluate any form factors or generate meshes.  In addition, since the program uses OpenGL, it can leverage existing hardware accelerators dramatically decreasing computation time.

Significant advantages:

Disadvantages: For a full description of the algorithm, see the original paper.... However, here is a (very) brief overview.  At runtime, a number of photons are selected from the lightsources to be cast into the scene.  In addition, the mean reflectivity r of the scene is calculated.  Initially there are N photons. For each photon, the scene is rendered, placing a point light source at the origin of the photon.  Then, rN of these photons are cast into the scene in a method similar to that in homework 1. When a photon hits a surface, it is attenuated by the diffuse component of that surface. Then the scene is rendered again, with the point lightsource appropriately moved. r2N of the original points continue on to a second bounce. The process is repeated until all of the paths are complete. In essence, this algorithm is generating an increasingly accurate approximation of the average radiance for every point in the scene with the rendering pass.

For a graphical explanation, click here.



The snapshots below were generated under Linux, using Mesa, a very nice (and free) OpenGL emulator. I used a scene very similar to that in the paper, but reduced the polygon count by removing a few chairs. I also turned one of the walls red, so that the color bleeding effect is demonstrated. The models were taken from some earlier work by our very own Peter Shirley.
The shadows were generated using BSP trees from a library by A T Cambell, III, written at University of Texas. These routines are software based, and so do not dramatically improve when run on OpenGL hardware. Using a package like Mark Kilgard's real-time shadows would probably yield a nice speed improvement. (However, Kilgard's method relies on version 1.2 of GLU, which is not emulated in Mesa. In interests of convient development, I opted for the slower shadow volume approach). All the pictures below were rendered with a r value of 0.57

Using software emulation of OpenGL hardware had the added benefit that the acculumation buffer is deep and accurate. On some boards (notably some of the cheap PC graphics accelerators), this is not the case. A bit-depth of 8-12 bits is shallow enough to cause artifacting when compositing images. This means that there can be an arbitrary upper bound on the number of images that can be composited depending on the implementation of the accumulation buffer. This could pose a signifcant problem in scenes lit primarily by indirect lighting, since rendering these scenes requires a large number of inital photons.

This method presents a promising radiosity previewer. If nice looking images are all that is desired, than this method provides good results -- particularly if there is a lot of direct lighting in the scene. One the other hand, if the goal is to produce a predictive model, such as for accurate stage lighting or other architechural needs, then this would not be a good choice for the end result. Even then, instant radiosity could be used for quick initial design and layout. Once the basic model has been completed, more accurate solution methods could be used for fine tuning.

And now, with out any further ado... some pictures!



This picture used 32 photons, compositing about 70 separate scenes

This picture traced 64 photons, compositing about 150 images


This picture is traced 128 photons, compositing about 300 images


And no radiosity page would be complete without the Cornell box... this was traced using 64 photons.