Advanced Graphics

Universiteit Utrecht - Information and Computing Sciences

academic year 2023/24 – 2nd block

title image title image title image

Navigation

News (Archive)

Schedule

Downloads

Format & Organization

Lecture Slides

Practicals

Literature & Links

Newsback to navigation

Recent news


Nov 2:

  • Initial version of the 2023/2024 website.

Older posts will be available here.


Format and Organizationback to navigation

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).

The course starts with a recap of Whitted-style ray tracing. We then 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 provides both flexibility and speed, for static and dynamic scenes.

The second part of the course 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.

In the third part of the course we use GPGPU to run ray tracing and path tracing on the GPU. We will explore recent research in high performance stochastic rendering.


Course objectives

At the end of this course you will have detailed knowledge about the following topics:
  • physical light transport, and how to simulate this behavior in a computer program;
  • modern ray tracing based rendering algorithms;
  • high level optimizations of the ray tracing algorithm;
  • Monte Carlo integration and variance reduction;
  • GPU-specific optimizations of ray tracing algorithms.

You will have practical experience in the following topics:

  • implementation of Whitted-style ray tracing and path tracing;
  • implementation of acceleration structure construction and traversal.

You will have a reasonable grasp of several related topics:

  • distributed ray tracing;
  • bidirectional methods, including photon mapping;
  • filtering of the noisy output of a path tracer;
  • RTX, OptiX, Embree and RadeonRays;
  • SIMD and ray packet traversal.


LINKS

  • Teams: this is where you will find 'non-static' content.
  • Osiris: the official (centrally managed) schedule (note: P = P1 + 2 * P2).
  • www.cs.uu.nl: uniform course information.
  • Join us on Teams for support and collaboration.


PEOPLE

Lecturers:

Jacco Bikker (j.bikker@uu.nl)
Peter Vangorp (p.vangorp@uu.nl)


LectureS

  • Lectures and labs are always in BBG-201.
  • Two lectures per week: Tuesday 10:00 - 11:45, Thursday 13:15 - 15:00.
  • Two lecturer-supervised labs per week: Tuesday 9:00 - 10:00, Thursday 15:15 - 17:00.

Lectures will be recorded for those that cannot be physically on campus, and for later reference.

Practicals

This course has a practical project track. During this course, you will develop an interactive renderer. You may work on the project alone, or with one other student. The practical project has two milestones. The second milestone is designed to build on the first one; the outcome is a full ray tracer, which makes a great addition to your portfolio.

Final Exam

There will be one exam at the end of the block (i.e., no mid-term exam). A retake exam or retake assignment can be used to compensate some deficits (see grading section for details).


Prerequisites

  • Basic knowledge in linear algebra, calculus and probability theory, as required for the masters program. See "Elementary maths for GMT".
  • Fundamentals in algorithms and data structures.
  • Bachelor level knowledge in computer graphics is strongly recommended. Without prior graphics knowledge, you will need substantial additional time (and probably some talent).
  • Good programming skills; C# and C++ will both work, but for optimal performance and certain low level aspects, C++ is recommended. Plan for additional time if you plan to familiarize yourself with C++ during the course.
  • Good to have, but not absolutely required: basic experience with graphics programming (e.g. OpenGL / DirectX / Vulkan). Note that we will not use an API for the assignments; we'll build our own.
 

Topics

Ray Tracing

Whitted-style Ray Tracing

  • Recap
  • Beer's Law, Fresnel

Acceleration Structures

  • Octree, kD-tree, BSP
  • Bounding Volume Hierarchy
  • Efficient Construction & Traversal

Dynamic Scenes

  • The Top-Level BVH

Real-time

  • Ray Packet Traversal
 
Path Tracing

Light Transport

  • The Rendering Equation

Monte-Carlo Algorithms

  • Distributed Ray Tracing
  • Path Tracing

Variance Reduction

  • Stratification
  • Importance Sampling
  • Next Event Estimation

Interactive

  • Multi-branching BVHs
 
Efficiency

GPU implementations

  • Streaming Algorithms
  • Wavefront Path Tracing

Variance reduction

  • Multiple Importance Sampling
  • Resampled Importance Sampling
  • Bi-directional Path Tracing
  • Photon Mapping

Image Postprocessing

  • Bias
  • Filtering Techniques

Scheduleback to navigation

BLOCK 2 Schedule

Week Date Lecture / Exams Working College Practical
Lecturer
46 Tue Nov 14
10:00-11:45
Lecture 1
Introduction
    J. Bikker
Thu Nov 16
13:15-15:00
Lecture 2
Whitted Ray Tracing
    P. Vangorp
47 Tue Nov 21
10:00-11:45
Lecture 3
Light Transport / intro
Working College
Tue 9:00-10:00
  P. Vangorp
Thu Nov 23
13:15-17:00
Lecture 4
Acceleration Structures/ intro
Working College
Thu 15:15-17:00

Assignment 1:

Acceleration structures

J. Bikker
48 Tue Nov 28
10:00-11:45
Lecture 5
Path Tracing
Working College
Tue 9:00-10:00
P. Vangorp
Thu Nov 30
13:15-17:00
Lecture 6
Perfect BVHs / future work
Working College
Thu 15:15-17:00
J. Bikker
49 Tue Dec 5
10:00-11:45
Lecture 7
Variance Reduction (1)
Working College
Tue 9:00-10:00
P. Vangorp
Thu Dec 7
13:15-17:00
Lecture 8
GPU Ray Tracing (1)
Working College
Thu 15:15-17:00
J. Bikker
50 Tue Dec 12
10:00-11:45
Lecture 9
Variance Reduction (2)
Working College
Tue 9:00-10:00
Deadline:
Wed Dec 13, 17:00h
P. Vangorp
Thu Dec 14
13:15-17:00
Lecture 10
GPGPU (2), P2 topics
Working College
Thu 15:15-17:00

