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.
The course will be purely virtual, with slides published here and lecture videos on YouTube.
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.