Motivation

In this last assignment you are not being asked to add any new ray tracer functionality. You are being asked to somewhat push your current ray tracer and of course make sure it does all that has been developed for the previous assignments.

You are to turn in a complete running system, along with all the necessary model, material and driver files to render two scenes. Scene 1 must satisfy some complexity requirements described below. Scene 2 is your chance to make something compelling/beautiful/striking.

More about Scenes

Keep in mind the goals for scene 1 and scene 2 are different.

Scene 1
Here are a set of minimum requirements for Scene 1.
  • Must contain at least two different polygonal models.
  • One of these models must be rendered with flat shading, the other with smooth shading.
  • The scene must include non-zero ambient light and also at least 5 point light sources.
  • The scene must contain at least 10 spheres, keep in mind some may be small.
  • At least one sphere must be semi-transparent such that refraction is easily recognized in the rendering.
Scene 2
Scene 2 is your chance to be creative. Strive to produce a rendering you would want to show off to friends and possibly have added to the growing set of CS410 Masterworks on display outside Professor Beveridge's office. As a concession to practicality, make sure to build a scene that can be test rendered at a relatively low resolution, for example 256x256 pixels, in a reasonably short time. Then, if a high resolution (4096x4096) version is desired, it is expected rendering may take considerable hours.

Submission

Submit a tar file via the CANVAS assignment page that includes:

    Driver files (driver01.txt and driver02.txt) and model files necessary to render scene 1 and scene 2.
    PPM files generated for driver01.txt and driver02.txt. The resolution of these images does not need to match the driver files - it is recommended that your driver files have relatively low resolutions so they render relatively quickly (but still high enough resolution to see what is going on) while these PPM files show your scenes in high quality.
    Your source files
    A makefile if appropriate
    README.txt file that explicitly contains (1) a command to compile your program (2) a command to execute it and (3) the description of your implemented feature.

If you are using C++, your executable should be named 'raytracer'. If your are using java, the main executable class should be named 'Raytracer'. Notice the change in case for the first letter between C++ and Java.

Reminder

There is no “late period”. It is essential to start earlier and finish earlier. The program is due when it is due. All work you submit must be your own. You may not copy code from colleagues or the web or anywhere else. Cheating will not be tolerated, and will be handled in accordance with university and department policy.