The goal of this assignment is to implement a radiosity solver to compute global illumination in simple closed room scenes with ideal diffuse surfaces.
The images below show the classic Cornell box scene from rendered at 2 intermediate points of the radiosity solution, the final solution and a smooth interpolation of the solution (at the same resolution).
radiosity -input cornell_box.obj -size 500 radiosity -input l.obj -size 500
Once the viewer is launched you can rotate the scene with the mouse. The test scenes are simple polygonal models with normals facing inward, so GL has been configured to render only "front-facing" polygons. The "back-facing" polygons are invisible. Press "v" to toggle between the different visualization modes. (The default is RADIANCE which will be all black except the light sources until you finish your implementation.) Press "w" to view the wireframe. The quad mesh model is stored in a half edge data structure similar to assignment 2. Press "s" to subdivide the scene. Each quad will be split into 4 quads. Press "b" to blend or interpolate the radiosity values. Press "t" to tone map the image so your images are similar to the results in the original radiosity paper. Press "i" to make one iteration of the radiosity solver, press "a" to animate the solver (many iterations) and press "r" to reset the radiosity solution. Press "q" to quit.
The images below show visualizations of the material properties (using arbitrary GL lighting), the absorbed energy, and the form factors for light transfer between the outlined red square and the other patches in the model.
In the Radiosity class, write the Iterate() and computeFormFactors(int i) methods.
Please read the assignment information again before submitting.