Entwicklung eines plattformunabhängigen Echtzeit-Renderers mit der Vulkan API in C++


Paul Johne

Präsentation
31. October 2023, 11:30 Uhr, Raum 3.216
Betreuer
Prof. Dr. Wolfgang Konen, Fabian Friederichs
Kooperationspartner
Technische Hochschule Köln
Stichworte
Computergrafik, Rendering, Vulkan SDK, Grafik-Engine, Low-Level Programmierung
Bildrechte
Paul Johne

Abstract

Wir alle benutzen eine Vielzahl an Anwendungen im Alltag, die Daten visualisieren, egal ob es sich dabei um einen Webbrowser oder doch nur um die IDE für das nächste Softwareprojekt handelt. Doch wie entsteht das Bild, welches auf dem Bildschirm präsentiert wird? Um diese Aufgabe kümmert sich die Grafikschnittstelle der jeweiligen Software. Was Entwicklungstools wie Unity und Android Studio bereits im Hintergrund für das eigene Softwareprojekt regeln, wird je Fall auch manuell gehandhabt.

Die Vulkan API, der logische Nachfolger von OpenGL, bietet als Low-Level Grafikschnittstelle das Rendern von einzelnen Frames auf einer beliebigen GPU an. Gerade die Probleme, welche mit älteren Grafikschnittstellen aufgetreten sind, sollen durch diese moderne API gelöst werden. Die Vulkan API überlässt dem Softwareentwickler mehr Kontrolle, jedoch damit auch mehr Verantwortung bei der Entwicklung.

Durch die vorhandene Komplexität ist der Einstieg nicht besonders linear und leicht. Ziel des Praxisprojektes war somit das Schaffen einer Einstiegsquelle in die Arbeit mit der Vulkan API, welche die Inhalte nicht nur an der Oberfläche, sondern tiefergehend behandelt, um dem Anspruch der API gerecht zu werden. Dazu wurde die PJEngine entwickelt, die weitere bestehende Technologien wie CMake und GLFW in den Vulkan Kontext integriert, um einen plattformunabhängigen Echtzeichtrenderer zu realisieren.

Die PJEngine bietet die Echtzeitdarstellung einer beliebigen FBX Datei mit eingebetteter Textur in einem VSync und Performance Modus. Der Vortrag gewährt einen Einblick in den Projektaufbau und in die Vulkan API auf einer größtenteils bildlichen Ebene.

Material & weiterführende Infos

Das im Vortrag besprochene Softwareprojekt lässt sich im PJEngine Github Repo mitsamt der beigefügten Ausarbeitung finden. Um einen tiefergehenden Einblick in die Arbeit mit der Vulkan API zu erhalten, empfiehlt es sich Kapitel 3 der Ausarbeitung zu lesen.

Die offizielle Vulkan-Spezifikation lässt sich unter folgendem Link finden. Ein aktuelles, spannendes Projekt, welches die Vulkan API nutzt, stellt die VulkanMod dar, welche den OpenGL Renderer von Minecraft gegen einen Vulkan Renderer austauscht.

Vorschläge für weitere Arbeiten im Themenfeld

Gestaltung von Softwarearchitekturen für Grafik-Engines

Einblick in den Aufbau von Softwareprojekten mit Build Systemen

Entwicklung mit der Vulkan API in Python

GPU-Berechnungen mit CUDA