CS291A: Real-Time High Quality Rendering

Winter 2022

Course Description
[Mulan by Disney]
[Siren by Unreal Engine]

One of the perennial goals of Computer Graphics is creating high quality images which are indistinguishable from photographs: a goal referred to as photorealism. Another important goal is interactivity for visualization, simulation, gaming and other real-time applications. These two goals have historically been at odds with each other. In this course, we will review the history and some of the recent ideas that seek to bridge the gap between realism and interactivity. We will focus on the use of complex lighting and shading within limited computation time. Specifically, topics will cover programmable shaders, real-time shadows, interactive global illumination, image-based rendering, precomputed rendering, adaptive sampling and reconstruction, and real-time ray tracing.

This course will be constantly evolving over iterations. Lecture topics and/or reading materials will be subject to change to keep up with the latest development of real-time rendering. Currently, this course is for graduate students. In subsequent years, this course might be moved into undergraduates' curriculum.

Prerequisite: CS180: Introduction to Computer Graphics, or equivalent (e.g. CS280), or more advanced alternative (e.g. CS190I/CS285).
(Note, this course can be arbitrarily difficult if you haven't taken a Computer Graphics course previously. Courses in Computer Vision and Human-Computer Interaction will not help!)


Lingqi Yan
Email: lingqi@cs.ucsb.edu
Office hour: Mondays 10:00AM - 10:45AM PT, Join via Zoom

Teaching Assistants

No TA for this class


Mondays and Wednesdays
1:00 PM - 2:00 PM (PT), Phelps 2510

Books Recommended

There are no required textbooks for this course. Related papers will be available to download from this course website before lectures.

Optional references:
Tomas Akenine-Möller et al., "Real-Time Rendering", 4th edition. (Recommended. Free electronic version of the 4th edition is available in UCSB library.)
John Kessenich et al., "OpenGL Programming Guide: The Official Guide to Learning OpenGL", 8th or later edition.
Eric Haines and Tomas Akenine-Möller et al., "Ray Tracing Gems". (Free electronic version is publicly available.)

For further reading, you may refer to all GPU Zen, GPU Pro, and older GPU Gems series for interesting real-time rendering topics.

Assignments and Grading

Your assignments consist of 1 paper presentation, and 3 regular projects. There will be no exams and no final projects.

The paper presentation is performed ONCE and solely by yourself. You will assign yourself (using your UCSB account) to one research paper from a list of provided research papers throughout different topics, make some slides, and present to the entire class. The presentation will be performed only by yourself, with a duration of about 20 minutes. The paper presentation takes up 20% of your final grade.

For each paper presentation, both the instructor and ALL the students (including the presenter) will judge the quality of it. Each of you will send out a Google Form giving your score and comments, e.g., pros and cons. This participation is REQUIRED. All your comments (regardless of the scores and quality of comments you give) to all the presentations will take up another 20% of your final grade.

The 3 projects are CHOSEN BY YOURSELF from 5 potential project topics listed in the course syllabus. In case you are not familiar with OpenGL/DirectX/Vulkan, we also provide an OPTIONAL warm-up project (Project 0, will not be graded) for you to get started. Each chosen project takes up 20% of your final grade. You will work on all the projects individually, and you are expected to work out the projects from scratch (i.e. no code frameworks will be provided).

All projects are due by 11:59PM PT on the dates specified. You should plan ahead. Each late day will cause a 10% off the final score of the corresponding project. You need to submit your work via Gauchospace. Detailed submission guidelines will be provided in the project descriptions.

Course Syllabus

Due to the uncertain COVID situation, this schedule is relatively fluid and may change as the quarter progresses.

Week Date Topics
1 Jan 3 Introduction and Overview [Slides] [Video]
Jan 5 Recap: Blinn-Phong Reflectance Model, Graphics Pipeline, Shading Languages, Rendering Equation [Slides] [Video]
[Project 0 out: A Real-time Object Viewer] [Description]
2 Jan 10 Shadow and Environment Mapping (Shadow Mapping and Percentage Closer Filtering) [Slides] [Video]
Jan 12 Shadow and Environment Mapping (Variance Soft Shadow Mapping and SDF Shadows) [Slides] [Video]
[Project 1 out: Percentage Closer Soft Shadows] [Description]
3 Jan 17 No Class (MLK Jr. Day)
Jan 19 Shadow and Environment Mapping (Student Presentation)
Cabral et al., Reflection Space Image Based Rendering, SIGGRAPH 1999
Dimitrov et al., Cascaded Shadow Maps, 2007
Lokovic and Veach, Deep Shadow Maps, SIGGRAPH 2000
Annen et al., Real-Time, All-Frequency Shadows in Dynamic Scenes, SIGGRAPH 2008
4 Jan 24 Precomputed Radiance Transfer (Basis Functions and Spherical Harmonics) [Slides] [Video]
Jan 26 Precomputed Radiance Transfer (Method and Wavelets) [Slides] [Video]
5 Jan 31 Precomputed Radiance Transfer (Student Presentation)
Sloan et al., Clustered Principal Components for Precomputed Radiance Transfer, SIGGRAPH 2003
Wang et al., All-Frequency Rendering of Dynamic, Spatially-Varying Reflectance, SIGGRAPH Asia 2009
Ren et al., Global Illumination with Radiance Regression Functions, SIGGRAPH 2013
[Project 2 out: Precomputed Radiance Transfer] [Description]
Feb 2 Interactive Global Illumination Techniques (Reflective Shadow Maps, VXGI) [Slides] [Video]
6 Feb 7 Interactive Global Illumination Techniques (Ambient Occlusion, Screen Space Reflection) [Slides] [Video]
Feb 9 Interactive Global Illumination Techniques (Student Presentation) [Additional Slides]
Ritschel et al., Approximating Dynamic Global Illumination in Image Space, I3D 2009
Anton Kaplanyan, Light Propagation Volumes, SIGGRAPH 2009 Course
Ritschel et al., Imperfect Shadow Maps for Efficient Computation of Indirect Illumination, SIGGRAPH Asia 2008
Majercik et al., Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields, JCGT 2019
[Project 3 out: Global Illumination Techniques] [Description]
7 Feb 14 Real-time Shading and Appearance (Microfacet Model and Multiple Bounce Approximation) [Slides] [Video]
Feb 16 Real-time Shading and Appearance (Disney principled BRDF, Split Sum, NPR) [Slides] [Video]
8 Feb 21 No Class (Presidents' Day)
Feb 23 Real-Time Shading and Appearance (Student Presentation)
d'Eon et al., Efficient Rendering of Human Skin, EGSR 2007
Heitz et al., Real-Time Polygonal-Light Shading with Linearly Transformed Cosines, SIGGRAPH 2016
Rousiers et al., Real-Time Rough Refraction, I3D 2011
[Project 4 out: Kulla-Conty Multiple-Bounce BRDF] [Description]
9 Feb 28 Real-Time Ray Tracing (Motion Vector and Temporal Accumulation) [Slides] [Video]
Mar 2 Real-Time Ray Tracing (Joint Bilateral Filtering and SVGF) [Slides]
[Project 5 out: Real-Time Ray Tracing] [Description]
10 Mar 7 Real-Time Ray Tracing (Student Presentation)
NVIDIA, Deep Learning Super Sampling 2.0, GTC 2020
Chaitanya et al., Interactive Reconstruction of Monte Carlo Image Sequences
using a Recurrent Denoising Autoencoder
[Project 5 out: Real-Time Ray Tracing]
Mar 9 No Class

Programming and Collaboration Policy

Programming projects are to be implemented individually. 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 (encouraged). 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. Note also that in group assignments (if any), you are collectively responsible for your project; both you and your partner can be held liable (just as you both receive credit for) the resulting assignment. 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 asked to contact the DSP office to arrange the necessary academic accommodations.