This course provides an overview of the theory and practice of photorealistic rendering. The primary aim of the course is to cover the principles and techniques of physically-based rendering algorithms, although classic rendering algorithms will be covered as needed.

You are expected to have a working knowledge of computer graphics at the level of an introductory course in the topics such as CS384G or CS354. You should fully understand the OpenGL style basic rendering pipeline, including viewing and modeling transformations, Gouraud and Phong lighting, simple geometric modeling using polygons and quadrics, and hidden surface algorithms like the z-buffer algorithm. You should also be familiar with principles of color spaces, and with the basic recursive ray tracing algorithm.

Facility in the use of integral calculus, linear algebra, and basic geometric algorithms is expected, along with some exposure to signal processing and probability.

- Time: TTh 2:00-3:30pm
- Room: Welch Hall 3.402
- Home Page: http://cs.utexas.edu/~fussell/courses/cs395t

fussell@cs.utexas.edu

ACES 2.120

Office hours: MW 12:30-1:30 (subject to change)

O: (512) 471-9719

C: (512) 627-7659

Office: TBD

Office hours: TBD

Matt Pharr and Greg Humphreys

Morgan-Kauffmann, 2004.

Additional readings will be assigned from the research literature and will normally be available on the web.

- The Goals of Rendering

slides

Reading - Ray Tracing I: Basic Algorithms

slides

Reading: Pharr/Humphries Ch 1-3

Extras:

Projective geometry slides

More projective geometry, different application

Algebraic surface animations

More algebraic surfaces

Still more

algebraicsurface.net

- Ray Tracing II: Acceleration Techniques

slides

Reading: Pharr/Humphries Ch 4 - Radiometry

slides

Reading: Pharr/Humphries Ch 5, 13 Radiometry FAQ - The Light Field

slides

- Monte Carlo Integration I

slides

Reading: Pharr/Humphries Ch 14 Siggraph Course Notes - Monte Carlo Integration II

slides

Reading: Pharr/Humphries Ch 15 Eric Veach's Thesis - Orthogonal Functions and Fourier Series

slides

- Fourier Transforms

slides

- Sampling and Reconstruction: Filtering, Aliasing and Antialiasing
slides

Reading: Pharr/Humphries Ch 7 - Cameras and Film
slides

Reading: Pharr/Humphries Ch 6,8 Kolb, Mitchell, and Hanrahan - Reflection Models I: BRDFs, Diffuse
slides

Reading: Pharr/Humphries Ch 9 - Reflection Models II: Glossy
slides

Reading: Pharr/Humphries Ch 10 - Texture and Materials (Multiple Importance Sampling, Phases of the Moon)
slides

Reading: Pharr/Humphries Ch 11 - Participating Media and Volumetric Scattering
slides

Reading: Pharr/Humphries Ch 12, 17 - Light Transport and the Rendering Equation
slides

Reading: Pharr/Humphries Ch 16 - Monte Carlo Path Tracing
slides

- Irradiance Caching and Photon Maps
slides

- Current Topics in Rendering
slides

All lecture slides will be placed online before each class. Please try to do the readings in advance.

The projects for this quarter involve enhancing a working ray tracing system called pbrt (Physically-based Ray Tracer). This system is a combined C++ codebase and textbook written in a literate programming language.

The first part of the course involves a getting started assignment and three main programming assignments. The current plan is for the following three assignments:

- Stage 1: Implement ray-surface intersection methods for terrains.
- Stage 2: Implement a automatic camera model that controls exposure, depth-of-field, and motion blur
- Stage 3: Use Monte Carlo techniques to compute reflections from anisotropic surfaces illuminated by a linear light source.

In the second part of the course you will enhance your system so that it is capable of reproducing an image of a real object, for example, a gemstone, a puff of smoke, a candle flame, etc.

The first three programming assignments are each worth 20% of your grade, and the last programming project is worth 40%. There will be no exams.

For the first three programming projects, you may discuss the assignment with friends, but you are expected to implement your own solutions. On the last programming project, you are permitted (and encouraged) to form teams of two people and partition your planned extensions among the team members. Teams may discuss their project with other teams, but may not share code.

Since each assignment builds on the previous one, it is important that assignments be completed on time. To allow for unforeseeable circumstances, you will be allowed three weekdays of grace during the quarter. Beyond this, late assignments will be penalized by 10% per weekday that they are late. On the last programming project, neither the demo nor the writeup may be late. Incompletes in this course are given only in exceptional circumstances.

Pbrt will be installed on the public Linux machines in Taylor Hall and in Painter Hall. You are welcome to do the assignments on your own machines if you prefer. However, it is your responsibility to ensure that your code runs on the public Linux machines before being turned in. I will run your code on those machines for evaluation and will expect it to work there.

Acknowledgement: Many thanks to Pat Hanrahan for providing materials from his Stanford course CS 348B, on which this course is modeled.