CSE 457: Intro to Computer Graphics


[A

Project 3: RayTrace

Date Assigned: Monday, February 9, 1998
Date Due: Monday, February 23, 1998
Artifact Due: Wednesday, February 25, 1998

Project Description

RayTrace is a program that constructs recursively ray-traced images of fairly simple scenes.

Getting Started

To install the starting point source code, copy all the files from /cse/courses/cse457/projects/raytracer457 In the scenes subdirectory, you'll find some example scene files (all the files with the .out extension).

Example Solution

Before you begin coding, you should run the example solution which can be found in /cse/courses/cse457/bin/raytrace. It has all of the requirements implemented.

Front end

For now, you'll find some example scene files to use in the scenes subdirectory (the files with the .out extension.) Within a week or so we will try to provide you with instructions on other techniques for constructing scene files, including instructions on how you can convert your articulated VRML model into a scene file that you can use.

Required Extensions

Each individual must implement recursive ray tracing as described in class. This entails making the following extensions to the starting point program. (The starting point for the extensions is in the file Raytrace.c)
    ExtensionAngelFoley, et al.
    Phong specular-reflection model 6.3 16.1 and 16.2.5
    Contribution from multiple light sources:
    • Directional lights
    • Point lights
    and light attenuation
    6.1, 6.2 16.1 (particularly in 16.1.5 and 16.1.6)
    Shadows   16.12 and 16.4
    Reflection 6.4 16.12
    Refraction 6.4 16.12
You ray tracer should trace rays to a recursive depth of 5. Additional information about the programming details of this project and use of the starting point code is available in project 3 help session.

Bells and Whistles

[Whistle] Add support for materials with arbitrary index of refraction.


[Whistle] Implement an adaptive termination criterion for tracing rays, based on ray contribution.


[Bell]" Implement spot lights.


[Bell]" Add a menu option that lets you specify a background image to replace the environment's ambient color during the rendering.

[Bell&Whistle] Implement antialiasing by adaptive sampling, as described in Foley, et al., 15.10.4.


[Bell&Whistle] Implement bump mapping (see Angel, 10.4; Foley, et al., 16.3.3).


[Bell] [Bell] [Bell]
Add texture mapping support to the program. An additional [Bell&Whistle] for adding a menu option for reflection (environment) mapping (see Angel, 10.3; Foley, et al., 16.12.1 and 16.6).

[2 Bells] Implement solid textures or some other form of procedural texture mapping, as described in Foley, et al., 20.1.2 and 20.8.3.

[2 Bells] Extend the ray-tracer to create Single Image Random Dot Stereograms (SIRDS). Click here for a brief explanation of how to view them, and click here to read a paper on how to make them. This page may also have some helpful information.

[2 Bells] for first, [Bell] for each additional
Implement distributed ray tracing to produce one or more or the following effects: depth of field, soft shadows, motion blur, or antialiasing (see Foley, et al., 16.12.4).

[2 Bells&Whistles] Implement ray-intersection optimization using either hierarchical bounding volumes or spatial subdivision (see Foley, et al., 15.10.2).

[Bell] [3 Bells] up to
Implement a more realistic shading model. Credit will vary depending on the sophistication of the model. A simple model factors in the Fresnel term to compute the amount of light reflected and transmitted at a perfect dielectric (e.g., glass). A more complex model incorporates the notion of a microfacet distribution to broaden the specular highlight. Accounting for the color dependence in the Fresnel term permits a more metalic appearance. Even better, include anisotropic reflections for a plane with parallel grains or a sphere with grains that follow the lines of latitude or longitude. Sources: Foley et al, Section 16.7; Glassner, Chapter 4, Section 4; Ward's SIGGRAPH '92 paper; Schlick's Eurographics Rendering Workshop '93 paper.

+ Variable extra credit for anything else cool you can think up! Have fun!

And finally...

When you are finished with this assignment, type "make clean" to clean up unnecessary disk space.