Advanced Computer Graphics  SS 2024
This course will introduce students to advanced and more complex methods and techniques of computer graphics, as compared to the Bachelor's course "Computer Graphics"; also, some of those topics will be covered here in more depth. 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):
 Raytracing (photorealistic images);
 Alternative object representations (modeling);
 Advanced texturing methods;
 Generalized barycentric coordinates and parameterization of meshes;
 Advanced shader programming (special effects);
 Physicallybased rendering/lighting;
 Culling techniques (realtime rendering);
 Mesh processing
 Data structures and the theory of boundary representations (meshes);
News
Discord: https://discord.gg/YGUZFxf
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 ;) )
Slides and Lecture Recordings
The following table contains the topics and the accompanying slides and videos
(it will be filled stepbystep).
Note: the videos are encoded with H.265/HEVC, which should play fine with Safari and Edge,
and with VP9/WEBM, which should play fine in all other browsers (but have twice the file size).
You can also download the videos and watch them offline using your favorite video player on your laptop.
Ch.  Topics 

1. 
Organization; Raytracing: principle, the rendering equation, Whittedstyle raytracing, camera models, lighting model, reflected rays, refraction, Fresnel terms, attenuation, scattering, dispersion, intersection raypolygon, 
2. 
Ray Tracing:
intersection raytriangle,
intersection raybox,
raysphere intersection,
raytracing height fields,
numerical robustness, limitations of Whittedstyle raytracing,
distribution raytracing,
stratified and Poisson disk sampling, gridbased construction algorithm,
Poisson disk sampling on the sphere,
distribution raytracing: antialiasing, soft shadows, glossymatte reflection,
depthoffield
Object representations: quadrics 
3.  Object representations: implicit surfaces, surefire root finding methods, metaballs, generalizations of metaballs, polygonization of implicit surfaces using marching cubes, instancing, constructive solid geometry (CSG): definition, raytracing, polygonization, principle of point cloud surfaces 
4.  Acceleration data structures: 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), octree, kdtrees, ray traversal using kdtrees, 
5. 
May 1 (holiday)
Lab meeting (tutorial) 
6. 
Acceleration data structures:
kdtree construction,
surface area heuristic (SAH),
efficient storage of kdtrees,
spatial v. object partitioning,
bounding volume hierarchies (BVHs),
BVH traversal using a pqueue,
principles of construction of BVHs,
median cut heuristic,
plane sweep construction with SAH.
Holiday: Ascension of Christ 
7.  Collision Detection: requirements, collision detection pipeline, collision matrix, 3D grid, sweep and prune, separating planes algorithm using perceptron learning rule, hierarchical collision detection, types of bounding volumes, BV hierarchies for coll.det., kDOPs, inner sphere trees, massivelyparallel collision detection (kDet) 
8. 
Advanced shader techniques:
recap of the programmable pipeline and GLSL,
procedural textures in the shader (example: brick texture),
value noise, gradient noise,
Lab meeting 
9.  Advanced shader techniques: spot noise, Worley noise; ambient occlusion, refractive objects, the geometry shader, simple examples, furry objects with shells and fins, rendering silhouettes. 
10.  Physicallybased lighting: radiometric quantities, solid angles and change of variables, properties of radiance, invariance of radiance, definition of BRDF, properties of BRDFs, reflectance equation, conservation of energy, 
11. 
Physicallybased lighting:
computing Lo with illumination from point light,
constructing BRDFs,
microfacet theory,
the three effects modeled in the BRDF,
the Fresnel equation,
the normal distribution function TrowbridgeReitz/GGX,
the geometry function, the Disney BRDF.
Mesh Processing: calculating good vertex normals, orienting meshes consistently, Laplacian smoothing, extension to prevent shrinking, global Laplacian smoothing, subdivison surfaces (CatmullClark). 
12.  Boundary Representations: definitions, orientability, 2manifold, homeomorphism, indexed face set, OBJ file format, doublyconnected edge list (halfedge data structure), mesh traversals using a DCEL, limitations of DCEL, 
13. 
Boundary Representations:
mesh matrices and example applications,
Euler equation, complexity of polyhedra,
Platonic solids, Euler characteristic,
Procedural modeling: extrusion, fractal terrain modeling, terrain modelling using fault lines; Lsystems: definition, turtle graphics, parametric Lsystems, stochastic Lsystems, procedural modeling using 3D Lsystems and genetic algorithms. 
14. 
Parameterization: general approach,
condition for and proof of a unique solution,
concrete parameterizations.
Lab meeting 
10.  Tone mapping: HDR imaging, image histograms, histogram stretching, histogram equalization, tone reproduction using CLAHE, the WeberFechner law, Steven's power law, perceptuallybased tone mapping, generating histograms on the GPU. 
If you are interested in doing a thesis with us, please check my Call for Theses and our evergrowing list of potential topics for a thesis. Also, be sure to check our research projects. If you are interested in any of these, just drop me a line (or anybody else in the CGVR group). We also have close relationships with Mahidol University in Bagnkok, Thailand; so, if you are interested in doing a thesis abroad, please contact me.
You can download some of the shaders that were discussed in class, plus some some very simple ones (discussed in the Bachelor course).
Important Equations
In the exam, it would be beneficial if you would remember, and if you could explain at least the following equations:
 \( L_o = L_e + \int_{\Omega} \, \rho \cdot L_i \cdot \cos(\theta) \, d\omega \)
 \( \vec x^T Q \vec x = 0 , \quad \vec x \in \mathbb{R}^4, \; Q \in \mathbb{R}^{4 \times 4} \)
 \( \mathcal{S} = \bigl\{ \; \vec x \;  \; \vec x \in \mathbb{R}^3 \, , \; P(\vec x ) = \tau \; \bigr\} \; \text{with} \; P(\vec x ) = \sum_i a_i \, p( \ \vec x  \vec x_i \ ) \; \text{and} \; p(r) = e^{  b r^2} \)

