For a homework assignment in a computer graphics class taught by Dr. Dirk Reiners, I implemented the core functionality of a ray tracer in C++. This included ray intersection tests with spheres, cones, cylinders, and triangles. I also added per-pixel antialiasing and area lights with soft shadows.
I later used much of this code to make a simple ray tracing benchmark program for QuickMP.