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.
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.
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.
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.
Tuesdays and Thursdays
12:00PM - 1:45PM (PT)
Note: the lectures will be accessed online in an asynchronous fashion. Recorded lectures will usually be released one day before the originally scheduled times (TuTh), and will be notified via Gauchospace and Piazza.
Access to the recorded lectures are for enrolled 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.
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.
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.
Here's our plan regarding assignments and grading. The instructor is actively working on further decreasing the workloads.
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, usually 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.
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.
Here's our tentative syllabus. Since this course is new, the schedule is relatively fluid and may change (quite frequently) as the quarter progresses.
|1||Oct 1||Overview of Offline Rendering|
|2||Oct 6||Review: Multivariable 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||Radiometry and the Rendering Equation|
|Oct 22||Path Tracing 1 (Basic Approach)|
|5||Oct 27||Path Tracing 2 (Multiple Importance Sampling, etc.)|
|Oct 29||High Dynamic Range Imaging and Tone Mapping|
|6||Nov 3||Physically-Based Materials 1 (Microfacet Models, Disney "Principled" BRDF)|
|Nov 5||Physically-Based Materials 2 (Marschner Hair, etc.)|
|7||Nov 10||Photon Mapping and Path Guiding|
|Nov 12||Midterm (Remote)|
|8||Nov 17||Participating Media 1|
|Nov 19||Participating Media 2|
|9||Nov 24||Camera Models|
|Nov 26||No Class (Thanksgiving)|
|10||Dec 1||Distribution Effects (depth of field, motion blur)|
|Dec 3||Offline Denoising Techniques|
|11||Dec 8||Advanced Light Transport and Variance Reduction|
|Dec 10||Rendering Competition Showcase / No Class|
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.