VU, 186.101, 2021S

Bernhard Kerbl, Adam Celarek


Lecture Announcements

Registration and course data is available on the TISS site.


  • 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 modeling.
There will be many bonus tasks for interested students. We will also have a performance and a scene/bonus-task competition.

Schedule, Contents and Lecture Slides

The course will be purely virtual, with slides published here and lecture videos on YouTube.

  1. Introduction, Organization and how to take this course
  2. Light Physics (Adam)
    Radiance, irradiance, solid angle, white furnace test
  3. Rendering Equation (Adam)
    Recursive formulation of the rendering equation
  4. Monte Carlo Integration (Adam)
    How to estimate the solution of highly dimensional integrals
  5. Path Tracing 1 (Bernhard)
    The basic algorithm using Russian Roulette
  6. Monte Carlo Sampling (Bernhard)
    Hemisphere sampling, Importance sampling, transform sampling distributions
  7. Path Tracing 2 (Adam)
    Completing our renderer, HDR, tone-mapping, measuring error
  8. Multiple Importance Sampling (Adam)
    How to reduce Variance of the estimator
  9. Next Event Estimation (NEE) (Bernhard)
    Also called direct light sampling
  10. Acceleration Structures for Ray Tracing (Bernhard)
    BVH, K-d tree, surface area heuristic (SAH)
  11. Materials (Bernhard)
    B*DFs, Fresnel, Snell's law, Dielectrics, microfacet model

The schedule changed from the 2020S iteration (virtual as well), and therefore we will redo the slides and lectures. You can take a look at the old slides and videos.

Assignments and Grading

We use our own internal Gitlab submission system. Our philosophy in this course will be to make it possible to pass with a good grade within the workload of 3 ECTS (75 hours), while also allowing for very in depth exploration of the topic (that is, you could probably spend months of full-time work if you are very motivated ;).

We plan 4 assignments throughout the semester. Each of them will be graded in an submission talk. We will also have an oral exam, which will be optional in case you have enough bonus points.

  1. Framework Download and Setup: Get to Know Nori
    Preliminary due: 28 March
  2. Monte Carlo 1: Ambient Occlusion, Direct Light Sampling, Simple Path Tracing
    Preliminary due: 18 April
  3. Monte Carlo 2: Cosine Sampling, Sample Warping, MIS
    Preliminary due: 2 May
  4. Ray Tracing Acceleration Data Structures and Performance Competition
    Preliminary due: 23 May
  5. Materials and Scene/Bonus-Task Competition
    Preliminary due: 27 June
Winning one of the contests won't give you a better grade, but we will definitely take note and might find you an interesting project or master thesis topic.

Further Reading