Advanced Computer Graphics - SS 2021

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: 22. April, 10h ct.
Zoom: the link will be announced in an email via Studip.
Twitch: join the channel
Discord:       This is meant for you to ask questions during the (live) lecture; also, I encourage you to use this for discussions and Q&A amongst yourselves. (Rest assured that I don't have time to "listen" in to your chatting on discord ;-) )
You can get direct one-on-one help regarding C++ and compilation on the Discord server CGVRUniBremen in the channel #one-on-one-help-with-marc


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

Week Topics Slides Assignments Frameworks
1. Organization;
Ray-tracing 1: principle, the rendering equation, Whitted-style ray-tracing, camera models, lighting model, reflected rays, refraction, Fresnel terms, attenuation, scattering, dispersion, intersection ray-polygon, intersection ray-triangle, intersection ray-box, ray-sphere intersection,
2. Ray-tracing 2: ray-tracing height fields, numerical robustness, limitations of Whitted-style ray-tracing, distribution ray-tracing, stratified and Poisson disk sampling, grid-based construction algorithm, Poisson disk sampling on the sphere, distribution raytracing: anti-aliasing, soft shadows, glossy-matte reflection, depth-of-field, motion blur. PDF Assignment 1 RayTracing Framework
3. Object representations 1: quadrics and superquadrics, implicit surfaces, sure-fire root finding methods (regula falsi, Illinois), metaballs, generalizations, polygonization of implicit surfaces using marching cubes, instancing, PDF
4. Himmelfahrt
5. Object representations 2: constructive solid geometry (definition, ray-tracing, polygonization)
Acceleration data structures 1: taxonomy, light buffer, beam and cone tracing, bounding volumes, 3D grids and spatial hashing, traversal of grids, mailbox technique, optimal grid resolution, recursive & hierarchical grid, irregular grids (construction and ray traversal) proximity clouds (sphere tracing),
6. Acceleration data structures 2: octree, kd-trees, ray traversal using kd-trees, kd-tree construction, surface area heuristic (SAH), efficient storage of kd-trees, spatial v. object partitioning, bounding volume hierarchies (BVHs), BVH traversal using a p-queue, principles of construction of BVHs, median cut heuristic, plane sweep along principal axis with SAH.
Collision Detection: requirements, collision detection pipeline, collision matrix, broad phase, narrow phase, 3D grid, temporal coherence, broad phase algo using separating planes, hierarchical collision detection, bounding volume, BV hierarchies for coll.det., k-DOPs, inner sphere trees, penetration measures,
7. Culling and visibility: bottlenecks in the rendering pipeline, types of culling, detail culling. backface culling, normal masks, clustered backface culling, hierarchical clustered backface culling, view frustum culling, hierarchical view frustum culling, occlusion culling, batched occlusion queries, naive wait-and-draw algorithm, portal culling,
Lab meeting
PDF Assignment 2 CollisionDetection Framework
8. Advanced shader techniques: recap of programmable pipeline and GLSL, procedural textures in the shader, value noise, gradient noise, example: procedural textures with noise (brick texture), ambient occlusion, refractive objects, the geometry shader, simple examples, rendering furry objects with shells and fins, rendering silhouettes. PDF
9. Advanced texturing methods: seams, texture atlas, cube maps, polycube maps, concept of environment mapping, spherical environment mapping, cube environment mapping, dynamic environment mapping, parallax mapping, view-dependent displacement mapping (VDM), VDM with self-shadowing. PDF Assignment 3 Fur Framework
10. Mesh Processing: calculating good vertex normals, orienting meshes consistently, Laplacian smoothing, extension to prevent shrinking, global Laplacian smoothing, subdivison surfaces (Catmull-Clark).
Boundary Representations 1: definitions, orientability, 2-manifold, homeomorphism, OBJ file format, indexed face set, doubly-connected edge list (half-edge data structure), mesh traversals using a a DCEL, limitations of DCEL, mesh matrices and example applications,
PDF 1 PDF 2 Assignment 4
11. Boundary Representations 2: Euler equation, complexity of polyhedra, Platonic solids, Euler characteristic, regular quad meshes.
Striping/Stripification: concepts, NP-completeness, SGI algorithm, FTSG algorithm.
12. Generalized Barycentric Coordinates: definition, interpolation property with proof, general construction scheme and properties, mean value coordinates, extension to non-convex polygons, applications: image warping, mesh morphing.
Parameterization: general approach, condition for and proof of a unique solution, concrete parameterizations.
13. Procedural modeling: seashells, fractal terrain modeling, terrain modelling using fault lines, L-systems: definition, turtle graphics, parametric L-systems, stochastic L-systems, procedural modeling rocks using genetic algorithms.
Call for theses
10. Tone mapping: HDR imaging, image histograms, histogram stretching, histogram equalization, tone reproduction using CLAHE, the Weber-Fechner law, Steven's power law, perceptually-based tone mapping, generating histograms on the GPU. PDF PDF View Frustum Culling Framework

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

Video Recordings of the Lecture from SS 21

The videos are encoded with H.265/HEVC and should play fine with Safari and IE. With Chrome and Firefox, you might need to download the videos, or install a plugin/extension.

Organisational stuff
Ray tracing, path tracing
Object representations
Acceleration data structures
Collision Detection
Culling and visibility computations
Advanced shader techniques, noise functions
Advanced texturing methods
Mesh Processing
Boundary Representations
Striping, Stripification
Generalized Barycentric Coordinates
Procedural modeling


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 used book shops on the internet are Abebooks and BookButler.

Additional Literature and Demos for Deeper Insights

Other Interesting Bits and Pieces

Gabriel Zachmann
Last modified: Wed Aug 04 15:48:27 MDT 2021