UCSD CSE 272: Advanced Image Synthesis

Images we will render during the course. 3D data courtesy of Wenzel Jakob, Jonas Pilo, and Bernhard Vogl.

Course Description

This course discusses modern physically-based rendering techniques. Given a 3D scene description including the geometry, how surfaces and volumes reflect lights, the light source emission profiles, and the pose of a camera, physically-based rendering simulates the interactions between photons, surfaces, and volumes and produces an image. Physically-based rendering is central to computer graphics, and is becoming ever more crucial to domains outside of graphics such as computer vision, computational imaging, machine learning, and robotics, with applications in autonomous driving, training artificial intelligence agents, biomedical imaging, photography, and more. We will go through how we model the appearance of scenes (e.g., how do hair reflect lights? do objects change appearance when they become wet?), how we simulate light transport of surfaces and volumes efficiently, and how we invert the light transport process via differentiation. Throughout the course, we will build a renderer with the capability of rendering layered materials, hair, volumes, caustics, with modern rendering algorithms. If you have taken CSE 168 and want more -- you should come! If not, no worries, we will try to cover the basics at the beginning.

Required Knowledge

Basic calculus and C++ programming. Go through the ray tracing in one weekend series if you are not familiar with the topic.


Instructor: Tzu-Mao Li
TA: Yan Xiao (yax010-at-ucsd.edu)
Lectures: Monday/Wednesday/Friday 11:00am-11:50am Pacific time. For the whole January, the class will be on Zoom. See the Canvas site for the Zoom link.
Instructor office hour: Friday 2pm in my Zoom. See the Canvas site for the link.
TA office hour: Thursday 1pm in his Zoom. See the Canvas site for the link.
We will do most of the online discussions on the Discord channel. Please see the Canvas site for the channel link.


There will be 3 programming homeworks and 1 final project, each 25%.
Late penalty: score * clamp(1 - (seconds passed after midnight of the deadline day) / (86400*7), 0, 1)
We will use the time on Canvas to determine how many seconds have passed.

Homeworks and Projects

The homeworks involve quite a bit of programming and can be tough for inexperienced. Start early and ask questions! Many of them will be based on the lajolla renderer.
Homework 0 (not graded): Introduction to the lajolla Renderer
Homework 1 (25%): Disney Principled BSDF (out 1/10, due 1/31)
Homework 2 (25%): Volumetric Path Tracing (out 1/24, due 2/14)
Homework 3 (25%): Caustic Design (TBD) (out 2/7, due 2/28)
Final Project (25%): Rendering Competition (due 3/18)

For the final project, we will take inspiration from Stanford's CS 348b's rendering competition: the goal is to render an image by extending lajolla (or your own renderer!). It will be graded by both artistic values and technical sophistication. You only need to achieve one of them (though it would be great if you achieve both!).

For people interested in inverse rendering: the final project can also involve using rendering techniques for recovering appearance or geometry -- then you can render an image of the object you reconstruct.

Collaboration policy: for the homeworks, you need to do it yourself (you are free to discuss between peers). For the final project, you can have a team maximum of 2 people.

Schedule (tentative)

1/3/2021 (Mon): Introduction (Homework 0 out) [slides] [recordings]

Why rendering? Course overview. Walkthrough of a simple path tracer.

1/5/2021 (Wed): Walkthrough of the lajolla renderer [slides] [recordings]

Cosine-weighted hemisphere sampling. Next event estimation. Multiple importance sampling. Textures. Shading normals.

1/7/2021 (Fri): Bidirectional Reflectance/Scattering Distribution Functions [slides] [recordings]

Measured BRDFs, Half-vector parametrization. Microfacet theory. Refractive microfacets. Fresnel equation.

1/10/2021 (Mon): Uber BSDF (Homework 1 out) [slides] [recordings]

Disney BRDF and BSDF. Autodesk/Arnold Stanford Surface

1/12/2021 (Wed): Normal map filtering [slides] [recordings]

LEAN mapping. LEADR mapping. Glints rendering.

1/14/2021 (Fri): Layered BSDFs [slides] [recordings]

Adding Equation. Statistical operators. Position-free BSDF.

1/17/2021 (Mon): Martin Luther King's day, no class this day

1/19/2021 (Wed): Hair and Cloth [slides] [recordings]

Marschner. d'Eon. Chiang. Ply-based Fabrics.

1/21/2021 (Fri): Wave-based BSDFs [slides] [recordings]

Wave optics. Iridescence, Diffraction shaders. Diffractive microfacets. Wigner BSDF. Wave-based fiber.

1/24/2021 (Mon): Participating media (Homework 2 out)

Radiative tranfer equation. Transmittance. Phase function. Rayleigh scattering.

1/26/2021 (Wed): Transmittance estimation and free-flight sampling

Ray marching. Delta tracking. Ratio tracking. Null-scattering formulation.

1/28/2021 (Fri): Microflake theory

Microflakes. SGGX. Unifying microflakes and microfacets. Hybrid level-of-details models

1/31/2021 (Mon): Diffusion approximation

BSSRDF. Granular media rendering
Check out Eugene d'Eon's A Hitchhiker's Guide to Multiple Scattering if you are really interested in this.

2/2/2021 (Wed): Single-scattering specialization (Homework 1 due)

Equi-angular sampling. Volumetric shadow. Analytical solutions. Product sampling

2/4/2021 (Fri): Differentiable rendering 1

Automatic differentiation. Edge sampling. Reynolds transport theorem. Warped area sampling.

2/7/2021 (Mon): Differentiable rendering 2 (Homework 3 out)

Reparametrization vs. differentiation. Constant memory backpropagation

2/9/2021 (Wed): Stratification

Jittered sampling. Blue-noise sampling. Low-discrepancy sequences.

2/11/2021 (Fri): Path-space and bidirectional path tracing

Eric Veach

2/14/2021 (Mon): Photon mapping and its combination with bidirectional path tracing (Homework 2 due)

Photon mapping. UPS/VCM. UPBP.

2/16/2021 (Wed): Metropolis light transport

Markov chain Monte Carlo. Kelemen-style and Veach-style. Langevin/Hamiltonian Monte Carlo.

2/18/2021 (Fri): no class this day

2/21/2021 (Mon): Rendering specular light paths

MCMC-based and Monte Carlo-based specular light path rendering. Hierarchical pruning

2/23/2021 (Wed): Multiple importance sampling++

Optimal multiple importance sampling. Control varaites persepctive. Variance-aware MIS. MIS compensation.

2/25/2021 (Fri): Many-light rendering

Virtual point lights. Lightcuts. Matrix sampling. Data-driven approach. ReSTIR.

2/28/2021 (Mon): Production rendering (Homework 3 due)

Micropolygons. Ptex. Programmable shaders. Texture caches. Case studies: PRman, Manuka, Hyperion, and Arnold.

3/2/2021 (Wed): GPU architectures

Rasterization/ray tracing. Architecture design. Coherency. Parallelism.

3/4/2021 (Fri): Nanite/real-time rendering

Streaming. Real-time rasterization.

3/7/2021 (Mon): Closed-form methods

Linearly transformed cosines and importance sampling. Spherical pivot transformed distribution. Closed-form spherical harmonics integrals.

3/9/2021 (Wed): Guest lecture by Steve Rotenberg

Topics on wave optics simulation.

3/11/2021 (Fri): 100 weird tricks for your renderers

Alias table. TaggedPointer. Roughness-based attenuation. Monte Carlo debiasing. Split-sum trick. etc.

3/18/2021 (Fri): final project due