Computer Graphics, Fall 2002
Z Sweedyk


Project 2: Ray Tracing

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, we provide you with a host of data structures for managing the ray traced objects, linear algebraic 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.

You can find UML for the skeleton code here; this may be useful to help acquaint you 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 25 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 17 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 25 points. However, after 25 points, each point is divided by 2, and after 27 points, each point is divided by 4.

Deadlines

This project is due on Monday, October 28, 2003 at 11:59 PM. In addition, you must demonstrate 8 points of work including Basic Raytracing in class on Tuesday, October 8 and an additional 8 points on Tuesday, October 15. You have two late days you can use for this assignment. If you did not use a late day for the image processing project, that late day may also be applied to this project. If you acquired an additional late day on project 1 that may be applied to this project as well. Failure to meet any deadline costs 2 point per day.

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