Ray Tracing – Part 2

Due: Oct 18
File Format
You can use either the format provided last time or the alternate format (described here). You may have to modify the format, especially if you use the original XML one.

A basic Ray Tracer which (ideally) builds off of your RayTracing-Part1 assignment. It will be worth 85/100 points to get these basics:

  • Arbitrary camera placement, film resolution, and aspect ratio
  • Arbitrary scenes with spheres, triangles (possible with vertex normals), and aribitrary background colors
  • Arbitrary materials, including diffuse and specular shading, reflections, and refractions
  • Point and directional lights
  • Ambient lighting
  • Shadows
  • Recursion to a bounded depth

To get the full 100 points you need to add additional features from the list below (ask me if you have something in mind not on the list). Its okay if you have to extend the scene format in anyway you want, just make sure you include a sample scene that shows off your new, cool features!

The number in front is how many points a feature is worth. Their will be partial credit for features that “sort of” work.

Scene specifications / Primitives

  • (5) Cones and Cylinders
  • (5) Boxes and Planes
  • (5) Constructive Solid Geometry (union, difference, and intersection of primitives)
  • (10) Transformations on primitives (support 4×4 transformations or procedural ones!)
  • (20) Procedurally generated terrain/heightfields

Complex Lighting

  • (5) Area lights that produce soft shadows
  • (10) Ambient Occlusion
  • (20) Image-based lighting



  • (5) Texture mapping
  • (5) Bump mapping
  • (5) Procedural texturing or bump mapping (checkerboard, wood, marble, mandelbrot set, etc..)


  • (5) User interface that shows the raytraced image being updated
  • (10) An acceleration structure: BVH, OctTree, etc. (measure the performance impact on different scenes!)
  • (15) Parallelize the raytracer (and analyze the performance gains as you add more processors!)
  • (100) GPU Implimentation using CUDA

You should create a webpage with:

  • A ZIP file of all your source code
  • At least two sample renderings from your raytracer
  • A writeup of what features you implemented, and any interesting details of your implementation
  • A submission for the art contest (optional)

-You should be able to leverage your previous raytracer. Any extra credit work you did their should roll easily into this assignment. Try to be strategic about what extra features you choose to implement.
-A BVH is an easy way to render large, impressive scenes in a reasonable amount of time
-If your running out of time focus on the easier options such as boxes, planes, CSG and supersampling. That way you get some easy things completed well rather than rushing through something you don’t have time to finish.

About sjguy

Stephen in a researcher focusing in AI, Computer Graphics, and Robotics. He received his B.S. in Computer Engineering from UVa in 2006, and his M.S from UNC in 2009.
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *