CS190I: Introduction to Offline Rendering

Fall 2020

Important Announcement

Due to the COVID-19 situation, anything related to this course, including the contents, schedules, syllabus, logistics and assessment, may change frequently as the quarter proceeds. Your understanding is greatly appreciated.

Course Description
  [Path tracing (Big Hero 6 by Disney)]
  [Participating media (Novak et al.)]
[Offline Denoising (KPCN) (Bako et al.)]
[Disney Principled BRDF (Burley et al.)]    

This course will teach you everything about offline rendering, so you will be able to write a fully functional industry-level renderer (such as Disney's Hyperion and Pixar's RenderMan) that produces stunning graphics. Topics in this course will cover the physics of light, the rendering equation, Monte Carlo integration, path tracing, physically-based reflectance models, participating media, other advanced light transport methods, production rendering approaches, and so on.

This course is the step stone if you want to find a job in the animation companies and/or if you want to apply for graduate school focusing on Computer Graphics research. Like CS180, our CS190I will not be very easy, but will be both interesting and rewarding. Graphics is AWESOME.

Course Comparison

Some of you (especially those who have taken CS180) may wonder what the differences are between CS180 and CS190I. The answer is that CS180 to CS190I is like Artificial Intelligence to Deep Learning. CS180 is an overview in Computer Graphics, but CS190I is focused on accurate and high-quality offline rendering within the framework of ray tracing. Prior knowledge in CS180 is PREFERRED but NOT STRICTLY REQUIRED.

The difference between CS291A and CS190I is much more clear. CS291A is focused on real-time (>30 FPS) approaches. They are smart, fast but less accurate, usually used in video games and VR/AR applications. CS190I cares more about correctness and quality, but does not exploit GPU computing and does not worry about slow performance, thus is more used in animations, etc.

Also note that, this course is listed in the category "Intelligent and Interactive Systems". But it is to build up our intelligence for the design of interactive systems. Only a small part of the topics from this course is related to Machine Learning / Deep Learning.

Course Prerequisites

This course does not have any strict prerequisites, since as upper division students, you should have already learned the following topics:

The listed course numbers are for your reference only. In general, as long as you have taken one course (or equivalent) in each of the four categories, you are ready to take this course. Also, it is recommended that you go through the (publicly available) slides in CS180 before the start of this course, especially the "Ray Tracing" related topics.


Lingqi Yan
Email: lingqi@cs.ucsb.edu
Office hour: Tuesdays 9AM-10AM, Zoom link

Teaching Assistants

Mert Toka (from MAT Department)
Email: merttoka@ucsb.edu
Office hour: Thursdays noon - 1PM, Zoom link

Sign up on Piazza for course announcements, discussion and Q/A!

Time and Location

Tuesdays and Thursdays
Asynchronous Access

Discussion Sections:
12:00PM - 12:45PM (PT),
Zoom link

Note: the lectures will be accessed online in an asynchronous fashion. Recorded lectures will usually be released roughly the same day as originally scheduled (TuTh), and will be notified via Gauchospace and Piazza.
Access to the recorded lectures are for UCSB students only. The instructor might consider making the course materials publicly available after this quarter, but it is strictly prohibited to record, spread and / or publicize this course contents by students.
If (1) you are a UCSB student (grad or undergrad, CS or non-CS) and (2) you haven't / cannot enroll in this course, you are welcome to audit. Please send an email to the TA and cc the instructor for a private link. But still, you cannot spread the course contents. You won't get credit from this course, you don't have access to the discussion sections, and your homework will not be scored.

Textbooks Recommended

There are no required textbooks for this course. The lecture slides and discussion materials will be your main references. And they will usually be available by the next day of the corresponding lecture/discussion. Other related reading materials will be available to download from this course website before lectures.

Optional references:
Peter Shirley, "Ray Tracing in One Weekend -- The Book Series". (Free electronic version is publicly available. Also note this is a trilogy of three books.)
Pharr et al., "Physically Based Rendering: From Theory to Implementation", 3rd edition. (Free electronic version is publicly available.)

