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
22 October
29 October
5 November
12 November canceled (Děkanský sportovní den / Dean’s Sports Day)
19 November
26 November
3 December
10 December
17 December canceled (conference in Hong Kong)
7 January

Practicals / labs content

Date

Topic

Slides & Notes

30 September canceled (before the 1st lecture)
7 October Introduction to Blender + Homework assignment 1
Math exercises (radiometry):
solid angle, spherical coordinate system, integrals in spherical coordinates, differential solid angle, differential area
Whiteboard (at the end)
14 October Introduction to Nori
Math exercises (Monte Carlo):
probability distribution function, cumulative distribution function, random sampling, computing integrals
21 October Assignment 1 deadline + student presentations
28 October canceled (bank holidays)
4 November Homework assignment “Monte Carlo Sampling and Ambient Occlusion”
11 November
18 November
25 November
2 December
9 December
16 December
6 January

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 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.5 (“Programming exercises”)

In the set of Assignments 2, 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: