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

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, volumes, and more with modern rendering algorithms.
If you have taken CSE 168 and want more -- you should come!
If not, make sure you are familiar with the content in the Required Knowledge.

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

We will do most of the online discussions on Piazza.

There will be 2 programming homeworks (30% each) and 1 final project (40%).

Late penalty: score * clamp(1 - (seconds passed after midnight of the deadline day) / (86400*7), 0, 1) (no late submission for the final project)

We will use the time on Canvas to determine how many seconds have passed.

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

Next event estimation. Multiple importance sampling. Triangle intersection. Textures. Shading normals. Environment maps.

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

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

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

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

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

Automatic differentiation. Edge sampling. Reynolds transport theorem.

Jittered sampling. Blue-noise sampling. Frequency analysis.

Van Der Corput sequence. Halton/Hammersley sequences. Owen scrambling. Rank-1 lattice. Sobol' sequences.

Photon mapping. Bias-variance analysis of density estimation. UPS/VCM. UPBP.

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

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

Bekaert. Local virtual lights. ReSTIR/ReSTIR GI.

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

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

Streaming. Real-time rasterization.

Alias table. TaggedPointer. Monte Carlo debiasing. Cosine-weighted hemisphere sampling without tangents.