Computer Graphics 2 - Winter 2008

Parent section

Computer Graphics 2

Project Page


Renderman assignments



Goal of raytracer

Checkpoint 1: Setting the Scene

To do this assignment we used the blender rendering platform. We have been using it for a while and wanted to try and recreate the scene not only in positioning but other material details as closely as possible. We got pretty close, except for the shadows which seem too dark.

The properties we came up with:

Checkpoint 2: Camera Modeling

For this checkpoint we implemented both extras (a triangle shape, and sampling). Our triangle shape actually allowed us to implement the quad surface more easily than doing a sub-set of an infinite plane.

Our simple scene, no frills:

Scene with super sampling (4 samples per pixel in a grid pattern):

Scene with two triangles into it:

Scene with two triangles, and 4 samples per pixel:

Checkpoint 3: Basic Shading

For checkpoint 3 we implemented both extras, multiple lights and phong-blinn lighting. We did not include the triangles in the screenshots, but since the quad is infact composed of two triangles, the logic for them works. Our code is still hosted at:

We choose to also implement a simple scene parser to make it easier to change properties, but our properties could probably be chosen better.

The scene, with one light (the Scene properties):

The scene with two lights:

The scene with three lights:

The scene with phong blinn, and a single light (using same properties as single light with straight phong).

Checkpoint 4: Procedural Shading

We implemented the checking procedural shader such that it will work on any shape that produces U,V coordinates during intersections. The UV calculation was already part of the triangle intersection so quads got them for free, however they were mirror images. To fix this, we just take one of the triangles and subtract u and v from 1.

The scene with a checked floor:

Checkpoint 5: Recursive Ray Tracing - Reflection

This assignment was fairly simple. We were able to implement it without any real problems. Though, our image was initially very different than the reference, we realized that we were adding our diffuse color to the reflection, and since our diffuse was red, the reflection was redish.

Normal reflection

Higher reflectance value

Red reflection by leaving diffuse as non grayscale

Checkpoint 6: Recursive Ray Tracing - Transmission

We completed this assignment easily, much the same way as reflection. We initially had some specling, but converting (finally) to all doubles from floats fixed it.

Checkpoint 7: Tone Reproduction

Ward's model was very straight forward. Reinhard, since we are only using a single alpha value (as per the instructions?) was less obvious. Since the alpha values doesn't change, we end up mapping to the same zone no matter what the lmax value is. Changing alpha relative to lmax makes it more interesting, but the assignment didn't require us to do this.

LMax: 1



LMax: 1000



LMax: 10000