Note that there is a mismatch of recommended books on the departmental website. Please follow the description here.

Assignments and Grading

Here's our plan regarding assignments and grading. The instructor is actively working on further decreasing the workloads by removing some assignments.

Your assignments are weekly (8 in total), and all of them are programming tasks. We have optimized your implementation workload, so you are usually expected to write NO MORE THAN 20 LINES OF CODE per week. Besides, we provide code skeleton for each assignment, along with a pre-configured Ubuntu virtual machine / Docker container for you to get started smoothly. Overall, we expect that the workload of CS190I is slightly less than CS180.

All assignments are due on the specified dates by 11:59PM AoE (Anywhere on Earth). You should plan ahead. Each late day will cause a 10% off the final score of the corresponding assignment. We will use Gauchospace for submissions. Detailed submission guidelines will be in the assignment descriptions.

Most of the assignments are in C++, but for the first two assignments, you can use Python. You will work on the assignments individually. Each assignment takes 8% of your final grade.

There will be one midterm exam and no finals. The midterm exam is in written form and will be taken remotely (detail TBD as the quarter proceeds). And it takes up 18% of your final grade. (We are currently working on eliminating the midterm.)

After the midterm, you will be working on a course project (either individually or in groups of two or three, TBD). The topic of the project can be arbitrarily selected from all the topics covered in this course. Examples will also be provided. The project also takes up 18% of your final grade.

Course Syllabus and Schedule

Here's our tentative syllabus. Since this course is new, the schedule is relatively fluid and may change (quite frequently) as the quarter progresses.

Week Date Topics
1 Oct 1 Overview of Offline Rendering
2 Oct 6 Review: Calculus and Probability Theory
Oct 8 Sampling Theory and Practice 1
3 Oct 13 Sampling Theory and Practice 2
Oct 15 Monte Carlo Integration
4 Oct 20 Review of Ray Tracing
Oct 22 Radiometry and The Rendering Equation
5 Oct 27 Path Tracing 1 (Basic Approach)
Oct 29 Path Tracing 2 (Multiple Importance Sampling, etc.)
6 Nov 3 High Dynamic Range Imaging and Tone Mapping
Nov 5 No Class (Midterm Canceled)
7 Nov 10 Physically-Based Materials 1 (Microfacet Models, Rendering Materials)
Nov 12 Physically-Based Materials 2 (Disney "Principled" BRDF, Marschner Hair, etc.)
8 Nov 17 Participating Media 1
Nov 19 Participating Media 2
9 Nov 24 Camera Models and Distribution Effects (depth of field, motion blur)
Nov 26 No Class (Thanksgiving)
10 Dec 1 Offline Denoising Techniques
Dec 3 Photon Mapping
11 Dec 8 Advanced Light Transport and Other Variance Reduction Techniques
Dec 10 No Class

Programming and Collaboration Policy

Programming projects are to be implemented individually from scratch. That is, you should not derive solutions from existing sources or previous instances of this course (including previous postings from the online course, at other universities etc.). Discussion of programming projects is allowed and encouraged, but copying of solutions or code from other students, or from students who previously took this course in any university or online setting is not allowed. If you do obtain substantial help from the instructor, teaching assistant/tutor or another student, you must document this in your program. Furthermore, you should in general not copy code from other sources. If in doubt, please ask. Further specifics are given in the assignment specifications.

To repeat, you may not copy solutions or code from other students, or students who previously took this or a similar class at a university or online. You must clearly declare any code and ideas that came directly from others, as opposed to what you created yourself. If you fail to do so, we can only assume you are presenting your own work. Of course, presenting other people's work as your own is academic dishonesty. Students who engage in dishonest activities, with an intent to alter their grade, will receive an F for the course and be reported to the University for further action. Note that you will also be held liable for publicly posting your code on Github or other public websites, if another student subsequently copies from it.


Students with documented disability are welcome to contact the DSP office to arrange the necessary academic accommodations. We will also spare no efforts to help.