Whitted Ray Tracing and Beyond
Due: April 7, 2021 @ 11:59 PM
Important Notes
- Read the submission instructions carefully!
Table of Contents
Whitted Ray Tracing and Beyond
For your third programming assignment you will extend your ray tracer to include effects pioneered by Turner Whitted in his paper from 1980 An improved illumination model for shaded display. You can read his own account of his initial implementation of recursive ray tracing in this 2018 essay he wrote for NVIDIA. It’s interesting, short, and worth reading.
The key features you will add to you ray tracer will be refraction (transparency) and mirror reflection. We will also go step beyond what Whitted did and add support for area lights.
Implementation
You will add the following features. You can consult either or both of the books listed below for details on how to implement these features and example code. Be aware that the two books take slightly different approaches and have different coding styles, although both use C++
.
- Rendering a mirror-like object.
Render a scene of about the same complexity and quality as the one at the top of this assignment.
References:- See Ray Tracing in One Weekend Chapter 9 Metal
- See Ray Tracing from the Ground Up Chapter 24 Mirror Reflection UIUC Library Link
- Rendering a transparent object.
Render a scene of about the same complexity and quality as the one at the top of this assignment.
References:
- See Ray Tracing in One Weekend Chapter 10 Dielectrics
- See Ray Tracing from the Ground Up Chapter 27 Simple Transparency UIUC Library Link
- Support for area lights.
Render a scene of about the same complexity and quality as the one shown here.
You can use spheres and/or simple rectangles instead of rectangular solids.
References:
- See Ray Tracing the Next Weekend Chapter 7 Rectangles and Lights
- See Ray Tracing from the Ground Up Chapter 18 Area Lights UIUC Library Link
Creativity
The scenes don’t need to be complex, but they should be different from the ones pictured here. They should have about the same quality. You are free to use code from the sources listed here as a reference for your implementation. It is acceptable for your code to be very similar to those sources.
Submission
You will hand in your code and 3 images:
- One rendering of a scene with an area light that shows soft shadows.
- One rendering of a transparent object like a glass sphere….include enough of a scene to show it is transparent.
- One rendering of a mirror-like object…include enough of a scene to show that it is reflective.
You also need to write a very brief technical report
Write a paragraph that:
- provides the technical specifications of the hardware you ran on
- states which language(s) your implementation is written in
- provides a table that shows the time and number of rays required to render each of your 3 images
Include a README.txt file in which you list all pieces of code you did not write.
This includes any libraries, source code downloaded, or source code you typed in or adapted from a listing you read.
Please use something like the following format 1. Name-Of-Piece-Of-Code URL-to-Source
Hand-in will be done on Compass.
Submission Instructions
Hand-in will be done on Compass.
Name | Points | Description |
---|---|---|
Mirror Reflection | 15 | Add support for perfect specular relfection on a sphere. |
Transparency | 15 | Add support for transparent spheres |
Area Lights | 15 | Add support for rectangular arae lights. |
Creativity | 5 | Submitted images are scenes of your own design of similar quality to the provided images. |
Total | 50 |