CS190I: Introduction to Offline Rendering

Winter 2024


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.


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 own intelligence for the design of interactive systems. None of the topics from this course are related to Artificial Intelligence / 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.


Instructor

Lingqi Yan
Email: lingqi@cs.ucsb.edu
Office hour: Tuesdays 3:00PM - 3:45PM, HFH 2119


Teaching Assistants

Zheng Zeng
Email: zhengzeng@ucsb.edu
Office hour: Thursdays 2:00PM - 3:00PM, HFH 5106

Zilin Xu
Email: zilinxu@ucsb.edu
Office hour: Wednesdays 2:00PM - 3:00PM, HFH 5106

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


Time and Location

Lectures:
Thusdays and Thursdays
9:30AM - 10:45AM, PSYCH 1924

Discussion Sections:
Fridays
1:30PM - 2:20PM, PHELP 1445


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", 4th edition. (Free electronic version is publicly available.)

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


Assignments and Grading

Here's our tentative plan regarding assignments and grading. The plan is relatively fluid and may change (quite frequently) as the quarter progresses.

Your assignments are about 6 in total (which may change), and all of them are programming tasks. We will use Muni Rendering Toolchain, homemade by the instructor's research lab, to save you time from low-level implementations and help you focus on the algorithms taught in this course.

Except for Assignment 1, we provide a code skeleton for each assignment. All code skeletons are in C++. For Assignment 2 through Assignment 5, you must use C++. For Assignment 1 and Assignment 6, you can use Python at your own risk (without the provided code skeletons and help from the TA!). You will work on the assignments individually. Each assignment takes 12% of your final grade.

All assignments are due on the specified dates by 11:59PM PT. 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.

There will be one midterm exam and no finals. The midterm exam is in written form and will be taken in class. And it takes up 14% of your final grade.

After the midterm, you will be working on a course project called Rendering Competition (either individually or in groups of two, TBD). The topic of the project can be arbitrarily selected from all the topics covered in this course, and you are asked to render any scene of your own choice, either static or animated, to show off what you can do with offline rendering techniques learned in this course. The project also takes up 14% of your final grade.

Note specifically that we will use your relative ranking/standing in class to determine your letter grade.


Course Syllabus and Schedule

Here's our tentative syllabus. The schedule is relatively fluid and may change (quite frequently) as the quarter progresses.

Week Date Topics
1 Jan 9 Overview of Offline Rendering [Slides]
Jan 11 Review: Calculus and Probability Theory [Slides]
2 Jan 16 Sampling Theory and Practice 1 [Slides]
Jan 18 Sampling Theory and Practice 2 [Slides]
3 Jan 23 Monte Carlo Integration [Slides]
Jan 25 Ray Tracing Basics Recap [Slides]
4 Jan 30 Radiometry and The Rendering Equation [Slides]
Feb 1 Path Tracing 1 (Direct Illumination and Global Illumination) [Slides]
5 Feb 6 Path Tracing 2 (Acceleration) [Slides]
Feb 8 Image Formulation [Slides]
6 Feb 13 Physically-Based Materials 1 (Microfacet Models) [Slides]
Feb 15 Physically-Based Materials 2 (Disney "Principled" BRDF, Marschner Hair, etc.) [Slides]
7 Feb 20 Midterm (In Class)
Feb 22 Participating Media 1 [Slides]
8 Feb 27 Participating Media 2 [Slides]
Feb 29 Camera Models and Distribution Effects (Depth of Field, Motion Blur) [Slides]
9 Mar 5 Offline Denoising Techniques [Slides]
Mar 7 Advanced Light Transport and Other Variance Reduction Techniques [Slides]
10 Mar 12 No Class
Mar 14 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.


Accessibility

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.