Overview
This course provides a hands-on introduction to the fundamentals of computer graphics. You will learn concepts including ray tracing, texturing, and camera models. In the practical assignments, you will apply this knowledge to build your own ray tracer. The course culminates in a rendering competition, where students model a 3D scene and render it with their own renderer, competing to see who can make best artistic use of the tools they have built.
Instructors
Teaching Assistants
Tutors
Pre-requisites
- Programming experience (assignments use C++)
- Basic knowledge of linear algebra and analysis
Organization
The course (lectures & tutorials) will be organized via CMS: https://cms.sic.saarland/cg_25/
We will be using the university’s GitLab for the practical assignments. A SIC account is mandatory for that, so please make sure you can log into yours.
Format
The first half of the course (until the winter break) follows a non-standard format:
- The course is split into blocks, each lasting two weeks
- Each block comprises
- two lectures (Monday and Thursday of the first week),
- a practical assignment (graded),
- a reading assignment, and
- a mini-test (mandatory but ungraded)
- During the first week of each block:
- Monday, 10:15: lecture, practical assignments released
- Thursday, 08:30: lecture, reading assignment released
- Throughout the week: code interviews with your tutor about the previous assignment (mandatory)
- During the second week of each block:
- Monday, 10:15: mini-test, solutions for test and previous assignment are discussed, office hour
- Thursday, 08:30: office hour
- Sunday, 23:59: practical assignment deadline
In the second half, starting January, there are lectures every Monday and Thursday.
Precise dates can be found in the schedule below and in the calendar on CMS.
Tutorials, code interviews, and office hours
Each student is assigned a tutor who will be responsible for them during the course. However, instead of traditional tutorials,
- Tutors sit down individually with each group (for 10-15 min every second week) to discuss their practical assignments in a code interview. Attendance is mandatory.
- Multiple office hours are offered for further questions in the second week.
Practical Assignments
Assignments are posted on CMS every second week. Assignments are mandatory (every single one must be submitted) and part of the final grade. We allow students to submit in groups of two. These groups must be fixed before submitting the first assignment and cannot be changed later on.
Both team members are expected to fully understand all code. If, during code interviews, the tutor repeatedly notices that a student does not understand the submitted solution, further measures might be taken to ensure fair grading.
Mini-tests
Mandatory mini-tests are held every second Monday in the lecture hall. While these tests are not graded, students must submit a solution for every test to be admitted to the exam. In justified cases, we allow students to submit test solutions via email to their tutor instead. Justifications include medical reasons and schedule conflicts. Students must notify their tutor and provide proof at least one week before the test.
Project and rendering competition
After the last practical assignment, you will work on the project and rendering competition. Both are mandatory and graded.
In the project, you extend your renderer by additional features of your choice. By implementing more features than required, you can obtain bonus points (with a soft-max limit).
With the rendering competition, you will show that not only do you know how to write a renderer, but also how to use it to render an appealing, original scene. The competition will be graded based on completeness (creation of an original scene, rendering it, presentation via a webpage that describes the idea and methodology) and bonus points will be awarded to the top-ranking submissions (based on artistic merit as judged by a jury).
Grading
The final grade is computed as follows:
- 20% Project (minimum 50% to pass)
- 30% Assignments (minimum 50% to pass)
- 50% Final exam (minimum 50% to pass) Bonus points: You can improve your overall grade by implementing additional features for bonus points.
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 | ||
---|---|---|---|---|
13.10.2025 |
No lecture (semester kickoff) |
|||
16.10.2025 |
Introduction Pascal Grittmann |
|||
20.10.2025 |
Ray tracing I Pascal Grittmann |
|||
23.10.2025 |
Ray tracing II Pascal Grittmann |
|||
27.10.2025 |
Mini test |
|||
30.10.2025 |
Office hour |
|||
03.11.2025 |
The rendering equation Pascal Grittmann |
|||
06.11.2025 |
Monte Carlo path tracing Pascal Grittmann |
|||
10.11.2026 |
Mini test |
|||
13.11.2025 |
Office hour |
|||
17.11.2025 |
Vertex attributes and textures Pascal Grittmann |
|||
20.11.2025 |
Material models Pascal Grittmann |
|||
24.11.2025 |
Mini test |
|||
27.11.2025 |
Office hour |
|||
01.12.2025 |
Color and HDR Pascal Grittmann |
|||
04.12.2025 |
Volume rendering Pascal Grittmann |
|||
08.12.2025 |
Mini test |
|||
11.12.2025 |
Office hour |
|||
15.12.2025 |
Rendering competition Pascal Grittmann |
|||
18.12.2025 |
No lecture |
|||
22.12.2025 |
No lecture Break |
|||
25.12.2025 |
No lecture Break |
|||
29.12.2025 |
No lecture Break |
|||
01.12.2026 |
No lecture Break |
|||
05.01.2026 |
No lecture |
|||
08.01.2026 |
Splines Philipp Slusallek |
|||
12.01.2026 |
Subdivision surfaces Philipp Slusallek |
|||
15.01.2026 |
Camera Transformation and Clipping Philipp Slusallek |
|||
19.01.2026 |
Rasterization Philipp Slusallek |
|||
22.01.2026 |
Graphics APIs Philipp Slusallek |
|||
26.01.2026 |
Shader Programming Philipp Slusallek |
|||
29.01.2026 |
Shadow Alogrithms Philipp Slusallek |
|||
02.02.2026 |
Rendering competition awards Pascal Grittmann & Philipp Slusallek |
|||
05.02.2026 |
No lecture |
|||
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:
- On fast Construction of SAH-based Bounding Volume Hierarchies, Ingo Wald
- Two-Level Grids for Ray Tracing on GPUs, Javor Kalojanov, Markus Billeter, Philipp Slusallek
- GPU Ray-tracing using Irregular Grids, Arsène Pérard-Gayot, Javor Kalojanov, Philipp Slusallek
- Dynamic Ray Stream Traversal, Rasmus Barringer, Tomas Akenine Möller
- A nice blog entry by Josh Barczak
- A series of blog posts by Arsène Pérard-Gayot.
Possible Follow-Ups
SoPra, HiWi-Jobs, Diploma, Bachelor and Master’s Thesis