The authoritative version of this file is the one in the Scotty3D repository.
In Assignment 3 you will write code to complete Scotty3D's high-quality path-tracing-based renderer. The first part of the assignment will focus on providing an efficient implementation of ray-scene geometry queries. In the second half of the assignment you will add the ability to simulate how light bounces around the scene, which will allow your renderer to synthesize much higher-quality images.
The assignment is split into seven tasks:
Checkpoint A3.0: [40pts]
A3T1Camera Rays [5pts]
A3T2Intersection Tests [14pts]
Checkpoint A3.5: [60pts]
A3T4Path Tracing [13pts]
A3T6Direct Lighting [8pts]
A3T7Environment Lighting [13pts]
To turn in your work, make sure you have all the files in the proper place and then run the following command in your root directory:
$ tar cvzf handin.tgz src/ tests/a3/ writeup-A3.txt render.s3d render.png
We encourage you to develop your own test cases. Please include these in the
If you do any extra credit that requires substantial refactoring (of the sort that might break tests), submit your code and write-up for the extra credit in a separate
render.s3d are a cool scene you've assembled and rendered with Scotty3D
writeup-A3.txt is described below.
You will submit a short document explaining how you believe your implementation performs on each of the tasks. The project directory contains a template in
For each task, do either of the following: * If you believe that you have correctly implemented the required functions, simply leave the text "Fully implemented." * If your implementation does not fully function, write a short explanation of what your code can and cannot do, and (optionally) briefly explain your strategy and how you got stuck. If your explanation indicates significant understanding of the problem, we may award partial credit even though the code does not work.
In addition, you will need to write a brief artists' statement for your
It's very satisfying to see the images your code can make -- and the process of making something beautiful will encourage you to improve your code and fix bugs. So build some cool scenes and render them with your pathtracer! If you don't want to model things in Scotty3D, the "Import obj" button can help you import meshes from other programs (but please make sure you hold a license for the meshes you use). The most [Art Nouveau]https://en.wikipedia.org/wiki/Art_Nouveau)-styled render, as selected by the course staff, will be awarded a small prize.
Some basic (incomplete!) test cases have been provided for you. You should add and share your own test cases in the appropriate Piazza thread.
#run all of the A2 test cases: $ ./Scotty3D --run-tests a2.
You can also edit meshes in the GUI, which provides functions to call your operators. If you find yourself performing the same edits over and over in the GUI, we suggest writing a test case instead.
Unfortunately, we don't provide a simple way to run mesh edits from the CLI.
Each task name is prefixed by a tag which you can use to locate and test the code. See Overview for a brief overview of relevant files.
E.g., for "
A3T1 Camera Rays" you can:
- find where to fill in the code, by searching in
find src -type f | xargs grep A3T1
- find the test cases in
- run the test cases with
./Scotty3d --run-tests a3.t1.
See Camera Rays.
See Path Tracing.
See Direct Lighting.
See Environment Lighting.
Some suggestions which will make your A3 process easier.
There are some videos provided in the
A3/videos folder - these videos were made several semesters ago and are slightly outdated, but many of the general concepts carry over.
Path tracers are full of randomization. Debugging algorithms that depend on pseudo-random numbers can be difficult because every run is different.
Table of Content