This page contains my homework assignments for
Steve Parker's course on ray tracing, taught in Spring 2005.

Project 1 -- A basic software infrastructure for
a full ray tracing system, which will follow in a future
project. This assignment includes a faked up Sphere class that
can be used for basic testing of the mathematical primitives
(vector, point, ray, etc.) and also graphical primitives (Image, Color,
various renderers, etc.).

Project 2 -- A full basic ray tracer, including
Lambertian shading, and a simple model for light-diffusive materials. The system
now includes spheres and planes, the ability to set the background color (or to
specify two background colors between which to fade smoothly), and two types of
cameras--ordinary pinhole (or perspective) cameras, and orthographic cameras
(useful for looking at elevation drawings, for instance).

Project 3 -- More object primitives: disks, rings,
axis-aligned boxes, triangles, and height fields. The height field allows a sudden
jump in what kinds of images and models can be created. Check out the sweet halogen
lamp model!

Project 4 -- New material models: phong shaded, metallic,
(i.e., reflective), and dielectric (i.e., refractive). The ray tracer is capable of
making some very pretty pictures now.

Project 5 -- Anti-aliasing: various types of filters
and schemes for generating subpixel sample points. No new pictures but the ones
from before look prettier now.

Project 6 -- Acceleration Structures: Bounding Volume Hierarchy (BVH).
Scenes with many, many primitives, rendered in pretty short amounts of time. Scientific
visualization too!

Project 7 -- Texture Mapping. Image mapping, checkerboarding of
different materials, and a marble texture based on Perlin noise.

Project 8 -- Volume Rendering. Cool (scary?) scientific datasets.

Project 9 -- Instancing. All the rotations and translations you want.

Project 10 -- Monte Carlo Ray Tracing. Glossy reflections and translucency.

Project 11 -- Final Creative Image.