Main Content
Image Synthesis (Summer Term 2024)
Lecturer: Prof. Dr. Thorsten Thormählen
Module name: CS 681
Language of lecture: English
This module will not be offered in the summer term 2025 due to a planned research sabbatical.
Computer-generated images are nowadays used in a variety of applications. Some applications (such as in the production of images in the film industry, advertising, or medicine) have typically very high visual quality requirements. The lecture Image Synthesis covers methods that allow creating photo-realistic images of virtual scenes. This requires detailed modeling and representation of the 3D scene. Furthermore, the propagation of light in the scene must be simulated using global illumination models, which is computationally expensive. However, the calculations can be easily parallelized, so many computing units can work together to produce an image. Today's graphics cards (GPUs) have many parallel processing units as well as special ray tracing acceleration hardware. The lecture covers technologies, which allow efficient computing and convenient programming of these units.
Qualification objectives
The lecture presents methods that enable the participants to create computer-generated images of high visual quality. This includes topics such as: Modeling a dynamic virtual 3D scene, free-form curves and surfaces, methods for global illumination, or the rendering of volumetric data. Another objective of the course is to give participants an understanding of the architecture of current graphics cards, such that the graphics card is recognized as an extremely powerful stream processor with multiple parallel processing units that can also be used for complex calculations outside the realm of computer graphics. Parallel programming of the graphics card is trained by practical examples. In addition, the course aims at improving the overall ability of the participants to perform scientific work, solve problems, and communicate.
Prerequisites
The course requires a basic understanding of data structures, algorithms, and object-oriented programming. Furthermore, fundamental techniques of graphic programming are required, as taught in the Graphics Programming module. The first 6 episodes of the Video Tutorials on Shader Programming (see below) can serve as a refresher for the basics.
Organization
The course consists of a lecture (4 hours per week) and exercises (2 hours per week).
Lecture: Tues 10h15 - 11h45, Thu 10h15 - 11h45, MZG HS III
Exercise: Thu 12h15 - 13h45, MZG HS III
Tutor: Sebastian Lieb
Course Structure
- Introduction
- Ray Tracing
- Light Transport
- CUDA
- 3D modeling
- Volume rendering
Lecture Slides
The lecture slides are available as HTML5 websites. It is recommended to use a modern browser (such as Google Chrome, Mozilla Firefox). In Google Chrome, the browser's print function can be used to create a PDF file of the slides.
There are two versions of the slides: internal and external. The internal version comprises additional slides that are only available to the students of the University of Marburg. The login will be announced in the lecture.
Part | Chapter | Link |
1. Introduction | 1.1 Introduction and Organization | external, internal |
2. Ray Tracing Basics | 2.1 Vulkan Ray Tracing Pipeline | external, internal |
2.2 Intersection Shader | external, internal | |
3. Light Transport | 3.1 Rendering Equation | external, internal |
3.2 Path Tracing | external, internal | |
3.3 PBR Materials | external, internal | |
3.4 Image-based Lighting | external, internal | |
4. CUDA | 4.1 Introduction to CUDA | |
4.2 Programming with CUDA | ||
4.3 Efficient parallel algorithms |
Exercise Class
Registration for the exercise class and submission of the assignments is done via the ILIAS learning platform.
Rendering Competition
At the end of the course, participants take part in a rendering competition. The task is to use the own ray tracer to generate a realistic image. The winners will receive a certificate and a large format print of their image.
Video Tutorials on Shader Programming
In the winter semester 2021 we started recording videos on shader programming. The first videos in this series can be used to refresh the material covered in the Graphics Programming lecture. Some later videos in this series are also directly related to the content of this lecture.
- What are Shaders? A Hands-on Introduction [Shaders Monthly #1, 11/2021]
- Perspective Projection in GLSL [Shaders Monthly #2, 12/2021]
- OpenGL Modelview Matrix and 3D Transformations [Shaders Monthly #3, 01/2022]
- Blinn Phong Shading: Theory and Implementation [Shaders Monthly #4, 02/2022]
- Texture Mapping in GLSL [Shaders Monthly #5, 03/2022]
- What are Mipmaps? Texture Filtering in GLSL [Shaders Monthly #6, 04/2022]
- Procedural Textures: A Practical Introduction [Shaders Monthly #7, 05/2022]
- Procedural Noise: Value and Gradient Noise in GLSL [Shaders Monthly #8, 06/2022]
- Microfacet BRDF: Theory and Implementation of Basic PBR Materials [Shaders Monthly #9, 07/2022]
- Importance Sampling: Image-based Lighting of a Lambertian Diffuse BRDF [Shaders Monthly #10, 09/2022]
- Image-based Lighting (IBL) of PBR Materials [Shaders Monthly #11, 01/2023]
- Halton Low-Discrepancy Sequence [Shaders Monthly #12, 5/2023]
- Sampling of Environment Maps for Image-based Lighting [Shaders Monthly #13, 9/2023]
- Deferred Shading [Shaders Monthly #14, 3/2024]