Detailansicht

Reducing CPU overhead for increased real time rendering performance
Daniel Martinek
Art der Arbeit
Masterarbeit
Universität
Universität Wien
Fakultät
Fakultät für Informatik
Studiumsbezeichnung bzw. Universitätlehrgang (ULG)
Masterstudium Medieninformatik
Betreuer*in
Helmut Hlavacs
Volltext herunterladen
Volltext in Browser öffnen
Alle Rechte vorbehalten / All rights reserved
DOI
10.25365/thesis.40958
URN
urn:nbn:at:at-ubw:1-30180.76267.959662-1
Link zu u:search
(Print-Exemplar eventuell in Bibliothek verfügbar)

Abstracts

Abstract
(Deutsch)
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.
Abstract
(Englisch)
This master thesis concerns itself with the optimization of real-time computer graphics rendering performance. Wide spread graphics APIs like Direct3D 11 or OpenGL reduce the potential performance of graphics processing units by background validation and error checking for important API calls. To improve the utilization of current generation graphics hardware the overhead imposed by the application programming interface has to be reduced. The thesis describes a specific way to process and layout data to reduce graphics API interaction to a minimum while still retaining the ability to draw fully dynamic scenes. All geometry, material and texture data is stored as array resources in GPU memory. Although this potentially increases the amount of memory needed, it enables the identification of a single GPU resource by the array index. At render time a queue of data packages containing such indices is generated. Each package is filled with all information necessary to render a specific object. To compact and cull this data a compute shader is invoked to process the input queue and output a single index buffer for rendering. This index buffer in combination with the resource arrays is then used to draw the whole scene by using a single draw call. In addition to the overall architecture, the thesis also describes the implementation of this algorithm on modern hardware. The documentation of the rendering engine provided in this thesis details all necessary steps to implement the algorithm using the widespread Direct3D 11 graphics API. Finally a second rendering architecture was implemented using multiple draw calls for rendering. The last part of the thesis compares the draw call efficiency of the two methods for different scenes showing the pros and cons of the proposed algorithm.

Schlagwörter

Schlagwörter
(Englisch)
Direct3D OpenGL APIs draw calls performance batching render engine CPU overhead
Schlagwörter
(Deutsch)
Direct3D OpenGL APIs Draw Calls Leistungssteigerung Batching Render Engine CPU Overhead
Autor*innen
Daniel Martinek
Haupttitel (Englisch)
Reducing CPU overhead for increased real time rendering performance
Paralleltitel (Deutsch)
Leistungssteigerung von Grafikberechnungen durch die Reduktion von CPU-GPU Interaktion
Publikationsjahr
2016
Umfangsangabe
V, 62 Seiten : Illustrationen, Diagramme
Sprache
Englisch
Beurteiler*in
Helmut Hlavacs
Klassifikation
54 Informatik > 54.73 Computergraphik
AC Nummer
AC13078163
Utheses ID
36261
Studienkennzahl
UA | 066 | 935 | |
Universität Wien, Universitätsbibliothek, 1010 Wien, Universitätsring 1