\(
C(B) = \operatorname{Prob}[ \text{intersection with } B_1] \cdot C(B_1) +
\operatorname{Prob}[ \text{intersection with } B_2] \cdot C(B_2)
\)
alternatively: \( C(B) = \operatorname{area}(B_1) \cdot N(B_1) + \operatorname{area}(B_2) \cdot N(B_2) \)  \( T = N_V C_V + N_P C_P \; \text{with} \; N_V = \text{\# BV test}, C_V = \text{cost of BV test}, N_P = \text{\# primitive tests}, C_P = \text{cost of primitive test} \)
 \( \rho_{\mathsf{spec}} = \frac{ F( \vec{l}, \vec{h}) D( \vec{h} ) G( \vec{l}, \vec{v} ) }{ \mathsf{ normalization} } \)
 \( VE+F=2 \;\; \text{and} \; \; \chi = V  E + F \)
Video Recordings of the Lecture from SS 2024
These are provided in the hopes they could help you prepare for the exam. Note that the definitive list of material for your exam is given by the table above!
Chapter  HEVC  WEBM 

Ray tracing, path tracing  HEVC  webm 
Object representations  HEVC  webm 
Acceleration data structures  HEVC  webm 
Collision Detection  HEVC  webm 
Culling and visibility computations  HEVC  webm 
Advanced shader techniques, noise functions  HEVC  webm 
Advanced texturing methods  HEVC  webm 
Mesh Processing  HEVC  webm 
Boundary Representations  HEVC  webm 
Striping, Stripification  HEVC  webm 
Generalized Barycentric Coordinates  HEVC  webm 
Parameterization  HEVC  webm 
Procedural modeling  HEVC  webm 
The videos are provided with two different encodings, HEVC (H.265) and WEBM (VP9), one of which should play fine in any browser.
Textbooks
The following textbooks can help review the material covered in class:
 Online Literature, see below
 Matt Pharr, Wenzel Jakob, Greg Humphreys: PhysicallyBased Rendering; Morgan Kaufmann. (Commonly referred to as the PBRT book)
 Dutre, Bala, Bekaert: Advanced Global Illumination. CRC Press.
 Tomas AkenineMöller, Eric Haines: RealTime Rendering; AK Peters.
 Hughes, van Dam, McGuire, Sklar, Foley, Feiner, Akeley: Computer Graphics  Principles and Practice; 3rd edition, Addison Wesley.
 Peter Shirley: Realistic Ray Tracing; AK Peters.
 Andrew Glassner (ed.): An Introduction to Ray Tracing; Morgan Kaufman
Please note that the course is not based on any 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, Videos, 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).
 A nice video explaining many of the basic principles of ray tracing by Sebastian Lague. (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.
 An animated video explaining the rendering equation by Matthias Parchettka; it's only in German (ist ein wenig albern, aber vielleicht trotzdem hilfreich; source).
 Alex Ryer: Light Measurement Book (source); explains a lot of the principles of light sources, light perception, and light transportation.
 Siggraph course notes on implicit surfaces, 1996.
 On GLSL and shader programming:
 Introductory material (e.g., IDEs and tutorials) can be found here on the bachelor course's web page.

Here are the
procedural textures examples
from the lecture on Advanced Shader Programming
as ShaderLabWeb projects.
Installation: install the Docker app; after the first launch of Docker, execute the following two commands in the app:
docker pull biomediaicl/shaderlabweb_webgl2
and
docker run p 80:3000 d t biomediaicl/shaderlabweb_webgl2;
then launch the container hardcore_tu (it runs a local web server on a VM in the background); then, in your browser, enter the adress localhost; then, with the "Upload" button, upload one of the ShaderLabWeb projects as zip archive.
Here is the source code of the examples in the lecture, most of them as standalone C programs. Most of them are rather old source code, based on Qt; you can compile them doing qmake then make.  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).
 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
 Some tutorials on physicallybased rendering and physicallybased lighting:
 A nice introduction to BRDF's
 Easytounderstand and comprehensive tutorial on BRDFs
 Another guide to PBR
 The report on the "Disney BRDF"
 Derivation of the ellipsoid NDF
 On the Frsenel equation
 Report on the experiences when implementing PBR in a game
 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.)
 Interview with Vint Cerf, one of the fathers of the Internet (think TCP/IP, not HTML). He begins with its inception, continues through its evolution, and touches upon the future.
Last modified: Sat Jul 13 01:24:58 MDT 2024