# Advanced Computer Graphics - SS 2013

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 topics will be covered that were not touched upon in the Bachelor's course. This apporach 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,

Prerequisites are:

- A little bit of experience with C/C++ ; note that we 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 methods for texturing (more realistic ;
- Generalized barycentric coordinates and parameterization of meshes;
- Advanced shader programming (special effects);
- Culling techniques (real-time rendering);
- Ray-tracing (photo-realistic images);
- Alternative object representations (modeling);
- Anti-aliasing (improvement of quality)

### News

### Folien

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

1. |
Organization; Ray-tracing 1 (principle, camera models, lighting model, secondary rays, refraction, Fresnel terms, attenuation, dispersion, intersection ray-polygon) |

2. |
Ray-tracing 2 (intersection ray-triangle, ray-box, ray-sphere,
ray-tracing height fields, numerical robustness, distribution ray-tracing,
anti-aliasing, soft shadows, glossy-matte reflection, depth-of-field,
motion blur)
Modeling (implicit surfaces, root finding using Laguerre, quadrics, super-quadrics, metaballs, deformation using metaballs, instancing, CSG, fractals) |

3. | Acceleration Data Structures 1 (taxonomy, light buffer, beam and cone tracing, 3D grids, mailbox technique, traversal and storage, hierarchical grids, proximity clouds, octree/quadtree, 5D octree over rays, kd-trees, surface-area heuristic (SAH), storage of kd-trees, spatial kd-trees) |

4. | Acceleration Data Structures 2 (bounding volumes, bounding volume hierarchies, BVH traversal with rays, construction of BVHs, median cut method, iterative insertion, plane sweep along PCA axis for construction) |

4. | Techniques for real-time ray-tracing (kinds of parallelism, SIMD kd-tree traversal, frustum tracing in the kd-tree, dynamic scenes, coherent grid traversal, space-time kd-trees, motion decomposition) (1. Mai) |

5. |
Recap Basic Shader Techniques (aus CG 1); Advanced Shader Techniques 1 (procedural textures in the shader, value noise for procedural textures) |

6. |
Advanced Shader Techniques 2 (gradient noise, light refraction,
the geometry shader, examples, rendering shells and fins,
rendering silhouettes); Tone Mapping 1 (HDR imaging, image histograms, histogram stretching, histogram equalization, tone reproduction by Ward, Weber-Fechner law, Stevens power law) |

7. |
Tone Mapping 2 (Perceptually-based tone mapping,
generating histograms on the GPU); Advanced texturing methods 1 (seams, texture atlas, cube maps, polycube maps, idea of environment mapping) |

8. | Advanced texturing methods 2 (Spherical environment mapping, parabolic environment mapping, cube env mapping, parallax mapping, view-dependent displacement mapping) |

9. | Culling 1 (Bottlenecks in the rendering pipeline, kinds of culling, backface culling, normal masks, clustered backface culling, hierarchical clustered backface culling) |

10. | Culling 2 (view frustum culling, occlusion culling, batched occlusion culling, coherent hierarchical culling) |

11. | Boundary Representations (definitions, orientation, manifold, homeomorphism, OBJ file format, winged-edge data structure, doubly-connected edge list, mesh traversal, Euler equation, platonic solids, Euler characteristic, regular quad meshes) |

12. |
Striping / Stripification (concepts, NP-completeness, SGI algo, FTSG algo) Generalized Barycentric Coordinates 1 (definition, interpolation property, notations) |

13. | Generalized Barycentric Coordinates 2 (construction of such coords, mean value coordinates, extension to non-convex polygons, applications, image warping, morphing/deformation) |

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 Akenine-Möller, Eric Haines:
*Real-Time Rendering*; AK Peters. - Matt Pharr, Greg Humpfreys:
*Physically-Based Rendering*; Elsevier. - Alan Watt, Mark Watt:
*Advanced Animation and Rendering Techniques*. Addison-Wesley - 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.

### Grades and Points achieved by the Assignments

For taking part in a so-called "Fachgespräch" (mini oral exam), you need a grade from the assignments >= 4.0 . You can get this by doing the exercises (assignments). You need at least 30% of all points of all asignments to achieve a grade of 4.0 .

### Some Additional Literature You Might Want for Deeper Insights

- On Raytracing:
- 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 implicit surfaces, 1996.
- Siggraph course notes on interactive ray-tracing, 2006.

- 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, and GPGPU programming:
- Einen Link zu unserem Shader Maker (und viele Shader-Beispiele) finden Sie hier.
- Ein 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).
- Dominik Goeddeke's GPGPU::Basic Math Tutorial, in dem die einfachen Prinzipien anhand der "saxpy"-Operation erklärt werden (Quelle).
- 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).
- 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 boundary representation chapter:
- A paper on array-based 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 non-manifold geometric structures
(this is only partially relevant for our course, but it can serve as an outlook on
how to extend the concepts into
*n*-dimensional geometry)

- 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

- A tutorial on the PCA by Prof. Laurenz Wiskott, 2004. source)

Last modified: Mon Jul 22 15:21:31 MDT 2013