Shadows are nice and simple to compute using a ray tracer. By simply taking every point and checking to see if there are occluding objects in a scene, we can get free shadows in our ray tracer. This builds off the traceRay() functionality designed within our ray tracer, which checks to see if a ray hits any object within our scene.
Test render time: 0.531 s
Box render time: 1.052 s