This course provides a broad overview of the theory and practice of rendering. Classic rendering algorithms will be covered, however, most of the course will cover current results in physically-based rendering algorithms. Specific topics to be covered include:
- Ray tracing
- Monte carlo techniques
- Physically-based reflection models
- Global illumination rendering
- Radiosity, path tracing, photon mapping
- Image and signal processing
- Textures and texture synthesis
- Camera and film
Previous experience with introductory computer graphics preferred but not required. Knowledge of basic linear algebra required; experience with C or C++ preferred.
There is one required text for the course.
- HDRShop: High dynamic range image processing and manipulation.
- ImageView: A program for viewing HDR images (windows and linux).
- PBRT Plugins: Some useful PBRT tools such as a plugin for Maya.
- Blender: Free 3D modeling package.
- OpenEXR: Source code, libraries, and tools for EXR files.
Assignments and Grading
The programming assignments involve experimenting with and enhancing an existing ray tracing system called pbrt
. This system is a combined C++ codebase and textbook written in a literate programming language.
There are three
programming assignments throughout the course, one
midterm which is an open-book, take-home exam, and one
final project to be done in teams of two. For the final project you will enhance the system so that it is capable of reproducing an image or animation sequence that is as realistic as possible.
: Each assignment has 1-2 tasks that are only required by students who take the class as 691MM. These tasks are marked as (691MM Required) and are optional for 491K students.
- Assignment 0: 10%
- Assignment 1: 15%
- Assignment 2: 15%
- Assignment 3: 15%
- Midterm Exam: 15% (open-book, take-home)
- Final project: 30%
- There will be no final exam in this course.
- For the programming assignments, you may discuss them with friends, but you are expected to implement your own solutions.
- For midterm exam, you may consult the textbook or course slides; you MAY NOT use google or consult anyone else. You must complete the answers by yourself.
- On the final project, you are encouraged to form teams of two people and partition your tasks among the team members. Teams may discuss their project with other teams, but may not share code.
- You should strive to complete your programming assignments on time. To cope with unforeseen circumstances, you will be allowed four days of grace during the entire semester. Beyond this, late assignments will be penalized by 10% per day that they are late. Notice that these are calendar days, not weekdays, not class days, and not non-holiday days. Exceptions must be discussed with the instructor.
- You are not permitted any late day for either the midterm exam or the final project.
- Because many assignments involve significant computation time, be sure to leave enough time to complete your rendering (especially for the final project).
Topic revision: r4 - 2008-02-01 - RuiwanG