Assignment 3: Pathtracer

Pathtracer is the second of three components of Scotty3D. The primary repository is located at The wiki on that page will be the primary source of information about this assignment, this document only contains administrative details about grading and submission.

Due date: April 9th, Monday, 11:59pm


The assignment consists of a total of 100 pts. The point breakdown is as follows:

  • Task 1: Generating Camera Rays: 5
  • Task 2: Intersecting Triangles and Spheres: 15
  • Task 3: Implementing a Bounding Volume Hierarchy (BVH): 20
  • Task 4: Implementing Shadow Rays: 10
  • Task 5: Adding Path Tracing: 15
  • Task 6: Adding New Materials: 20
  • Task 7: Infinite Environment Lighting: 15


Additionally, you will submit a short document explaining which tasks you successfully implemented, and any particular details of your submission. If your submission includes any implementations which are not entirely functional, please detail what works and what doesn't, along with where you got stuck. This document does not need to be long; correctly implemented tasks may simply be listed, and incomplete tasks should be described in a few sentences at most.

If you wish, you may also include render result images to explain the any bugs or show off extra credit work. If so, please add these files to your submission archive, and mention them in the writeup.

The writeup must be a pdf, markdown, or plaintext file. Include it in the root directory of your submission as writeup.pdf,, or writeup.txt. Please submit a .txt or .md instead of a pdf file if you can.

Failure to submit this writeup will incur a 10 pt penalty on the assignment.

Code Environment

This codebase should compile on Linux, macOS, and Windows on a typical environment. The build instructions given on the project page will walk you through installing dependencies and building the code. If you have difficulties running the code on your local machine, the GHC 5xxx cluster machines have all the packages required to build the project.

Handin Instructions

As with the previous assignments, we will be submitting on Autolab. You should create a tar archive of your entire src subdirectory along with the writeup (e.g. writeup.txt).

$ pwd
> (...)/Scotty3D
$ tar cvzf handin.tgz src/ writeup.txt
> a src
> a src/application.cpp
> a writeup.txt

Upload this file to autolab, and be sure not to forget your writeup!