Ray Tracing Projects

Class Assignments
Advanced Computer Graphics II (Ray Tracing): CS6620
Peter Shirley
Spring 2002

Jason Waltman, MS Graduate Student
School of Computing
University of Utah

My classmates' projects can be found here.
 


A Basic Ray Tracer

A basic ray tracer with support for sphere intersections only.  No shadows, no lighting.  Reads model from file that includes sphere location, radius and color.


Click to see more.
 


Triangles, Lighting, Shadows and Viewing...Oh My!

Added support for triangles, lighting of Lambertian (total diffuse) surfaces, shadows, and viewing to the basic ray tracer of assignment 1.  Viewing is accomplished through program command line arguments: eye point, look-at point, up vector, and field of view.  


Click to see more.
 


Bounding Volume Hierarchy

Implemented a hierarchal data structure based on bounding volumes to shorten render time of a large number of primitives.  After this code change, I can render a million spheres in under one minute where a brute force method would take hours to complete.


Click to see more.
 


Marble Image

Here, a marble-like effect is created using a solid texture generated by a noise function from Ken Perlin. Different marble effects are possible by varying the parameters: scale, period, distortion, and octaves, which are input file arguments that define marble textures.


Click to see more.
 


Image Texture Mapping

Instead of using 3D procedural textures as in the last assignment, here textures are image files that are mapped onto geometry based on specified texture coordinates.


Click to see more.
 


Glass & Mirrors

"Fun" used to be marble and texture maps.  Not anymore.  When you throw glass and mirrors into the picture, it's a whole new ballgame.
 


Click to see more.
 


Instancing

Instead of modeling, for example, an ellipsoid, we can create one by simply rendering a sphere with some transformation matrix applied to the rays that hit the it.  "Instances" of objects may be scaled, rotated, transformed or any combination of these.
 


Click to see more.
 


Antialiasing

No more "jaggies"!  Up until now, all the images produced by my ray tracer have been created by taking only one sample per pixel.  Since pixels are arranged on a square grid, this undoubtedly creates stairstep-like artifacts on diagonals, curves, and areas with subtle detail.  Antialiasing attempts to solve this problem.
 


Click to see more.
 


Soft Shadows & Fuzzy Reflection

Let's face it, the real world is not made up of entirely point light sources and perfect reflectors.  Here, we add an imitation of an area light source for more realistic shadows, and also the ability to perturb object normals to give softer reflections.
 


Click to see more.
 


Depth of Field

Here, we imitate a real camera by hacking a thin lens from our ray tracer viewpoint.  "Depth of field" causes a certain z-direction of an image to be in focus, while the rest will be slightly blurry, based on the size of the aperture (lens).
 


Click to see more.
 


Motion Blur

Continuing with the real camera model, we allow objects to move over time by specifying a start and end point, and start and end times.  By giving the renderer a shutter speed, we will be able to see the motion of an object during the time the "shutter" was open.
 


Click to see more.
 


Final Project

One cool image to round out the semester.  Uses most of the ray tracing features implemented throughout the semester, but not meant to be a survey.  Nothing new was added.
 


Click to see more.
 


Downloads

Download the "Ulmo" ray tracer renderer used to create the above images.  Included with the executable is a manual (in PDF format) which describes the scene description interface, example scenes, and texture maps.

You'll need an image view that can view PPM files.  I use IrfanView or SlowView.

 

Ulmo Ray Tracer Package
with example scene
descriptions and models
9.44 MB


Ulmo User's Manual Only
77 KB

Compiled for Windows operating systems only.  Optimizations for Pentium Pro or better processors.  May not work on weaker processors.
 

email at jasonwaltman dot com

(c) 2000-2007 jason waltman