J. Bikker
51
Tue Dec 19
10:00-11:45
NO LECTURE

Assignment 2:

Specialize


Thu Dec 21
13:15-17:00
NO LECTURE


52,1
Christmas, New Year, Holidays

2 Tue Jan 9
10:00-11:45
Lecture 11
Various
Working College
Tue 9:00-10:00
P. Vangorp
Thu Jan 11
13:15-17:00
Lecture 12
Bidirectional
Working College
Thu 15:15-17:00
J. Bikker
3
Tue Jan 16
10:00-11:45
Lecture 13
Probability Theory
Working College
Tue 9:00-10:00
P. Vangorp
Thu Jan 18
13:15-17:00
Lecture 14
TAA & ReSTIR
Working College
Thu 15:15-17:00
J. Bikker
4
Tue Jan 23
10:00-11:45
Lecture 15
Recap
Working College
Tue 9:00-10:00
P. Vangorp
Thu Jan 25
13:15-17:00
Lecture 16
Path Guiding
  Deadline:
Wed Jan 24, 17:00h
J. Bikker

Block 2 Exam
  Thu Feb 1, 13:30 - 16:30 in OLYMPOS HAL 3

 

Downloadsback to navigation

LECTURE SLIDES and RECORDINGS

Links to lecture slides will be made available during the block.

  • Lecture 1: Introduction
  • Lecture 2: Whitted
  • Lecture 3: Light Transport
  • Lecture 4: Acceleration Structures
  • Lecture 5: Path Tracing
  • Lecture 6: The Perfect BVH
  • Lecture 7: Variance Reduction (1)
  • Lecture 8: GPGPU Ray Tracing (1)
  • Lecture 9: Variance Reduction (2)
  • Lecture 10: GPGPU Ray Tracing (2)  (updated TL;DR version)
  • Lecture 11: "Various"
  • Lecture 12: Bidirectional
  • Lecture 13: Probability Theory
  • Lecture 14: TAA, ReSTIR et al.
  • Lecture 15: Recap
  • Lecture 16: Learning GI, Exam Prep

Please find recordings for the course in Teams.

SUPPLEMENTAL MATERIALasdfds

Will be made available in Teams.


FILES

  • C/C++ coding template: on Github.
More content may be made available during the course.


RENDERERS

Lighthouse 2 can be found on GitHub.
VoxelWorld template is also available on GitHub.



Practical Assignmentsback to navigation

The course includes a software project that should be worked on in pairs. It is allowed to work on this alone, but be aware that the scope of the project is tuned for duos.

There are two milestones for this project:

  1. Interactivity: based on the theory, you will transform a basic ray tracer into an interactive renderer. The renderer is extended with basic animation support.
  2. For the final version of your project, you will be adding global illumination to the renderer. The default approach for this is a path tracer; however other options exist as well. You are free to chose your specific focus in this phase of the project, e.g. GPU rendering or advanced variance reduction.

The final grade for the software project is calculated as follows:

practical grade = (P1 + 2 * P2) / 3



Gradingback to navigation

GRADING

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

Practical grade P = (P1 + 2 * P2) / 3
Exam grade E
Final grade F = (2 * P + E) / 3

Where

P >= 4.5
E >= 4.5
F >= 5.5.

RETAKES AND REQUIREMENTS

There will be an opportunity for a retake exam or a retake assignment. In order to qualify, a grade of at least 4.0 is required in both areas (final exam, practicals). The retake exam or assignment replaces the matching exam or assignment.

IMPORTANT: you can only take the retake exam if you have both a high-enough but non-passing grade (i.e., at least 4.0 and less than 5.5).


Transfers from the previous lecture

If you are retaking this course it may be possible to transfer partial grades to this academic year. This is only possible for practical assignment grades; if you are retaking Advanced Graphics, you must retake the exam. Contact me for details.


Literature & Linksback to navigation

LITERATURE

  • T. Whitted. An Improved Illumination Model for Shaded Display. Commun. ACM, 23(6):343–349, 1980.
  • Interactive Rendering with Coherent Ray Tracing, Wald et al., 2001.
  • Large Ray Packets for Real-time Whitted Ray Tracing, Overbeck et al., 2008.
  • Fast Agglomerative Clustering for Rendering, Walter et al., 2008.
  • Heuristics for Ray Tracing using Space Subdivision, MacDonald & Booth, 1990.
  • Distributed Ray Tracing, Cook et al., 1984.
  • The Rendering Equation, Kajiya, 1986.
  • Importance Sampling for Production Rendering, pages 5-38.
  • Ray tracing on programmable graphics hardware. Purcell et al., 2002.
  • Interactive k-d tree GPU raytracing. Horn et al., 2007.
  • Understanding the Efficiency of Ray Tracing on GPUs. Aila & Laine, 2009.
  • Getting Rid of Packets - Efficient SIMD Single-Ray Traversal using Multi-branching BVHs. Wald et al., 2008.
  • Megakernels Considered Harmfull: Wavefront Path Tracing on GPUs. Laine et al., 2013.
  • Theory for Off-Specular Reflection from Roughened Surfaces. Torrance & Sparrow, 1967.

Recommended literature

Physically Based Rendering - From Theory to Implementation, Third Edition, Pharr & Humphreys. Morgan Kaufmann, 2016. ISBN-10: 9780128006450. Also available for free online: www.pbrt-book.org.

PAPERS & ONLINE MATERIALS

Additional materials will be posted here in due time.


News Archiveback to navigation

Old posts


Old posts will be moved here.