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 ...
 Knowledge of advanced and more complex methods and techniques of computer graphics.
 Mastering of some of the topics that were already touched upon in the basic computer graphics course, by expanding them in greater depth.
 Ability to follow the current research literature on those topics.
 Skills to implement complex techniques in those areas.
 Knowledge of the principles of photorealistic image generation.
 Larger overview over the amazing wealth of topics and research questions in computer graphics,
There are no formal prerequisites, but some degree of the following skills are desirable:
 A little bit of experience with C/C++ ; note that you will need just "C with classes" during this course.
 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).
 Algorithmic thinking (and, hopefully, some pleasure when thinking about algorithms)
Some of the envisioned topics (these can change during the semester):
 Data structures and the theory of boundary representations (meshes);
 Advanced texturing methods;
 Generalized barycentric coordinates and parameterization of meshes;
 Advanced shader programming (special effects);
 Culling techniques (realtime rendering);
 Raytracing (photorealistic images);
 Alternative object representations (modeling);
 Mesh processing
News
You can also join our Discord.
Slides
The following table contains the topics and the accompanying slides (it will be filled stepbystep).Lecture  Topics 

1. 
Organization; Raytracing 1: principle, the rendering equation, Whittedstyle raytracing 
2.  Raytracing 2: camera models, lighting model, reflected rays, refraction, Fresnel terms, attenuation, scattering, dispersion 
3.  Raytracing 3: intersection raypolygon, intersection raytriangle, intersection raybox, raysphere intersection, raytracing height fields, numerical robustness 
4.  Raytracing 4: limitations of Whittedstyle raytracing, distribution raytracing: antialiasing, soft shadows, glossymatte reflection, depthoffield, motion blur 
5.  Object representations 1: quadrics and superquadrics, implicit surfaces, root finding methods (bisection, regula falsi, NewtonRhapson), metaballs 
6.  Object representations 2: normals for implicit surfaces, polygonization of implicit surfaces using marching cubes, marching tetrahedra, polygonization with particle systems 
7.  Object representations 3: instancing, constructive solid geometry (raytracing and polygonization), procedurally defined fractals, implicite surfaces from point clouds 
8.  Acceleration data structures 1: taxonomy, light buffer, beam and cone tracing, bounding volumes 
9.  Acceleration data structures 2: 3D grids, mailbox technique, traversal and storage, optimal grid resolution, recursive grid, octree 
10.  Acceleration data structures 3: kdtrees, kdtree traversal, kdtree construction, surface area heuristic (SAH) 
11.  Acceleration data structures 4: efficient storage of kdtrees, Bounding volume hierarchies (BVHs), BVH traversal using pqueue, principle of construction of BVHs, median cut heuristic, plane sweep along principal axis with SAH. irregular grids (construction and ray traversal) 
12.  Collision Detection 1: requirements, pipeline, collision matrix, broad phase, narrow phase, 3D grid, sweep and prune, temporal coherence, separating planes 
13.  Collision Detection 2: hierarchical collision detection, bounding volume, BV hierarchies, kDOPs, inner sphere trees, penetration measures 
14.  Culling Part 1: bottlenecks in the rendering pipeline, types of culling, backface culling 
15. 
Culling Part 2:
hierarchical clustered backface culling

