In this project we will use Monte Carlo ray tracing for computing global illumination.
Requirements
Monte Carlo sampling for indirect illumination with a single bounce.
Gamma correction.
Source Code
The following source code files are provided to help you with this and upcoming projects. You are not required to use them, but it is highly recommened that you use some of them. Some of these files include additional code as compared to the same files in the previous project, so make sure to download them all again.
scene.h: Includes changes to the Light class and irradiance computation map for the RenderImage.
lights.h: Includes the descriptions of the light classes used by the xmlload.cpp file. Notice that the implementation of PointLight::Illuminate() method is removed.
viewport.cpp: OpenGL based preview and user interface launched by calling the ShowViewport() function based on the GLUT library (the Windows version is here). This allows rotating the camera (for viewing only) and displaying the irradiance computation image.
Test Scenes
The following scene files are provided to help you test your implementation. You can also prepare other scenes to show your work.
Cornell Box: A Cornell box scene with a Utah teapot and a sphere.
Skylight Teapot: A teapot on a plane illuminated by a skylight from enviroment.
Optional Feature Suggestions
Multiple bounces for indirect illumination.
Quasy Monte Carlo sampling for indirect illumination.