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
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 (assignments use C++)
- Basic knowledge of linear algebra and analysis
Organization
The course (lectures & tutorials) will be organized via CMS.
Tutorials
Each student is assigned a tutor who will be responsible for them during the course. Each tutor hosts a weekly two-hour session answering questions about the next assignments and providing insight into the previous one. During those tutorials, there will be mandatory code presentations of your work in the previous assignments. This is done to ensure that you have worked on the assignments yourself. So attendance to some of the tutorial sessions will be mandatory
Assignments
Assignment sheets are posted on CMS. 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.
Theoretical assignments
Solutions to theoretical assignments must be submitted via CMS as a PDF file. We encourage you to write your solution in Typst (or LaTeX) to avoid loosing points due to readability issues, but we also accept scans of your handwritten solutions.
Programming assignments
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. Both team members are expected to fully understand all code. This will be enforced via code interviews.
Grading
The final grade is computed as follows:
- 15% Rendering Competition
- 35% 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 |
---|
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