Rendering

The course homepage is work in progress, expect changes!

This course page describes the lecture of Sommersemester 2026. See list of other semesters.

Properties

  • Semester hours: 2.0
  • Credits: 3.0
  • Type: VU Lecture and Exercise

Aim of the Course

This course will teach you how to write a physically correct and unbiased renderer based on the path tracing algorithm.

In the beginning, you will learn about the physics and math of light transport. Closely connected is the rendering equation, a high-dimensional integral describing the equilibrium of photons in a scene. We will then show you how to compute such integrals using Monte Carlo methods and to apply this new knowledge to implement the recursive path-tracing algorithm. At this point, you will have an understanding of how rendering works, but a lot remains to be learned: The asymptotic complexity of ray-tracing can be reduced by using acceleration data structures, enabling the program to deal with scenes that consist of more than just a dozen triangles. Materials like plastic, glass, metal, paint, and skin have properties that need special considerations during implementation. We will also cover HDR, tone mapping, measuring error, and other rendering pipeline details. On top of all that, you will learn about differentiable rendering, which can be used to optimise scene parameters like light sources and geometry.

In addition to path tracing, we cover some other biased and unbiased rendering algorithms like photon mapping and radiosity. 

The exercises will give you an understanding of the principles of Monte Carlo Integration, the rendering equation, optimization techniques, and material modelling. There will be many bonus tasks for interested students. We will also have a performance and a scene/bonus-task competition.

Administrative stuff

Registration and course data is available on the TISS site.

Communication will happen through TUWEL (all more or less official stuff) and Discord (optional). There is no excuse for not reading TUWEL announcements, and you should receive notification mails. Accounts for Uni Wien students will be created in time.

This year we will again hold the lecture together with Uni Wien. Before this 2026, Uni Wien had an 6 ECTS lecture and TU Wien a 3 ECTS one, with optional +3 ECTS tasks. Starting 2026S both lectures are worth 6 ECTS, and there are additional topics.

There will be several assignments, where you will gradually complete your own renderer. You can do the minimum or decide to implement more, learn more, and hopefully enjoy more. Uni Wien students will use our submission system, our TUWEL / Moodle, 

Please go to the first lecture for more details.

Schedule, Contents and Lecture Slides (WIP!)

The lecture slides are linked below the table. You can also look at the lecture from several years ago on YouTube. However, the lecture changed, we have more and different content now. Looking at the YouTube videos is not sufficient.

DateTuesdayThursday
3-Mar5-MarIntroduction (AC) + Light (AC)Overview + Radiometry Basics (MK)
10-Mar12-MarRendering Equation (AC)Image Pipeline (MK)
17-Mar19-MarMonte Carlo Integration (AC)Framework Introduction / FAQ (YE)
Deadline23-MarAssignment 0: Setting up Nori
24-Mar26-MarPath Tracing Basics (AC)Biased Rendering Algorithms (MK)
31-Mar2-AprUniversity Holiday
7-Apr10-AprUniversity Holiday
Deadline13-AprAssignment 1: Path Tracing
14-Apr16-AprSpatial Acceleration Structures (AC)Biased Rendering Algorithms (MK)
21-Apr23-AprImportance Sampling (JCR?)Uniform / Non-uniform Sampling (MK)
28-Apr30-AprMaterials, MIS / Next Event Estimation (AC)Reflectance Function (MK)
5-May7-MayAccessories (AC)Radiosity (MK)
Deadline11-MayAssignment 2: BVH Building & Traversal (Performance Competition)
12-May14-MayPerformance competition: results and discussion
Differentiable Rendering 1 (AC)
University Holiday
19-May21-MayDifferentiable Rendering 2 (LL)Recap (MK)
26-May28-MayUniversity HolidayFinal (MK)
Deadline8-JunAssignment 3: Materials and Importance Sampling
2-Jun4-JunParticipating Media (AU)University Holiday
9-Jun11-JunBi-directional PT, Metropolis Light Transport (maybe) 
16-Jun18-Jun  
Deadline22-JunFinal Project
23-Jun25-JunPresentation of the final project, coffee and cake
(compulsory attendance)
 
Deadline30-SepFinal Exam

Assignments and a subset of the lecture slides is public (here), all slides are available on TUWEL.

Policy on LLMs and academic honesty

We recommend not to use them for the programming tasks. Yes they make your life easier, but no, you will not learn as much. In particular, they will likely work for basic tasks, but maybe fail on the more advanced stuff. And the thing is, if you don't do the basic stuff yourself, you will not know how to develop and debug the advanced stuff.

Also, DO NOT CHEAT!

It's perfectly fine to discuss the assignments and help each other (ideally on discord / TUWEL), but please don't post or copy any code. Similarly to LLMs, it'll likely work, but it'll destroy your learning experience. And, if you get caught cheating, this will be noted in you transcript of records.

If source code (to enhance) or other material from the WWW is used, it should be acknowledged and a priori permission must be sought. Taking source code (or text/math) from a peer, the WWW, or a book to complete a lab makes you culpable of plagiarism! Please note, that it is of course also not okay to copy large parts or even the whole code from somewhere else, even though you acknowledged it. This is like copying and pasting a book, putting your name on the cover, and hoping that nobody will find the fine-prints saying that it is actually from somebody else. If unclear, please talk to us before the submission. Justifications in hindsight are not possible.

Some examples of things that are not okay and considered cheating:

  • Give code (or text/math) to another student
  • Give screenshot of code (or text/math) to another student
  • Copy code (or text/math) from somebody else
  • Copy code (or text/math) from the WWW without our explicit permission
  • Create code (or text/math) for others
  • Let other people create code (or text/math) for yourself

Further Reading