Overview
This course provides a hands-on introduction to the fundamentals of computer graphics, with a focus on rendering. 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 math knowledge (What is a vector? What is an integral?)
Organization
The course (lectures & tutorials) will be organized via CMS: https://cms.sic.saarland/cg_2627/
We will be using the CS department’s GitLab for the practical assignments. A SIC account is mandatory for that, so please make sure you can log into yours.
Format
The course 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 (passing all test required),
- a theoretical assignment (mandatory but ungraded),
- a colloquium sheet (mandatory but ungraded)
- a reading assignment
- During the first week of each block:
- Monday, 10:15: lecture, assignments released
- Thursday, 08:30: lecture, reading assignment released
- Throughout the week: colloquia with your tutor about the previous assignments (mandatory, must be passed)
- Throughout the week: Office Hours
- During the second week of each block:
- Throughout the week: Office Hours
- Sunday, 23:59: deadline for all submissions
Precise dates can be found in the calendar on CMS.
Assignments and teams
At the beginning of each block, we release a practical and a theoretical assignment sheet on CMS. The exception is the rendering competition which will be the practical assignment for multiple blocks. That is, some blocks only feature a theoretical sheet.
Students can work on these assignments in teams of two. Teams must be registered on CMS at the beginning of the course and remain fixed throughout. Each team is assigned a tutor who will be responsible for them during the course.
Solutions to practical assignments are pushed to GitLab, solutions to theory exercises are uploaded to CMS.
To be admitted to the exam, students must pass all tests for all practical assignments. Additionally, they must demonstrate in the colloquia that they understand the submitted code and have worked on the theoretical exercises.
Colloquia
Colloquia take place in the week after each assignment submission. They are mandatory to attend and must be passed to be admitted to the exam.
In the colloquium, two teams of students (i.e., up to 4 students in total) meet with their tutor for 20 minutes. To pass the colloquium, the student must demonstrate that they fully understand every line of code submitted by their team, and show that they have worked on the theoretical exercises diligently. Both students in a team are expected to understand all code.
The first failed colloquium can be repeated once (with the TA or lecturer present). Students who fail the repeat attempt, or fail multiple colloquia, are not admitted to the exam.
Office hours
Multiple office hours will be offered during both weeks of a block. Times will be announced on the CMS timetable.
Students are encouraged to attend the office hours to clarify questions about the assignments, get help with technical issues or debugging, or to ask general questions about course materials.
Practical Assignments
During the lecture they will guide you through the fun parts of building your own renderer. They will come with a testsuite and passing all tests is a strict requirement for exam admission. The submission is done through the CS department’s GitLab.
Project and rendering competition
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. As part of your competition entry, you will also implement a feature of your choice (e.g., an additional light effect, material model, or performance improvement). This feature should be picked such that it benefits your competition entry in a meaningful way.
Bonus points will be awarded to the top-ranking submissions (based on artistic merit as judged by a jury).
Defense
You will present your competition entry and accompanying feature(s) in a 20 min presentation (per team of up to two students) at the end of the course.
Grading
The final grade is computed as follows:
- 100% Final exam (minimum 50% to pass)
Bonus points
You can improve your overall grade by submitting an outstanding entry to the rendering competition.
Additionally, we award a bonus towards the final grade to students who demonstrated exceptional performance throughout the course. This is measured by multiple criteria:
- Improving the performance of your implementation.
- Implementing additional features beyond the mandatory one. We prefer quality over quantity: One excellently implemented, documented, and validated feature is worth more than ten half-hearted implementations.
- Communication
- Outstanding performance in the colloquia
- Great answers to questions on the forum (sharing LLM output is not considered a great answer)
- Validation
- Excellent tests for your feature(s)
- Submitting useful new tests for the assignments
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 |
|---|
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
HiWi-Jobs, RIS, Bachelor and Master’s Thesis
