Visualization and GraphicsInteractionDept ICSFaculty of ScienceUU

https://www.projects.science.uu.nl/ics-vig/Site/TopBar

INFOMAGR Advanced Graphics

Academic year 2025/26 -- period 2

Navigation

Extensions and Exceptions
Topics
Schedule
Practical Assignments
Grading
Literature

Format and Organization

Overview

The master course Advanced Graphics addresses advanced topics in 3D computer graphics. The focus of the course is Physically Based rendering of 3D scenes. The course has two main focus areas: Rendering Algorithms and Making Rendering More Efficient. Efficiency will be sought through Acceleration Structure Construction and Traversal and Variance Reduction (rather than low level optimization).

We explore various acceleration structures that help to run the ray tracing algorithm in real-time on commodity hardware. We will see that a well-built Bounding Volume Hierarchy (BVH) provides both flexibility and speed, for static and dynamic scenes.

The course also introduces the path tracing algorithm, and related light transport theory. We investigate various methods to improve the efficiency of the algorithm using probability theory. We will see that efficient path tracing can yield interactive frame rates.

Finally we discuss general-purpose Graphics Processing Unit (GPU) programming to run ray tracing and path tracing on the GPU. We will explore recent research in high performance stochastic rendering.

Prerequisites

This course builds on all of the prerequisites of the MSc Game and Media Technology programme. In particular:

  • Mathematics: integral and differential calculus, linear algebra, and probability theory.
  • Data structures and algorithms: tree data structures, complexity of algorithms, big-O notation.
  • Computer graphics: bachelor-level knowledge of computer graphics, specifically experience developing a Whitted-style ray tracer from scratch. If you don't have this prior graphics experience, you should familiarize yourself before the practical assignments start by working through a tutorial such as the Ray Tracing in One Weekend series.
  • Programming: fluency in an appropriate language such as C# or C++. For optimal performance and certain low level aspects, C++ is recommended. It would require a lot of additional time to familiarize yourself with C++ during the course. Other appropriate programming languages may be agreed with the lecturer on an individual basis.
  • Good to have, but not absolutely required: basic experience with graphics APIs (e.g. OpenGL / DirectX / Vulkan). No specific graphics API is required for the assignments.

Intended Learning Outcomes (ILOs)

Students will:

  1. Understand the physical basis of light transport simulation
  2. Have knowledge of the main ray tracing-based rendering methods
  3. Have knowledge of acceleration structures for ray-scene intersection and how to construct an efficient BVH for static and dynamic scenes
  4. Have knowledge of the characteristics of GPUs related to ray tracing and be aware of algorithms that specifically target these processors
  5. Understand Monte Carlo and variance reduction techniques, specifically the application of probability density functions in the context of light transport
  6. Have knowledge of state-of-the-art developments in the field of physically based rendering

Links

  • Teams: discussion, collaboration, support, slides, assignments, and lecture streams and recordings
  • Brightspace: practical assignment submissions, grades, and feedback
  • Course catalog: official (centrally managed) course information
  • This page: 'static' course information

Lecturer

Peter Vangorp (p.vangorp@uu.nl)

Lectures

  • Lectures and labs are in BBG 201 - but check the schedule below or MyTimetable / the MyUU app for changes
  • Two lectures per week: Tuesday 10:00 - 11:45, Thursday 13:15 - 15:00
  • Lecturer-supervised discussion / support labs: Tuesday 9:00 - 9:45 (optional) and 12:00 - 12:45, Thursday 15:15 - 17:00

Lectures will be streamed live on Teams for students who cannot be physically on campus. Lecture recordings will be made available for later reference. Slides will be made available in advance.

Assessment

  • Practical assignment 1 (ILOs 2 and 3)
  • Practical assignment 2 (ILOs 2 and 3, and others depending on your specific project choice)
  • Final Exam (ILOs 1-6)

Extensions and Exceptions

If you need to skip or postpone a deadline or an exam for any reason (e.g., health, family), please notify your study advisor, cc: the course coordinator (p.vangorp@uu.nl), as soon as possible. No sensitive details are needed in this initial email. If necessary, the study advisor will discuss details with you in confidence.

You are not automatically eligible for a retake if you miss a deadline or exam without notifying your study advisor and course coordinator.


Topics

Ray Tracing Path Tracing Efficiency

Whitted-style Ray Tracing

  • Recap
  • Beer's Law

Acceleration Structures

  • Bounding Volume Hierarchy
  • Efficient Construction and Traversal
  • Octree, kD-tree, BSP
  • Dynamic: Top-Level Acceleration Structure

Light Transport

  • The Rendering Equation

Monte Carlo Algorithms

  • Distribution Ray Tracing
  • Path Tracing

Variance Reduction

  • Stratification
  • Importance Sampling
  • Next Event Estimation

