## Details

## Hot Links

## 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. And finally, we will teach a bit about HDR, tone mapping, measuring error, and other rendering pipeline details.

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. Uni Wien has 6 ECTS, while TU Wien has 3 ECTS. Hence, there will be an additional lecture slot. The content offered there is optional for TU Wien students, it will not be included in the exam. But hey, it's free knowledge :).

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. If you get enough points, you can skip the exam.

Uni Wien students will use our submission system, our TUWEL / Moodle, but will have larger minimums on the assignments. TU Wien students can decide to go for a larger project and get additional credits via this course. Please go to the first lecture for more details.

## Schedule, Contents and Lecture Slides

The lecture slides are linked below the table. You can also look at the lecture from three years ago on YouTube. **However, the lecture changed**, we have more and different content now. Looking at the YouTube videos might not be sufficient. We'll also provide recordings from last year via TUWEL. They cover all topics, but are not of particularly high recording quality.

The first lecture (Introduction) is for TU Wien and Uni Wien, students. On all other weeks, Thursdays are optional for TU Wien.

Date | Tuesday | Thursday | |
---|---|---|---|

05-Mar | 07-Mar | Introduction (AC) | |

12-Mar | 14-Mar | Light and Rendering Equation (AC) | Comprehensive overview (MK) |

19-Mar | 21-Mar | Monte Carlo Integration (AC) | Light (Radiometry / Photometry) (MK) |

Deadline | 24-Mar | Assignment 0: Setting up Nori | |

26-Mar | 28-Mar | University Holiday | |

02-Apr | 04-Apr | University Holiday | |

09-Apr | 11-Apr | Nori Introduction / FAQ (DB) | Image Pipeline (MK) |

16-Apr | 18-Apr | Path Tracing Basics (AC) | Biased Rendering Algorithms (MK) |

Deadline | 23-Apr | Assignment 1: Path Tracing | |

23-Apr | 25-Apr | Spatial Acceleration Structures (AC) | Biased Rendering Algorithms (MK) |

30-Apr | 02-May | Importance Sampling (JCR) | Radiosity (MK) |

07-May | 09-May | Materials (LL) | University Holiday |

Deadline | 14-May | Assignment 2: BVH Building & Traversal (Performance Competition) | |

14-May | 16-May | MIS / Next Event Estimation (AC) | Radiosity (MK) |

21-May | 23-May | University Holiday | Reflectance Function (MK) |

28-May | 30-May | Accessories (AC) | University Holiday |

Deadline | 02-Jun | Assignment 3: Materials and Importance Sampling | |

04-Jun | 06-Jun | Participating Media (AU) | Reflectance Function (MK) |

11-Jun | 13-Jun | Bi-directional PT, Metropolis Light Transport (AC) | Sampling (Fourier Transform, Aliasing vs. Noise) (MK) |

18-Jun | 20-Jun | Differentiable Rendering (LL) | Uniform / Non-uniform Sampling (MK) |

25-Jun | 27-Jun | ||

Deadline | 30-Sep | Final Project | |

Deadline | 30-Sep | Final Exam |

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

## Policy on Academic Honesty

**DO NOT CHEAT!**

All the individual labs, homeworks and other assignments are meant to be done by each student on their own. If we think cheating might have occurred, this might have very negative consequences for you. Citing the Studienpräses (in German): "Ein 'Erschleichen' liegt vor, wenn eine fremde Leistung als Eigenleistung dargestellt wird (z.B. Textteile von anderen Personen ohne entsprechende Kenntlichmachung übernommen worden sind). [...] Die gesamte PI-LV ist nicht zu beurteilen und ein 'X' in i3v mit dem entsprechenden Vermerk 'geschummelt / erschlichen' zu erfassen."

Discussion about labs is encouraged, but please do your own work (unless the task is specifically designed as a group project). Near duplicate assignments will be considered cheating unless the assignment was restrictive enough to justify such similarities in independent work. Just think of it that way: cheating impedes learning and having fun. Please also note that opportunity makes thieves: It is your responsibility to protect your work and to ensure that it is not turned in by anyone else.

We will make use of automated plagiarism and code checking tools.

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 ('X' with 'geschummelt / erschlichen'). 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 will lead to an 'X':

- 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

- Previous rendering course from this university,

by Károly Zsolnai-Fehér. - Robust Monte Carlo Methods for Light Transport Simulation,

PhD thesis by Eric Veach,*one of the most**influential**works in this domain.* - Physically Based Rendering, Third Edition: From Theory To Implementation,

Matt Pharr, Wenzel Jakob, and Greg Humphreys,*The bible of physically based rendering (referred to as PBRT).* - Course on Monte-Carlo Methods in Global Illumination, by L. Szirmay-Kalos
*A free course script that gives a detailed explanation of the mathematical foundations of Global Illumination.*