16. 
Culling Part 3:
view frustum culling, hierarchical view frustum culling,
occlusion culling, batched queries, naive waitanddraw 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, 
19.  Advanced shader techniques 3: refractive objects, the geometry shader, simple examples, rendering furry objects with shells and fins, rendering silhouettes. 
20.  Advanced texturing methods 1: seams, texture atlas, cube maps, polycube maps 
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, Lsystems (D0L, parametric, stochastic), Lsystem for modeling rocks 
You can download some of the shaders that were discussed in class, plus some some very simple ones (discussed in the Bachelor course).
Textbooks
The following textbooks can help review the material covered in class:
 Andrew Glassner (ed.): An Introduction to Ray Tracing; Morgan Kaufman
 Peter Shirley: Realistic Ray Tracing; AK Peters.
 Foley, van Dam, Feiner, Hughes: Computer Graphics  Principles and Practice; Addison Wesley.
 Tomas AkenineMöller, Eric Haines: RealTime Rendering; AK Peters.
 Matt Pharr, Wenzel Jakob, Greg Humphreys: PhysicallyBased Rendering; Morgan Kaufmann. (Commonly referred to as PBRT)
 Alan Watt, Mark Watt: Advanced Animation and Rendering Techniques. AddisonWesley
 Online Literature, see below
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
 On Raytracing (global illumination):
 Siggraph course on PhysicallyBased Shading Models in Film and Game Production by Naty Hoffman (Activision Studio Central), Yoshiharu Gotanda, Adam Martinez (Sony), Ben Snow (ILM), 2010 (source).
 An animated video explaining the rendering equation by Matthias Parchettka; it's only in German (ist ein wenig albern, aber vielleicht trotzdem hilfreich; source).
 Siggraph course notes on raytracing and photon mapping by Henrik Wann Jensen (UCSD) and Per Christensen (Pixar), 2008.
 The classic book Principles of Digital Image Synthesis by Andrew Glassner, 1995.
 Siggraph course notes on interactive raytracing, 2006.
 Alex Ryer: Light Measurement Book (source); explains a lot of the principles of light sources, light perception, and light transportation.
 Ray Tracing in One Weekend by Peter Shirley, Steve Hollasch and Trevor David Black walks you through programming a simple raytracer. It does not contain a lot of math, but explains the code nicely, and contains lots of example images showing what the code does.
 Siggraph course notes on implicit surfaces, 1996.
 Literature on advanced texturing techniques:
 The tutorial OpenGL cube map texturing by NVIDIA, 1999.
 Siggraph course notes lighting and shading techniques for interactive applications , 1999 (chapters 6, 10, and 11).
 On GLSL, shader programming:
 Our shader editor Shader Maker is a simple, crossplatform GLSL editor. It works on Windows, Linux, and Mac OS X. (Includes lots of simple GLSL program examples.)
 BKcore's Shdr, a shader editor that runs in the browser. Pretty cool, except it lacks a few features of our ShaderMaker: it does not have a geometry shader, no time uniform, no textures, and I don't see a way to change the values of uniforms interactively. But very nice for simple GLSL programs. (Source code can be found here, in case you want to improve it.)
 Lots of demos and tutorials on shader programming can be found at OGLdev.
 A GLSL Quick Reference Guide (Quelle).
 Die offizielle GLSL Spezifikation (falls man etwas nochmal ganz genau nachschlagen muß).
 Die OpenGL 4.1 Reference Pages (sehr praktisch zum schnellen Nachschlagen).
 Eine leicht verständliche Einführung in Framebuffer Objects von gamedev.net (Rob Jones) (Quelle).
 An easy introduction to simplex noise by Stefan Gustavson (source).
 A fairly comprehensive explanation of Spherical, Cubic, and Parabolic Environment Mappings by Paul Zimmons.
 On Culling:
 Hansong Zhang, Kenneth E. Hoff III: Fast Backface Culling Using Normal Masks
 Andreas Johannsen, Michael B. Carter: Clustered Backface Culling
 Ulf Assarsson and Tomas Möller: Optimized View Frustum Culling Algorithms for Bounding Boxes
 Lighthouse 3D: View Frustum Culling Tutorial
 Literature complementing the chapter on boundary representations:
 A paper on arraybased mesh data structures (for our course, only the first part is relevant)
 A nice tutorial on the DCEL data structure by Ryan Holmes (source)
 A tutorial on specification, representation, and construction of nonmanifold geometric structures (this is only partially relevant for our course, but it can serve as an outlook on how to extend the concepts into ndimensional geometry)
 Two essays on the Euler characteristic: one by Edward Early (source), and one by Sudesh Kalyanswamy (source), the latter being more geared towards graphs, but still relevant in computer graphics, too.
 A simple proof of the Jordan Curve Theorem for the important class of polygons (source)
 Similar to regular polyhedra, one can even define Infinite Regular Polyhedra, and, here too, the genus plays a very important characterizing role (source)
 An interactive demo for DCEL's (javascript), created by one of your fellow students.
 Literature on generalized barycentric coordinates:
 Hormann & Floater: Mean Value Coordinates for Arbitrary Planar Polygons
 Surazhsky & Gotsman: Intrinsic Morphing of Compatible Triangulations
 Floater: Mean Value Coordinates
 The SIGGRAPH 2007 course notes on Mesh Parameterization by Kai Hormann, Bruno Levy, and Alla Sheffer. (Source)
 Literature and links on Lsystems:
 The wonderful book The Algorithmic Beauty of Plants by Przemyslaw Prusinkiewicz and Aristid Lindenmayer, 2004. (Source)
 Arbaro is a free software to generate tree models for povray.
 A tutorial on the PCA by Prof. Laurenz Wiskott, 2004. (Source)
Other Interesting Bits and Pieces
 Not exactly about computer graphics, but here is a clip from an interview with Linus Torvalds, where he speaks about tasteful code. And although he does not explicitely mention it, I strongly believe that tasteful code is what makes robust code. (Source: Linus Torvalds: The mind behind Linux, February 2016 at TED2016.)
Last modified: Sat Oct 03 20:21:39 MDT 2020