CS292F: Real-Time High Quality Rendering

Winter 2023

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/CS280: Introduction to Computer Graphics, or equivalent, 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! Specifically, we will use OpenGL to write program programs/shaders, and you should already know how to use it from a introductory graphics course. Otherwise, you need to quickly learn how to use it by yourself.)


Lingqi Yan
Email: lingqi@cs.ucsb.edu
Office hour: Mondays 11:00AM - 11:45AM PT, HFH 2119

Teaching Assistants

No TA for this class


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

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.


The course website for winter 2023 is still being constructed. Anything below this note is from the previous iteration. They are subject to change.

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 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 25% of your final grade.

The 3 projects are CHOSEN BY YOURSELF from 4 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 25% 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
Week Date Topics
1 Jan 9 Introduction and Overview [Slides]
Jan 11 Recap: Blinn-Phong Reflectance Model, Graphics Pipeline, Shading Languages, Rendering Equation [Slides] [Video]
[Project 0 out: A Real-time Object Viewer] [Description]
2 Jan 16 No Class (MLK Jr. Day)
Jan 18 Soft Shadow Techniques 1 (Shadow Mapping and Percentage Closer Filtering) [Slides]
3 Jan 23 Soft Shadow Techniques 2 (Variance Soft Shadow Mapping and SDF Shadows) [Slides]
[Project 1 out: Percentage Closer Soft Shadows] [Description]
Jan 25 No Class (SIGGRAPH deadline)
4 Jan 30 Interactive Global Illumination Techniques (Reflective Shadow Maps, VXGI) [Slides]
Feb 1 Interactive Global Illumination Techniques (Ambient Occlusion, Screen Space Reflection) [Slides]
[Project 2 out: Global Illumination Techniques] [Description]
5 Feb 6 Soft Shadow Techniques (Student Presentation)
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
Lauritzen et al., Virtual Shadow Maps in Fortnite Battle Royale, 2023
Feb 8 Interactive Global Illumination Techniques (Student Presentation)
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
6 Feb 13 Real-time Shading and Appearance (Microfacet Model and Multiple Bounce Approximation) [Slides]
Feb 15 Real-time Shading and Appearance (Multiple Bounce Approximation Cont., Split Sum) [Slides]
[Project 3 out: Kulla-Conty Multiple-Bounce BRDF] [Description]
7 Feb 20 No Class (Presidents' Day)
Feb 22 Real-time Shading and Appearance (Subsurface Scattering, Hair, Non-Photorealistic Rendering) [Slides]
8 Feb 27 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
Pelzer et al., Rendering Countless Blades of Waving Grass, GPU Gems
Mar 1 Real-Time Ray Tracing (Motion Vector and Temporal Accumulation) [Slides]
9 Mar 6 Real-Time Ray Tracing (Joint Bilateral Filtering and SVGF) [Slides]
[Project 4 out: Real-Time Ray Tracing] [Description]
Mar 8 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
Guo et al., ExtraNet: Real-time Extrapolated Rendering for Low-latency Temporal Supersampling, SIGGRAPH Asia 2021
Zeng et al., Temporally Reliable Motion Vectors for Real-time Ray Tracing, Eurographics 2021
10 Mar 13 Modern Industrial Solutions to Real-Time Rendering
Mar 15 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.