Mark Schmelzenbach
Homework #4
CS684 II

This assignment implements the Gauss-Siedel method of solving the radiosity system of equations. The solution is calculated in two major stages. First, the form factor and visibility of each mesh element is calculated. These numbers, along with the surface characteristics of the element form an entry in the radiosity matrix. The matrix is stored along "links" between the mesh elements. Once all the links have been created, the second stage of the calculation begins. The second stage is simply a series of iterations--the first iteration is effectively a one bounce light path solution to the scene, the second interation is two bounces, etc.

For this scene, each surface was divided uniformly into 64 mesh elements. Nine iterations were performed in the second stage of rendering. Rendering time on a SUN UltraSparc took 826 seconds. (With 64 visibilty samples per mesh element, and 64 point to polygon samples per mesh element--notice that the second stage calculation took about 3 seconds). Reducing the number of visibility and form factor samples to 16 samples per mesh element drops the rendering time to 233.4 seconds--again in which about 3 seconds was spent in the second stage of calculation.

Compare this to the running time of 73.6 seconds from programming assignment one (Monte Carlo solution) with 256 samples per mesh element (again with each surface uniformly divided into 64 mesh elements).

The greatest difference between the Monte Carlo method and the matrix solution is in the number of elements that must be tested. The Monte Carlo method uses the object hierarchy everytime a sample is taken... The matrix solution must check against n-elements (where n is the total number of elements in the scene, less the element's siblings) for EVERY element during the link building stage. This makes the matrix solution much more expensive.


Note: These images are NOT gamma corrected