Abstract (deu)
Diese Masterarbeit beschäftigt sich mit der Optimierung von Echtzeit-Computergrafik. Viele weit verbreitete Grafikschnittstellen wie Direct3D 11 oder OpenGL reduzieren die erreichbare Leistung der Grafikhardware durch im Hintergrund durchgeführte Validierungsoperationen oder Ressourcen Management. Um die Auslastung des Grafikprozessors zu verbessern müssen die Leistungsverluste durch die Schnittstelle verringert werden.
Die Arbeit beschreibt einen spezielle Anordnung der Daten im Speicher, die es erlaubt die notwendige Interaktion zwischen der Applikation un der Grafikschnittstelle zu reduzieren. Alle Modelle, Materialien und Texturen werden als Array im Grafikspeicher abgelegt. Dadurch steigt zwar die erforderliche Menge an Grafikspeicher, ermöglicht jedoch die Identifikation einzelner Ressourcen über den Array-Index. Um die Szene zu rendern, wird eine Queue angelegt, deren Einträge alle Informationen enthalten, um ein bestimmtes Objekt darzustellen. Im nächsten Schritt wird ein Compute Shader verwendet, um alle Objekte aus der Queue zu entfernen, die nicht gesehen werden. Das Resultat dieses Compute Shaders ist ein Array mit Geometrie-Indizes. Diese Indizes können in Verbindung mit den Ressourcen-Arrays verwendet werden, um die gesamte Szenengeometrie in einem Schritt zu zeichnen.
Zusätzlich zum allgemeinen Algorithmus beschreibt diese Masterarbeit auch eine spezifische Implementation auf aktueller Hardware unter Zuhilfenahme der Direct3D 11 Grafikschnittstelle.
Weiters wurde ein zweiter Algorithmus implementiert der jedes Objekt einzeln zeichnet. Die Leistung beider Algorithmen wurde verglichen indem verschiedene Szenen mit beiden Implementationen auf verschiedener Hardware gezeichnet wurden.