Project 3 - Shadows

This project is relatively easy to complete once it was clear what role each class from the new source code is suppose to be. Most of the time was spent reading the new code provided, and understanding how the new classes are stuctured. The implementation of the shadow ray was fairly straight-forward.
The challenge of this project is mostly floating point precision and check for the T value to the from the origin of the shadow to the light. As we can see below, the first render showed what happened when my code didn't check for the t_max value in the shadow function.

Next, when I do check for the t_max value and do not check for floating point error, this occurs:

However, once the error check bias is in place, the program produces the desired output as shown in the title image. Here's the other scene file rendered.

All renders are produced within less than a second on i7 3720QM @ 2.6 GHz, 16GB DDR3
macOS 10.12.6
