CS291A: Real-Time High Quality Rendering

Winter 2019

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.

Prerequisite: Computer Science 180 (Computer Graphics or equivalent)


Lingqi Yan
Email: lingqi@cs.ucsb.edu
Office hour: Tuesdays 1PM - 2PM, HFH 5102

Teaching Assistants

No TA for this class
Sign up on Piazza for self-motivated discussion


Monday and Wednesday
3:30PM - 5:30PM
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", 3rd or later edition. (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.
NVIDIA, OptiX Documentation, 5.0 or later edition. (PDF version available in OptiX SDK.)

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 one paper presentation and four projects. There will be no exams.

The paper presentation is performed solely by yourself. You will read a research paper, make some slides, and present to the entire class. It takes about 30 minutes, including intermittent interruptions for questions and discussions. The paper presentation takes 15% of your final grade.

The projects include a warm-up project (Project 0) and a final project. You will work on the projects individually, except for the final project, where a group of two is encouraged. The final project takes 25% of your final grade, and 20% for other projects.

All projects are due by 11:59PM Pacific Time 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 to me via email. Detailed submission guidelines are in the project descriptions.

Course Syllabus

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

Week Date Topics
1 Jan 7 Introduction and Overview [PDF]
[Project 0 out: A Real-time Object Viewer] [PDF]
Jan 9 Recap: Blinn-Phong Reflectance Model, Graphics Pipeline, 
Shading Languages, Rendering Equation [PDF]
Reading: Real-Time Rendering Chapter 2 (The Graphics Rendering Pipeline) and Chapter 3 (The Graphics Processing Unit)
2 Jan 14 Shadow and Environment Mapping [PDF]
Jan 16 Shadow and Environment Mapping (cont.) [PDF]
[Project 1 out: Percentage Closer Soft Shadows] [PDF]
3 Jan 21 No Class (MLK Jr. Day)
Jan 23 Shadow and Environment Mapping (Student Presentation)
Cabral et al., Reflection Space Image Based Rendering, SIGGRAPH 1999
Lokovic and Veach, Deep Shadow Maps, SIGGRAPH 2000
Annen et al., Real-Time, All-Frequency Shadows in Dynamic Scenes, SIGGRAPH 2008
[Project 0 due]
4 Jan 28 Precomputed Radiance Transfer [PDF]
Reading: Precomputation-Based Rendering by Prof. Ravi Ramamoorthi [PDF]
Jan 30 Precomputed Radiance Transfer (cont.) [PDF]
5 Feb 4 No Class (travel)
Feb 6 Sampling and Reconstruction [PDF]
6 Feb 11 Real-Time Ray Tracing [PDF]
[Project 2 out: Choose between Precomputed Radiance Transfer and Real-Time Ray Tracing] [PDF]
[Final Project Proposal out] [PDF]
[Project 1 due]
Feb 13 Sampling and Reconstruction, Real-Time Ray Tracing (Student Presentation)
Li et al., SURE-based Optimization for Adaptive Sampling and Reconstruction, SIGGRAPH Asia 2012
Mehta et al., Axis-Aligned Filtering for Interactive Physically-Based Diffuse Indirect Lighting, SIGGRAPH 2013
Chaitanya et al., Interactive Reconstruction of MC Image Sequences using a Recurrent Denoising Autoencoder, SIGGRAPH 2017
7 Feb 18 No Class (Presidents' Day)
Feb 20 Interactive Global Illumination Techniques (Reflection, Ambient Occlusion and Global Illumination) [EXT. REF 1] [EXT. REF 2]
[Final Project Proposal due]
8 Feb 25 Interactive Global Illumination Techniques (Student Presentation)
Ritschel et al., Approximating Dynamic Global Illumination in Image Space, I3D 2009
Ritschel et al., Imperfect Shadow Maps for Efficient Computation of Indirect Illumination, SIGGRAPH Asia 2008
Hašan et al., Virtual Spherical Lights for Many-Light Rendering of Glossy Scenes, SIGGRAPH Asia 2009
Feb 27 Image-based Rendering and Light Fields [PDF]
[Project 2 due Mar 1]
[Final Project Milestone due Mar 1]
9 Mar 4 Image-based Rendering and Light Fields (Student Presentation)
Wood et al., Surface Light Fields for 3D Photography, SIGGRAPH 2000
Mehta et al., Filtering Environment Illumination for Interactive Physically-Based Rendering in Mixed Reality, EGSR 2015
Ng et al., Light Field Photography with a Hand-held Plenoptic Camera, CSTR 2005
Mar 6 Recent Work / Misc (Student Presentation)
d'Eon et al., Efficient Rendering of Human Skin, EGSR 2007
Xu et al., A Practical Algorithm for Rendering Interreflections with All-frequency BRDFs, TOG 2014
Rousiers et al., Real-Time Rough Refraction, I3D 2011
10 Mar 11 No Class (Preparation for Final)
Mar 13 Final Project Showcase
[Final Project Demo due]
[Final Project Writeup due Mar 15]

Programming and Collaboration Policy

Programming projects are to be implemented individually (except for the final project which can [and highly recommended] be done in groups of two) 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 (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 (final project if you choose to do it in a group of two), 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.