Computer Graphics, Fall 2002
Z Sweedyk


Project 2: Ray Tracing

Due: DUE DATE AND TIME HERE

Overview

In this assignment you will implement a basic raytracer. To allow you to focus on the nuts and bolts of the actual ray tracing, you are provided with a host of data structures for managing the ray traced objects, linear algebra functions (vector and matrix objects and operations), a function for loading scene graph files into a prescribed node tree structure, a BMP image file importer/exporter (for images and textures, etc), and a couple of supporting data structures for lights, materials, etc. This code is available in /cs/cs155/proj2/src/ on the graphics machines.

The input format for the raytracer is a RAY file, which has a full specification available here.

There exists UML for the skeleton code you're supplied with here, which may be useful to get acquainted with the codebase. Additionally, there is an explanation of some of the aspects of the code that do not directly affect your implementation of the required material (such as parsing or the OpenGL rendering) here - this information is not necessary for any of the required functionality, but may become useful as you extend your raytracer to do bigger and better things.

A full implementation of this raytracer is available for testing your RAY files (binary only). It is available at /cs/cs155/proj2/rt and has a manual here, which explains how to use it and how its features were implemented.

A gallery of images created by previous semesters of this class is maintained here for motivation.

What You Have to Do

The assignment is worth 20 points. The following is a list of features that you may implement. The number in parentheses corresponds to how many points it is worth. Options in bold are mandatory.

By implementing all the required features, you get 14 points. There are many ways to get more points:

For images or movies that you submit, you also have to submit the sequence of commands used to created them, otherwise they will not be considered valid.

It is possible to get more than 20 points. However, after 20 points, each point is divided by 2, and after 22 points, each point is divided by 4.

Getting Started

You should use the code available at /cs/cs155/proj2/src, on the graphics machines, as a starting point for your assignment. We provide you with the following files. Files in bold are recommended files to modify to implement the required functionality. Of course, there are multiple ways to implement any of these features, so your mileage may vary.

The Makefile supports a few operations...make will build all necessary objects and the executable. make clean will remove the executable and all object files. make depend will create header dependency information. make fresh is the same as make clean ; make depend ; make.

What to Submit

You should submit:

The writeup should be a HTML document called assignment2.html which may include other documents or pictures. It should be brief, describing what you have implemented, what works and what doesn't, how you created the art contest images and/or movies, and any relevant instructions on how to run your interface. Make sure that any linked images/movies are world readable.

Make sure the source code compiles on the graphics machines. If it doesn't, you will be in a world of hurt.

Remember our standing late policy and collaboration policy.

Notes

Links


Last Update: 7/17/02