Project 11 - Monte Carlo Global Illumination

As if we are not sending enough samples, now our ray tracers will shoot multiple light rays at every hit in order to estimate the indirect illumination at any particular pixel of our image. This cuts out the need to hack in indirect illumination with an ambient light (though, the global illumination has been written as its own ambient light that sends multiple rays). Lastly, to optimize the speed of our Monte Carlo global illumination calculations, we can implement an irradiance cache that runs before our ray tracer in order to pre-compute and interpolate our indirect illumination, giving us better and faster smooth global illumination. Lastly, we are now adjusting our final output colors in order to reverse the gamma correction that standard monitors output.


Skylight Teapot

global illumination, 128 samples


Cornell Box

global illumination, 128 samples


Irradiance Caching #1

irradiance caching, color + z + normal


Irradiance Caching #2

irradiance caching, color + z + normal


Irradiance Caching #2 - Poor Choices

irradiance caching, random


Buggy Images


Details

Specs

Skylight Teapot:

render time global illumination indirect samples
03.013 s - -
1 min 49.769 s GI 16
4 min 39.872 s GI 128
36.957 s IC 128

Cornell Box:

render time global illumination indirect samples
07.028 s - -
02 min 03.465 s GI 16
15 min 25.159 s GI 128
44.978 s IC 128