Advanced Computer Graphics - SS 2020

This course will introduce students to advanced and more complex methods and techniques of computer graphics. Some of the topics that were touched upon in the Bachelor course "Computer Graphics" will be covered in more depth. In addition, more and other topics will be covered that were not taught in the Bachelor's course. This approach will both broaden and deepen students' knowledge about the field of computer graphics.

This course is for you, if you want to acquire ...

There are no formal prerequisites, but some degree of the following skills are desirable:

  1. A little bit of experience with C/C++ ; note that you will need just "C with classes" during this course.
  2. Knowledge of the material of the Bachelor course "Computer Graphics" (if you didn't manage to attend that course, you can easily recap that material for yourself).
  3. Algorithmic thinking (and, hopefully, some pleasure when thinking about algorithms)

Some of the envisioned topics (these can change during the semester):

  1. Data structures and the theory of boundary representations (meshes);
  2. Advanced texturing methods;
  3. Generalized barycentric coordinates and parameterization of meshes;
  4. Advanced shader programming (special effects);
  5. Culling techniques (real-time rendering);
  6. Ray-tracing (photo-realistic images);
  7. Alternative object representations (modeling);
  8. Mesh processing


Starting date: 23. April, 10h ct.
We will meet at Twitch.
You can also join our Discord.


The following table contains the topics and the accompanying slides (it will be filled step-by-step).

Lecture Topics Slides Voluntary assignments Frameworks
1. Organization;
Ray-tracing 1: principle, the rendering equation, Whitted-style ray-tracing
2. Ray-tracing 2: camera models, lighting model, reflected rays, refraction, Fresnel terms, attenuation, scattering, dispersion PDF
3. Ray-tracing 3: intersection ray-polygon, intersection ray-triangle, intersection ray-box, ray-sphere intersection, ray-tracing height fields, numerical robustness PDF
4. Ray-tracing 4: limitations of Whitted-style ray-tracing, distribution raytracing: anti-aliasing, soft shadows, glossy-matte reflection, depth-of-field, motion blur PDF
5. Object representations 1: quadrics and superquadrics, implicit surfaces, root finding methods (bisection, regula falsi, Newton-Rhapson), metaballs PDF
6. Object representations 2: normals for implicit surfaces, polygonization of implicit surfaces using marching cubes, marching tetrahedra, polygonization with particle systems PDF Sheet 1 Raytracing Framework
7. Object representations 3: instancing, constructive solid geometry (raytracing and polygonization), procedurally defined fractals, implicite surfaces from point clouds PDF
8. Acceleration data structures 1: taxonomy, light buffer, beam and cone tracing, bounding volumes PDF Sheet 2 Extended Raytracing Framework
9. Acceleration data structures 2: 3D grids, mailbox technique, traversal and storage, optimal grid resolution, recursive grid, octree PDF
10. Acceleration data structures 3: kd-trees, kd-tree traversal, kd-tree construction, surface area heuristic (SAH) PDF
11. Acceleration data structures 4: efficient storage of kd-trees, Bounding volume hierarchies (BVHs), BVH traversal using p-queue, principle of construction of BVHs, median cut heuristic, plane sweep along principal axis with SAH. irregular grids (construction and ray traversal) PDF
12. Collision Detection 1: requirements, pipeline, collision matrix, broad phase, narrow phase, 3D grid, sweep and prune, temporal coherence, separating planes PDF Sheet 3
13. Collision Detection 2: hierarchical collision detection, bounding volume, BV hierarchies, k-DOPs, inner sphere trees, penetration measures PDF
14. Culling Part 1: bottlenecks in the rendering pipeline, types of culling, backface culling PDF
15. Culling Part 2: hierarchical clustered backface culling
PDF Recap Clipping
16. Culling Part 3: view frustum culling, hierarchical view frustum culling, occlusion culling, batched queries, naive wait-and-draw algorithm, multiqueries, coherent hierarchical culling (CHC++)
17. Culling Part 4: portal culling, detail culling, aggresive approximate culling.
Advanced shader techniques 1: recap of programmable pipeline and GLSL
18. Advanced shader techniques 2: procedural textures in the shader, value noise, gradient noise, simplex noise, example: procedural textures with noise, PDF
19. Advanced shader techniques 3: refractive objects, the geometry shader, simple examples, rendering furry objects with shells and fins, rendering silhouettes. PDF
20. Advanced texturing methods 1: seams, texture atlas, cube maps, polycube maps PDF
21. Advanced texturing methods 2: polycube maps, concept of environment mapping, spherical environment mapping, parabolic environment mapping, cube environment mapping, dynamic environment mapping
Procedural modeling 1: seashells
22. Procedural modeling 2: fractal terrain modeling, terrain modelling using fault lines, L-systems (D0L, parametric, stochastic), L-system for modeling rocks PDF

You can download some of the shaders that were discussed in class, plus some some very simple ones (discussed in the Bachelor course).


The following textbooks can help review the material covered in class:

Please note that the course is not based on one single textbook! Some topics might even not be covered in any current textbook! So, I'd suggest you first look at the books in the library before purchasing a copy.

If you plan on buying one of these books, you might want to consider buying a used copy -- they can often be purchased for a fraction of the price of a new one. Two good internet used book shops are Abebooks and BookButler.

Additional Literature and Demos for Deeper Insights

Other Interesting Bits and Pieces

Gabriel Zachmann
Last modified: Tue Jan 19 09:41:33 CET 2021