Ray Tracer

A Fall 2001 CS184 Final Project by

Aman Bhargava (cs184-at)
Jeff Pang (cs184-dm)
Jeremy Chiu (cs184-cm)
Eric Chou (cs184-am)

News: [Dec 7] We were awarded the first prize for technical achievement!
[Dec 5] Final Deliverable is available along with documentation.

What is a ray tracer?

This question has been well answered here.

Our ray tracer reads as input a scene (with objects, lights, textures and the camera) described using our Scene Description Language and produces (renders) an image by tracing the possible paths of rays of light at each point in the field of view of the camera.

Here's a sample scene in its source form, along with the image rendered by the ray tracer.

A list of features implemented in our ray tracer

  • Supported primitives:
    1. Spheres
    2. Triangles and polyhedra
    3. Cones and cylinders
    4. General quadrics
  • Light sources and effects:
    1. Point lights
    2. Spot lights
    3. Ambient light
    4. Area lights
    5. Falloff
  • Reflection and refraction:
    1. Specular reflection (single ray)
    2. Diffused reflection
    3. Refraction (one-way; no caustics)
  • Advanced features:
    1. Texture mapping
    2. Bump mapping
    3. CSG - Constructive Solid Geometry (union, difference and intersection of primitives or other CSG objects)
    4. Antialiasing (using jitter)
    5. Distributed ray tracing (fuzzy reflections and refractions; soft shadows)

Screenshot of the day - 12/05-12/07/2001

We won the first prize for technical achievement! Well, we weren't really awarded a gold cup, but we got something better -- a bunch of games from EA where 2 of the 3 judges came from. The 3rd judge was Prof. Barsky

Other categories were creativity (Dancing Barsky), visual appeal (The 'roach story), and overall (Vega Strike - these guys actually took their project much further and made a sourceforge project out of it).
(All from what Aman remembers. More details probably on class homepage)

This was the signature image shown in our final presentation. The wall behind has a bear painted on it with reflective golden paint. The axe, is actually standing with the tip of its blade slightly embedded in the glass table-top.

[More screenshots]

A planned timeline for the project

Subdivision of work

This project does not have a natural separation into disjoint parts and hence we do not have a fixed subdivision of our tasks.
Here is a general picture, though:
  • Aman:
    Initial code framework, parsing and CSG
  • Jeff:
    Design, texture mapping and bump mapping
  • Jeremy:
    Reflection, refraction and shading
  • Eric:
    Primitives, lighting and antialiasing


Last modified: Sun Oct 13 02:22:41 PDT 2002