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.

Course information 2025/2026

Lectures: Wednesdays, 12:20 – 13:50, room S8 Contact: Tomáš Iser
Practicals: Tuesdays, 14:00 – 15:30, room SU2 Contact: Tomáš Iser, Darryl Gouder

Please note: For the 2025/2026 course, we have prepared new content and completely new homeworks. Be cautious when looking at the archived materials from previous years.

Lecture content

Slides and course notes will be updated troughout the semester.

Date

Topic

Slides & Notes

1 October Introduction to the course
Basic explanation of terminology such as rasterization, ray casting, ray tracing, path tracing, ray marching, meshes, solids, surfaces, volumes, signed distance fields, shading, etc.
Slides with notes
8 October Reflection equation and radiometry
Photon model and wave model, power (flux), radiant intensity, irradiance, radiance, inverse square law, Lambert’s cosine law
Slides with notes
15 October Numerical integration
Numerical quadrature, Monte Carlo, properties of a Monte Carlo estimator, random sampling
(more math exercises and proofs during the labs on 14 October)
Slides with notes
Blackboard photos:
(1), (2)
22 October Monte Carlo in rendering and importance sampling
Using Monte Carlo in ray tracing, random sampling, importance sampling; example of importance sampling a diffuse and specular lobe of a BRDF
Slides with notes
29 October Monte Carlo in rendering and importance sampling — continued
Importance sampling an environment map and area lights; a bit on control variates and stratification
Multiple importance sampling (MIS)
Motivation of MIS, formula, balance heuristic, example with BRDF/envmap
MIS slides
5 November Plan:
Multiple importance sampling (MIS) — continued

Example with BRDF/area lights, examples of other heuristics (cutoff, power, maximum)
Building a path tracer
Constructing the rendering equation, the operator form, Neumann series, recursion, implementation with a for loop (with a fixed path length → bias)
12 November canceled (Děkanský sportovní den / Dean’s Sports Day)
19 November Plan:
Building a path tracer — continued
Implementation with a while loop (using Russian roulette → unbiased), the principles of: 1) adjoint-driven Russian roulette & splitting, 2) path guiding, 3) next event estimation (NEE), NEE with multiple light sources (“many-light methods”)
26 November Plan:
Volumetric light transport and participating media
3 December Plan:
Bidirectional path tracing (BDPT), photon mapping (PM)
10 December Plan:
Radiance fields, Gaussian splatting
17 December canceled (conference in Hong Kong)
7 January Plan:
Inverse and differentiable rendering

Practicals / labs content

Date

Topic

Slides & Notes

30 September canceled (before the 1st lecture)
7 October Introduction to Blender
Homework assignment 1
(10 points + max 3 bonus points)
Math exercises (radiometry):
solid angle, spherical coordinate system, integrals in spherical coordinates, differential solid angle, differential area
Whiteboard photos:
(1)
14 October Introduction to random sampling
Math exercises:
expected value, variance, probability distribution function, cumulative distribution function, normalization, random sampling in 1D, multidimensional random sampling
Whiteboard photos:
(1), (2), (3), (4), (5)
21 October Assignment 1 deadline + student presentations (5 minutes / student)
28 October canceled (bank holidays)
4 November Homework assignment 2.1 “Monte Carlo Sampling and Ambient Occlusion” (10 points + max 2 bonus points)
11 November Online consultation with Darryl
18 November Assignment 2.1 deadline
Homework assignment 2.2 “Distribution and Whitted-style Ray Tracing”
(10 points + max 2 bonus points)
25 November Online consultation with Darryl (*time zone difference)
2 December Assignment 2.2 deadline
Homework assignment 2.3 “Path Tracing, Microfacet Models, and Multiple Importance Sampling”
(*time zone difference) (10 points + max 2.5 bonus points)
9 December Online consultation with Darryl (*time zone difference)
16 December Online consultation with Darryl (*time zone difference)
6 January Assignment 2.3 deadline

Assignment 1 (“Creative exercise”)

Deadline: 21 October 2025 14:00

In this course, we focus on writing algorithms for photorealistic rendering. But what use is it to know an algorithm if you cannot even create your own 3D scene? That is why our first assignment is and has traditionally been to create and render a 3D scene.

If you are not familiar with any 3D editing and rendering software, I recommend to use Blender, which is free and comes with a built-in path tracer called Cycles. Students can use any other 3D editing software (e.g., Autodesk 3ds Max) and any other renderer which uses path tracing (e.g., Autodesk Arnold). Please do not use renderers that are primarily based on rasterization, such as Unreal or Unity.

Your goal is to create and render a 3D scene and satisfy the following requirements:

  • The scene must use at least 6 very different materials
    (e.g., glass, plastic, wood, concrete, liquid, fabric, metal)
  • At least one of the materials must have subsurface scattering
  • The scene must use at least the following light sources:
    • Environment map / HDRI
    • Area light (e.g., a rectangle)
  • You have to render the scene multiple times, split into the following components:
    • Direct vs. indirect illumination
    • Diffuse vs. specular (or glossy) reflections
  • You must demonstrate the use of denoising:
    • Render the scene once without denoising, with a very low sample count to get a noisy render
    • Render the scene once without denoising, with a very high sample count to get a smooth, converged render
    • Render the scene once with a very low sample count and with denoising enabled

Prepare a presentation (5 minutes) with the images and describe what we can see on them. Also explain your motivation behind the scene that you modeled.

You can use free resources that you download on the internet, such as textures, environment maps, meshes, and so on. You cannot download the entire scene though as the point of the exercise is for you to try to at least insert and transform the objects into a scene, apply materials on them, position a camera, etc.

This is an individual exercise and you should not work in a team.

Assignments 2.1 – 2.3 (“Programming exercises”)

In the set of Assignments 2.1 – 2.3, you will write C++ code to perform Monte Carlo ray tracing and path tracing. With the kind permission of Wenzel Jakob from EPFL in Switzerland, we will use the Nori framework and the Nori exercises in our course. That way you will learn how a codebase of a full renderer looks and how a path tracer actually works when implemented in C++.

More details coming soon.

Archive

Course information for the previous academic years: