1. Implement a basic ray tracer that shoots one ray out into the scene per pixel and shades the nearest surface point that is hit. You can test your ray tracer with a simple scene composed of planes, spheres and triangles.
2. Add to your ray tracer shadow computation as well as (recursive) mirror reflection computation.