Overview

This course provides the theoretical and practical foundations for computer graphics. It gives a wide overview of topics, techniques, and approaches used in various aspects of computer graphics with a focus on image synthesis and rendering, including texturing, shading, aliasing, sampling, and many more.

After introducing the two basic algorithms for image synthesis, ray tracing and rasterization, it discusses the physical foundations of ray tracing in greater depth. As part of the practical exercises, the students incrementally build their own ray tracing system, which they will then use to generate a high-quality rendering for the end-of-term rendering competition.

Additionally, on the discretion of the course organizers, an additional BVH speed competition may be held for bonus points.

Instructors

Teaching Assistants

Tutors

Niklas Mennig
Adarsh Djeacoumar
Kevin Raj
Amin Parchami

Language

All lectures and course materials are given in English

Tutoring sessions are also given in English, although some tutors may be able to help you in another language at their own discretion.

Pre-requisites

  • Programming experience with C++
  • Basic knowledge of linear algebra and analysis

Organisation

The course (lectures & tutorials) will be organized using this team in Microsoft Teams. Lectures are given in hybrid format. We encourage students to attend the lectures in person, but a stream over Teams will be provided for students unable to attend. Recordings of the lectures are made available in the files tab in the General channel, where you can find the “Recordings” folder.

Tutorials

Each student is assigned a tutor which will be responsible for them during the course. Each tutor hosts a weekly one-hour session answering questions about the next assignments and providing insight into the previous one. The tutorial sessions will be hosted in person at our chair.

Assignments

This course contains a practical commponent in the form of assignments. The assignments are mandatory for passing the course. You may group up with another student for solving the assignments. The assignments will be posted under the course schedule. They include a mix of theoretical and programming exercises.

Theoretical assignments

The paper copies for the theoretical parts of the assignments will be collected at the beginning of the lecture on the due date. You can also send the scans of your paper copy by mail to your tutor if your are unable to attend the lecture.

Programming assignments

We will be using the university’s GitLab for the programming parts, for which you will need a SIC account. The code submitted for the programming part of the assignments is required to reproduce the provided reference images, and the submission ought to include the mandatory generated images. The submission should also contain a creative image show-casing all extra-credit features that have been implemented. The projects are expected to compile and work out of the box on the machines in the CIP-pool students’ lab in order to give the tutors a guarantee that the code will run on machines that both them and the students have access to.

Grading

  • 10% Rendering Competition
  • 20% Mid-term exam (minimum 50% to pass)
  • 30% Assignments
  • 40% Final exam (minimum 50% to pass)

Course Schedule

All electronic documents for this lecture are made available exclusively for your studies and must not be forwarded, reproduced, or used in other documents without consent. Individual figures may originate from copyrighted sources even when not explicitly designated as such.

Date Lecture - Instructor Resources
24.10.2022 (no lecture)
27.10.2022 Introduction
31.10.2022 Introduction to Ray Tracing
03.11.2022 Spatial Index Structures I
07.11.2022 Spatial Index Structures II
10.11.2022 Transformations
14.11.2022 (no lecture)
17.11.2022 Light Transport
21.11.2022 Material Models
24.11.2022 (no lecture)
28.11.2022 Texturing
01.12.2022 Spectral Analysis
05.12.2022 Sampling Theory
08.12.2022 Texture Filtering and Distribution Ray Tracing
12.12.2022 Human Vision System
15.12.2022 Mid-term exam
19.12.2022 Color
(online only)
22.12.2022 Color and HDR Imaging
(online only)
🎄🎁 Christmas break 🎁🎄
02.01.2023 Splines
(online only)
05.01.2023 Subdivision Surfaces
(online only)
09.01.2023 Camera Transformation and Clipping
12.01.2023 Rasterization
16.01.2023 Graphics APIs I
19.01.2023 Graphics APIs II
23.01.2023 Shader Programming
(online only)
26.01.2023 Shadow Algorithms
30.01.2023 Volume Rendering
02.02.2023 Wrap-up and Rendering Competition Results

Rendering Competition

The Rendering Competition is a final showcase of how the ray tracing engine that was developed throughout the course can be used to render interesting images.

You can also check out the results of the previous iteration

Literature

The course does not follow a particular book, but suggested readings include:

  • Matt Pharr and Greg Humphreys, Physically Based Rendering, 3rd Edition, Morgan Kaufmann, 2016 (available online)
  • Peter Shirley, Fundamentals of Computer Graphics, 4th Edition, AK Peters, 2015 (available online)
  • John Hughes et al., Computer Graphics: Principles and Practice, 3rd Edition, Addison-Wesley, 2013
  • Andrew S. Glassner, An Introduction to Ray Tracing, 1st Edition, Morgan Kaufmann, 1989 (available online)

Some articles on acceleration structures:

Possible Follow-Ups

SoPra, HiWi-Jobs, Diploma, Bachelor and Master’s Thesis