Math 155B - Geometric Computer Graphics
Ray Tracing Programming Project

Programming Assignment #3 - Spring 2001

Programming assignment #3B.  This is the third programming assignment for Math 155B.   You are asked to add some features to the ray tracing code as written so far.

Due date: Friday, May 18.

Choose one of the topics listed below, or subject to approval, you may suggest another project.  It is OK if more than one person chooses the same project.  You must discuss the plan for and design of your project with Professor Buss at least one week before the due date.

Suggested projects:

Items 1-7 involve distributed ray tracing and backwards ray tracing.   These projects do not require writing a complete ray tracer.  Instead, I will give you a functioning ray tracer which does simple, non-distributed ray tracing, and you will only need to modify the high level routines.

1. Implement the use of multiple view rays per pixels, so improve aliasing.  You should be able to point to improvements (like fewer "jaggies" on lines).   You may also draw a scene with aliasing problems (say with a large reactangle with a small checkboard pattern, viewed obliquely), and notice how it is improved.
2. Use multiple view rays per pixel to implement depth of field.  This will allow objects at the "focus distance" to be in focus and objects which are closer or further away to be out of focus.
3. Use distributed ray tracing to show motion blur.
4. Implement distributed ray tracing for shadow feelers.  Your rendered scene should exhibit soft shadows and penumbras.
5. Implement distributed ray tracing for reflections.  You should be able to demonstrate blurry fuzzy reflections.  Possibly extend this to include distributed ray tracing for transmission (refraction).
6. Implement the high-level ray tracing code to intelligently track the attenuation of light through multiple bounces, and prunes the ray tracing tree accordingly.  These algorithms are known as "Russian roulette" algorithms, and you will have to learn them on your own since we will not cover them in class.
7. Implement some backwards ray tracing with an illumination map (recommended) or photon map.

For each project you should do the following..

1. Design a simple scene to test your project.  The scene should be chosen to illustrate the ray tracing project you have chosen.   For instance, for antialiasing you need a scene which shows aliasing in ordinary ray tracing, for depth of field there should be  mixture of near and far objects, for motion blur you will need to have a moving object in plain view, etc.
2. Change the high-level RayTrace routine to implement your project.
3. Render the ray traced scene and save it to a JPEG file.  Save multiple JPEGS if this helps illustrate the features of your project (e.g., two different focal planes for project #2, or simple ray tracing versus distributed raytracing for project #1).
4. The JPEG files will be collected together into a single class web page.  You will be responsible for creating a small GIF with Photoshop for use as a thumbnail image --- there will be some precise directions on how to do this and what to name your files and how to upload.  Watch this space for further details in the next week.

Here are the instructions on creating the final JPEG/GIF.   Please follow them EXACTLY, including the file names and their capitalization.

1. Use ALT-PRINTSCEEN to dump a screen image to the clipboard.
2. Run Photoshop (not the Kodak Image program!!!).  Under the File nenu, select making a new image.  Accept the default size (which will match the size of the clipboard contents).  Paste the clipboard contents into the new image.   Save the file as Prog3Img1.jpg.   USE EXACTLY THIS NAME.
3. If you want to save more JPEG files use the names Prog3Img2.jpg, etc.
4. Under the Image menu, choose Image Size..., then change the height to 144 pixels (not inches!!).   Let the width change automatically proportionally.
5. Save the resulting small picture as GIF file named  Prog3Thumb.gif  (named exactly this way!).  For this, go to the File menu and choose Export.
6. Use anonymous ftp to send the file to the computer math.ucsd.edu, directory pub/sbuss/Math155/ma155wxx  where ma155wxx is your course userid.  Place the two files in that directory (if you place more than one JPEG file please let me know).
7. I will set up a common web page showing every one's image.

See Getting Started with the Ray Trace Software for how to get the software copied over to your account.  Documentation will appear by Monday in the pdf/ps online notes.