Math 217A - Spring 2002 - Assignment #5 - Ray Tracing
due Wednesday, May 15

Goals: Learn to use the ray tracing software.  Implement some feature of distributed ray tracing.


  1. Download RayTrace software package from the text book web page.  Compile and run RayTrace to make sure it is working for you.  We will also discuss in class an overview of how the software works, but you will also need to look at Appendix B and perhaps the source code.  You will be modify only the main programs RayTrace.cpp and RayTraceData.cpp (and RayTrace2.cpp and RayTraceData2.cpp).   There should be no need for you to modify or examine source code in either the Graphics or the VrMath project directories.
       (If someone will give me a gcc make file for building the libraries, I will post it for everyone else using Linux).  The point is that the directories Graphics and VrMath are separate projects which should be compiled into their own libraries.  For Visual C++, this is already taken care of by the workspace and project files.)
  2. Build a new scene by modifying the code in RayTraceData.cpp or RayTraceData2.cpp.    The more artistic your scene the better, but if you are not artistically inspired, your scene does not need to be terribly different from what is already there.   This does not need to be a large, complicated scene, but should be chosen so that it illustrates nicely the distributed ray tracing you implement in the next step.
  3. Implement (rewriting part of RayTrace.cpp or RayTrace2.cpp) at least one of the following features from distributed ray tracing:

    1. Antialising with jittering or other stochastic supersampling. (This one is the easiest one to implement.)  Might be best illustrated if you include a texture mapped item in your scene.
    2. Motion blur
    3. Depth of field
    4. Soft shadows

    Optionally implement more than one of these features.

  4. Create and turn in the three GIF files as described below.  FirstGif.gif shows your scene without distributed ray tracing.  SecondGif.gif shows your scene with distributed ray tracing.  Thumb.gif is a small version (dimensions 200 by 200 pixels) for previewing purposes.

Homework turn-in procedure:   Your turned in results should consist of two parts.  First, a report on your work.  (1) Talk in person to me or Frank Chang, demonstrate your code and discuss the assignment.  When you talk to us, we want to review the relevant parts of your source code changes, and will discuss the design and modeling of your scene.: 

Second, turn in your code and  GIF files.      You should turn in (a) a thumbnail sketch, which is a GIF file which has width and height exactly equal to 200 pixels, and (b) two full size GIF files.   Name the three files Thumb.gif,   FirstGif.gif,    and  SecondGif.gif.   (Please use exactly these names, including capitalization.     In order to capture and save GIF files, see the handout on creating GIF files for turn in.
        For the full size GIF file, please turn in first a GIF showing the scene without the distributed ray tracing feature, and then a second GIF showing the improvement from your distributed ray tracing.
    GIF files will be made publicly available, so everyone can have their results demoed to the rest of the class.  You should turn in source files and GIF, by using anonymous ftp to, directory pub/sbuss/turnin217/ma217sXX/RayTrace.     Here, replace "ma217sXX" by your own userid.  Make sure the GIF files are uploaded in binary mode.