Hauptseminar Computergraphik & Visualisierung
Proceedings of the advanced seminar on modern OpenGL SS2015
Die im Rahmen des Seminars ausgearbeiteten Paper können hier in Form eines Konferenzbandes heruntergeladen werden.
Die Eurographics-Latex-Vorlage gibt es HIER zum Download. Die Abgabe der vorläufigen und finalen Version des Papers verschiebt sich um eine Woche. Die Termine wurden im Kalender entsprechend angepasst.
SS 2015, 0/2/0
INF-B-520 Vertiefung INF Vertiefung zur Bachelor-Arbeit INF
INF-B-540 Vertiefung INF Vertiefung zur Bachelor-Arbeit MI
INF-BAS7 Grafische Datenverarbeitung INF, MI
INF-VERT7 Grafische Datenverarbeitung INF
INF-VMI-8 Angewandte Graphische Datenverarbeitung MI
Diplom 2004: INF-04-HS, MINF-04-HS, IST-05-HS
Einschreibung bis zum 20.04. per E-Mail an
Dozent
Betreuer
Joachim Staib
Ludwig Schmutzler
Termine
Jeweils Dienstag, 6.DS im Raum 2101
Datum | Vorträge | Betreuer |
19.05. | Grundlagen zu OpenGL (Joachim Staib) Überblick Shader (Laura Zepner) |
Joachim Staib Joachim Staib |
02.06. | Adaptive Tessellierung (Maximilian Richter) Physikalische Simulation mit Compute-Shadern (Mirko Salm) |
Joachim Staib Ludwig Schmutzler |
09.06. | Sortieren auf der GPU (Lisa Mais) Transparenz (Max Reiz) |
Joachim Staib Ludwig Schmutzler |
16.06. | Effekte Globaler Beleuchtung (Josef Schulz) Frameworks für GPGPU (Tobias Anker) |
Joachim Staib Ludwig Schmutzler |
23.06. | Alternative APIs (Martin Rühlicke) Vulkan (Roy Ledermüller) Abgabe der ersten Version des Papers |
Joachim Staib Ludwig Schmutzler |
30.06. | Abgabe der ersten Version des Papers | |
07.07. | Abgabe der finalen Version des Papers | |
14.07. | Abgabe der finalen Version des Papers | |
21.07 | Abschlussveranstaltung, Paperauswertung, Notenausgabe |
Materialien
- Einführungsfolien und Vorstellung der Themen
- Tipps zum Halten von Vorträgen, Literaturrecherche und schriftlichen Arbeiten
- Gewählte Themen und Materialien
- Eurographics-Latex-Vorlage
Inhalt
Inhaltsschwerpunkte das Hauptseminars bilden aktuelle Verfahren und Techniken aus Forschung und Industrie. Mit den Möglichkeiten des “neuen” OpenGL stehen dem Anwender mehr Freiheiten über alle Bereiche der Grafik-Pipeline zur Verfügung. Dies ermöglicht elegante Lösungen für bisher schwierig umzusetzende Aufgaben. Das Seminar gliedert sich in 3 Themen:
Grundlagen
- Grundlagen von modernem OpenGL
Was ist OpenGL allgemein und was nicht? Im Laufe der Jahre hat sich OpenGL sehr verändert. So ist die API beispielsweise immer hardwarenäher geworden. Jedoch soll OpenGL, trotz grundlegender Veränderungen, immer noch kompatibel zu alten Versionen sein. In diesem Vortrag sollen die Grundlagen von modernem OpenGL, das Kontext-Konzept und einige einführende Beispiele besprochen werden. Ein Fokus liegt dabei auf der Render-Pipeline und den Speichertypen. - Überblick Shader
OpenGL unterstützt 6 Arten von Shadern: Vertex-, Fragment-, Geometry-, Tesselation-Control-, Tesselation-Evaluation- und Compute-Shader. Jeder dieser Shader-Arten soll vorgestellt und sein Verwendungszweck, sowie Besonderheiten gezeigt werden. Anhand von ausgewählten Beispielen werden die Funktionen verdeutlicht. - Puffertypen
Jenseits von Texturspeicher und sehr begrenztem uniformen Speicher existieren eine Reihe weiterer Speichertypen um Vertices, generische Datenblöcke, Bilder mit beliebigem Zugriff oder atomare Operationen zu unterstützen. Die wichtigsten Puffertypen und deren Einsatzszenarien sollen vorgestellt werden. - Zero Driver-Overhead Rendering
Klassischerweise bediente sich OpenGL dem Konzept von Objekten, die Puffer oder Zustände halten. Um sie zu verwenden müssen sie gebunden werden, was zu einer starken CPU-Last führte. In modernem OpenGL ist es möglich, ohne vorheriges Binden zu rendern. In diesem Vortrag sollen die vorhandenen Befehle und deren Vorteile präsentiert werden. Es soll außerdem auf die Unterstützung von Multithreading eingegangen werden.
Anwendung
- Adaptive Tesselierung großer Geometrien mittels Tesselation Shadern
Mithilfe des Tesselation-Control- und Tesselation-Evaluation-Shaders ist eine adaptive, blickpunktsabhängige Tesselierung von Geometrie möglich. In diesem Vortrag sollen verschiedene Methoden und die Verwendung dieser Shader-Typen im Detail präsentiert werden. - (Physikalische) Simulation mit Compute-Shadern
Durch den Compute-Shader können physikalisch plausible Simulationen für Effekte wie Rauch oder Wasser effizient auf der GPU berechnet werden. Dieser Vortrag widmet sich ausgewählten Verfahren. - Sortieren auf der GPU
Wichtiger Bestandteil vieler Algorithmen ist die schnelle Sortierung großer Datenmengen. Musste diese Aufgabe bisher auf der CPU oder über Umwege auf der GPU berechnet werden, ermöglichen vor allem Compute-Shader eine sehr performante Umsetzung. Dazu sind allerdings parallelisierbare Algorithmen notwendig. Es sollen die wichtigsten Algorithmen vorgestellt und deren Implementierung auf der GPU besprochen werden. - Transparenz
Um Elemente so zu rendern, dass sie durchlässig erscheinen, ist im Normalfall ein sortiertes Zeichnen notwendig. Klassischerweise müssen die Daten zum Blenden dafür blickpunktsabhängig vorsortiert werden, was sehr rechenintensiv ist. Unter bestimmten Voraussetzungen kann mit modernem OpenGL auf diesen Schritt auf elegante Weise verzichtet werden. Diese als Order-Independent-Transparency bezeichnete Gruppe von Algorithmen soll vorgestellt und deren Voraussetzungen erläutert werden. Es sollen außerdem Ansätze für ein kommutatives Blenden gezeigt werden, bei dem der Blending-Operator entsprechend angepasst wird. - Effekte globaler Beleuchtung
Die Berücksichtigung globaler Beleuchtungseffekte wie die Ausbreitung von Sekundärlichtstrahlen oder (weichem) Schattenwurf erhöht den Realismus von computergraphisch erzeugten Szenen enorm. Da die Berechnungen typischerweise jedoch sehr rechenaufwendig sind, war globale Beleuchtung bis vor wenigen Jahren für Echtzeitanwendungen gar nicht oder nur mit enormen Einschränkungen nutzbar. Mittels moderner und performanter Programmierung der Grafikhardware können globale Effekte inzwischen selbst für dynamische Szenen schnell berechnet werden. In diesem Vortrag sollen grundlegende Verfahren und deren Umsetzung auf der GPU besprochen werden.
Technik
- Frameworks für generelle GPU-Programmierung
Moderne Grafikkarten eignen sich durch ihre (fast) frei programmierbare Hardware auch für generelle Berechnungen, jenseits von Grafikerzeugung. Es sollen die beiden wichtigsten GPGPU-Frameworks CUDA und OpenCL besprochen und deren Interaktionsmöglichkeiten mit OpenGL erläutert werden. - Alternative APIs zur GPU-Programmierung
Neben OpenGL existiert für spezielle Plattformen eine Reihe weiterer Frameworks zur Programmierung der GPU. In diesem Vortrag sollen einige dieser APIs wie Microsofts Direct3D, AMDs Mantle oder Apples Metal kurz vorgestellt und mit OpenGL verglichen werden. - Die nächste Generation von OpenGL: Vulkan
In diesem Jahr erscheint die erste vollständige API-Spezifikation von Vulkan, das langfristig OpenGL ablösen soll. Sie ist von Altlasten bereinigt, inhärent multithreading-fähig und hardwarenäher. In dieser Präsentation sollen die grundlegenden Funktionen und Vorteile von Vulkan vorgestellt und von OpenGL abgegrenzt werden.
Materialien
...