Global Illumination

Charles Schnelz

crschnelz@gmail.com

 

Overview:

   For this project, my goal was to add global illumination to the C++ ray tracer.
In past iterations of the ray tracer, rays were cast into the scene, and rebounded of each object until either encountering the environment of 'bottoming out.'
The core adpatation for the global illumition renderer was extended the single ray cast into a multi-ray sample.
Thus, when rays hit a piece of geometry, many rays are scattered out, collecting attenuation recursively. These rays are then combined to produce the final color.


On top of sample rays, the renderer focuses on modelling lambertian surfaces more accurately.
For this, diffuse values of materials are used as part of the attenuation calculation.
Finally, a radiance map is used as the final landing point for rays.
Scatter rays that escape to the environment return color based on the surrounding world, allowing for scenes to be modelled in various overall light levels.

Examples:

Spheres

Spheres1 Spheres2

 

Obj

icoNoNormals

Light Levels

Morning Evening

 

Enclosed

Enclosed