Raytracer
Unless otherwise noted, the scenes were rendered in a few seconds or less.


This is not how an actual raytracer should behave. However, by changing the threshold at which self-shadowing is allowed, we were able to create a nice effect.
Input file: sphere-reflect-self-shadowing.test

The raytracer allows arbitrary scaling, rotating, and translating.
Input file: sphere-scale-translate-rotate.test


Demonstration of anti-aliasing. Note the subtle differences on the edges of the square. This becomes more apparent once the image is zoomed in. Anti-aliased images took about 10 seconds.
Input file: square-angle-shading.test


Demonstration of Phong interpolation. Takes about 5 minutes to run. Disclaimer: The .obj file for this scene was found on the Internet.
Input file: teapot-phong.test
Input file: teapot.obj

Demonstration of Flat shading. Takes about 5 minutes to run. Disclaimer: The .obj file for this scene was found on the Internet.
Input file: teapot-flat.test
Input file: teapot.obj

A basic cube shown at an angle. Note that, for each triangle drawn, the raytracer allows material properties to be specified.
Input file: cube.test