Due: April 7, 2021 @ 11:59 PM


Important Notes

  1. Read the submission instructions carefully!


Whitted Ray Tracing and Beyond

whitted

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++.

  1. 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:
  2. Rendering a transparent object.
    Render a scene of about the same complexity and quality as the one at the top of this assignment.
    References:
  3. Support for area lights.
    whitted
    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:

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