GPU implementations

  • Streaming Algorithms
  • Wavefront Path Tracing

Variance Reduction

  • Multiple Importance Sampling
  • Resampled Importance Sampling
  • Bidirectional Path Tracing
  • Photon Mapping

Image Postprocessing

  • Filtering Techniques

Tentative Schedule

Week Date Location Lecture Labs Practical
46 Tue Nov 11
10:00-11:45
BBG 201 Introduction
Thu Nov 13
13:15-15:00
BBG 201 Whitted-style ray tracing
47 Tue Nov 18
10:00-11:45
BBG 201 Acceleration structures 9:00-9:45 (optional)
12:00-12:45
Assignment 1:
Acceleration structures
Thu Nov 20
13:15-15:00
BBG 201 Bounding Volume Hierarchy (BVH) 15:15-17:00
48 Tue Nov 25
10:00-11:45
BBG 201 Light transport 9:00-9:45 (optional)
12:00-12:45
Thu Nov 27
13:15-15:00
BBG 201 Path tracing 15:15-17:00
49 Tue Dec 2
10:00-11:45
BBG 201 Variance reduction (1) 9:00-9:45 (optional)
12:00-12:45
Thu Dec 4 No lecture
(lecturer unavailable, finish assignment 1)
Deadline:
Mon Dec 8, 17:00
50 Tue Dec 9
10:00-11:45
BBG 201 Variance reduction (2) 9:00-9:45 (optional)
12:00-12:45
Assignment 2:
Recent research
Thu Dec 11
13:15-15:00
BBG 201 GPU ray tracing 15:15-17:00
51 Tue Dec 16
10:00-11:45
BBG 201 Various 9:00-9:45 (optional)
12:00-12:45
Thu Dec 18 No lecture
(early Winter break)
52, 1 Winter break
2 Tue Jan 6
10:00-11:45
BBG 201 Bidirectional algorithms 9:00-9:45 (optional)
12:00-12:45
Thu Jan 8
13:15-15:00
BBG 201 Probability theory 15:15-17:00
3 Tue Jan 13
10:00-11:45
BBG 201 Resampling 9:00-9:45 (optional)
12:00-12:45
Thu Jan 15
13:15-15:00
BBG 201 Filtering 15:15-17:00
4 Tue Jan 20
10:00-11:45
BBG 201 No lecture
(finish assignment 2)
9:00-12:45 Deadline:
Wed Jan 21, 17:00
Thu Jan 22
13:15-15:00
BBG 201 Exam preparation 15:15-17:00
5 Thu Jan 29
13:30-15:30
Olympos HAL3 Final Exam
Retake Assignment
Deadline:
Mon Mar 30, 17:00
16 Retake Exam

Practical Assignments

This course has two practical assignments that take the form of small projects, developing parts of an advanced ray tracing-based renderer. You may work on the practical assignments in groups of two students. Only if you cannot find a partner, you may do the practical assignments by yourself, but the expected magnitude of the project remains the same. The practical assignments have as outcomes a ray tracing-based renderer with a relevant advanced feature, which make great additions to your portfolio.

  1. Acceleration structures: You will (implement and) compare the performance of at least two acceleration structures in a ray tracing-based renderer.
  2. Recent research: You will implement a recent research paper in a ray tracing-based renderer. You are free to choose your specific focus from a list of suggested papers.

For both practical assignments you may start from a template or an existing open-source renderer. One possible C++ template is available on GitHub. Other good open-source renderers include PBRT (C++) or Mitsuba (C++ core with Python bindings). Other interesting renderers: Lighthouse 2, VoxelWorld template.

Implementing a renderer from scratch is also allowed, but it's a considerable effort that will not contribute towards the grade. It will take precious time away from the graded parts of the assignment.


Grading

In order to pass the course, you must participate in all assessments to receive a grade:

  • Practical assignment 1 grade: P1
  • Practical assignment 2 grade: P2
  • Exam grade: E
  • Weighted average practical grade: P = (P1 + 2*P2) / 3
  • Final grade: F = (P + E) / 2

In order to pass the course, you must also meet these additional requirements:

  • P >= 4.5
  • E >= 5.5
  • F >= 5.5

Retakes

There will be an opportunity for a retake exam or one retake assignment. In order to qualify, you must meet all assignment deadlines and participate in the exam (or obtain an extension or exception), and you must have a high-enough-but-non-passing final grade: 4.0 <= F < 6.0. The retake exam or assignment grade replaces the corresponding grade in the calculation of the final grade.

Transfers from a previous year

If you are repeating this course it may be possible to transfer only your previous practical assignment grades to this academic year. Contact the lecturer to request this. You must always redo the exam.


Literature

Books (available for free online)

Papers and Blogs

Additional materials will be mentioned in the lecture slides. The university WiFi gives you free access to many pay-walled publications.