Advanced 3D Graphics for Movies and Games

Brief Description

Advanced course in computer graphics with the emphasis on image synthesis. The course covers methods for physically-based realistic rendering used for special effects in movie production, computer animation, architectural and product visualizations etc. Specifically, we start off by briefly covering some of the math and physics behind light transport. We then give a detailed treatment of the industry-standard Monte Carlo methods for light transport simulation, such as path tracing, photon mapping etc. We also cover some of the more advanced techniques such as bidirectional path tracing.

Note: This class loosely follows up on Photorealistic Graphics (NPGR004) and is aimed mostly at students with a deeper interest in realistic rendering methods.

Course information 2021/2022

Lectures: Wednesdays, 9:00 – 10:30, room S1 Contact: Alexander Wilkie
Practicals: Tuesdays, 12:20 – 13:50, room SW2 Contact: Tomáš Iser, Lucia Tódová

Lecture and practicals content and assignments for 2021/2022 will be updated throughout the semester.

Lecture content

Note: You can download the Zoom recordings from the lectures in SIS in the lecture details (you need to be logged in!)

Lecture topic Slides & notes Auxiliary materials
Organization, Intro Lecture: pdf | pptx / pdf | pptx
Radiometry Lecture: pdf | pptx Petr Olšák – dOmega (in Czech)
Petr Olšák – Radiometric units (in Czech)
Wikipedie – Radiometric units
Light reflection, BRDF Lecture: pdf | pptx Scratchpixel – Mathematics of shading
Scratchpixel – Introduction to shading
Scratchpixel – The Phong model, Reflection models and BRDF
Fabrizio Duroni – How to calculate reflection vector
Monte Carlo methods, Direct illumination calculation Lecture: pdf | pptx
Monte Carlo methods II, Image-based lighting Lecture: pdf | pptx
Combined estimators & Multiple Importance Sampling Lecture: pdf | pptx
Rendering equation and its solution Lecture: pdf | pptx
Path tracing Lecture: pdf | pptx
Quasi-Monte Carlo methods Lecture: pdf | pptx My favorite samples – SIGGRAPH Course 2019
Rand() considered harmful
Constructing quasi-random blue noise sequences(blue noise vs. low-discrepancy, extra supplementary material)
Unreasonable effectiveness of quasirandom sequences(extra supplementary material)
Volumetric light transport and participating media rendering Lecture: pdf | pptx
Monte Carlo methods for physically based volume rendering”, SIGGRAPH 2018 course
Steve Marschner: “Multiple Scattering
Note that the pseudocode in the above material is buggy: In the Kajiya-style path tracing, homogeneous volume, version 1.0, in the function directScatteredEst(x, ω) a multiplication by sigma_s/sigma_t (i.e. scattering albedo) is missing.
Steve Marschner: “Volumetric path tracing
Patrick Harrington: Henyey-Greenstein phase function – CDF inversion, Rayleigh scattering phase function
Walter Lewin: For the Love of Physics: Catchy demonstration of Mie and Rayleigh scattering
Bidirectional path tracing Lecture: pdf | pptx
Photon mapping Lecture: pdf | pptx
Approximate global illumination computation Lecture: pdf | pptx

Practicals schedule

5.10. Intro, Assignment 0 (→ slides in .pdf) 23.11. Voluntary consultation
12.10. Math exercises (→ .mp4 video recording in SIS) 30.11. Evaluating assignment 2, Assignment 3
19.10. Evaluating assignment 0 7.12. Voluntary consultation
26.10. Assignment 1 14.12. Evaluating assignment 3, Assignment 4
2.11. Voluntary consultation 21.12. Voluntary consultation
9.11. Evaluating assignment 1, Math exercises 28.12. Christmas
16.11. Assignment 2 4.1. Final evaluation

Practicals assigments


  • HDRImageTools: A tool for viewing and comparing HDR images.
  • Reference images: Your code should produce the same images (except for uniform noise).
  • Skeleton of the renderer. Implement your renderer into the PathTracer class. The classes AreaLight, PointLight and BackgroundLight is where you should put the functionality of the respective light sources. The Material class is where you should put the BRDF implementation.

Assigment 1: Direct illumination calculation through explicit light source sampling (5 pts)

The goal of the first assignment is to start building infrastructure for global illumination calculation, specifically to implement the evaluation of the BRDF and the classes representing various light sources. These components will be tested on the problem of calculating direct illumination due to point and area light sources using a Monte Carlo estimator based on explicit light source sampling. You will be required to show that your solution converges to this reference solution. (The difference image should only consist of uniform noise. Even better, use color-coded positive/negative differences in HDRImageTools.)


Isotropic point light
Diffuse surfaces

Isotropic point light
Glossy surfaces

Large area light
Diffuse surfaces

Large area light
Glossy surfaces

Small area light
Diffuse surfaces

Small area light
Glossy surfaces

Const. environment map
Diffuse surfaces

Const. environment map
Glossy surfaces




Altogether you can get up to 5 points for this assignment, they are redistributed for its individual parts. I recommend working in this very order, always first testing only the diffuse BRDF component and only then moving to the glossy version.

Area light source 2 points
Environment map with a constant emission 3 points

Assignment 2: Direct illumination estimator based on randomized direction sampling (8 points)

The goal is to implement an estimator of direct illumination based on randomized sampling of directions. To get this done, you will need to implement a) sampling of random directions from a uniform distribution on a hemisphere, and b) sampling of random directions proportional to the BRDF (importance sampling). You will then use this functionality to implement the estimator itself. Note that the estimator only works for area light sources and environment maps, but not for point lights (the latter cannot be hit by a ray with a randomly chosen direction). Show that an estimator based on BRDF importance sampling is more efficient than an estimator based on uniform hemisphere sampling. Show that the solution converges to the same reference results as in Assignment 1.


You may receive up to 8 points for this assignment.

Uniform hemisphere sampling 4 points
BRDF importance sampling 4 points

Assignment 3: Combined estimator for direct illumination (10 points)

Use Multiple Importance Sampling with the balance heuristic for direct illumination calculation. Combine estimators implemented in Assignments 1 and 2 (i.e. explicit sampling of positions on the light source and BRDF importance sampling). Show that the solution is more robust than either of the two estimators in the mixture. Show that the solution converges to the same reference results as in Assignments 1 and 2.


You may receive up to 10 points for this assignment.


Assignment 4: Path tracer with a combined estimator for direct illumination calculation (22 points)

In this assignment, you will build on the infrastructure from the previous assignments to implement the following methods:

  • Path tracing (15 points). Implement a path tracer with direct illumination calculation based on a) implicit “collecting” of emitted radiance on the path vertices, and b) explitict light source sampling (next event estimation). Use Russian roulette for path termination with the survival probability based on the the surface reflectance. Show that both methods converge to the same solution and compare their efficiency. I suggest starting off by implementing the implicit “collecting” of emitted radiance and testing it in the large area source scene where it should perform fairly well. Once this works, you may move on to the explicit light source sampling. Reference images with global illumination are shown below.
  • The use of MIS for direct illumination calculation in the path tracer (7 points). A condition for receiving credit for this part of the assignment is an efficient implementation: each secondary ray in the path tracer should be used both as a sample of indirect illumination and as a sample of the “implicit” direct illumination calculation strategy.


You may receive up to 22 points for this assignment.

Path tracing 15 points
MIS for direct illumination calculation in a path tracer 7 points

Congratulations! By finishing this assignment, you have built a rendering core of state-of-the-art production renderers such as Corona or Arnold.



Course information for the previous academic years: