Titelaufnahme

Titel
Virtual texturing / von Albert Julian Mayer
VerfasserMayer, Albert Julian
Begutachter / BegutachterinWimmer, Michael
Erschienen2010
Umfangvi, 108 S. : Ill., graph. Darst.
HochschulschriftWien, Techn. Univ., Dipl.-Arb., 2010
Anmerkung
Zsfassung in dt. Sprache
SpracheEnglisch
DokumenttypDiplomarbeit
Schlagwörter (DE)real-time rendering / out of core rendering / texture streaming / texture caching / virtual texturing
URNurn:nbn:at:at-ubtuw:1-43582 Persistent Identifier (URN)
Zugriffsbeschränkung
 Das Werk ist frei verfügbar
Dateien
Virtual texturing [11.46 mb]
Links
Nachweis
Klassifikation
Zusammenfassung (Deutsch)

Virtual Texturing (so wie von Mittring in 'Advanced Virtual Texture Topics' präsentiert und im Gegensatz zu Clipmap-artigen Systemen, welche ebenfalls genauso bezeichnet werden) ist eine Lösung für das Rendern von Szenen mit enormen Texturdaten die nicht in den Graphik- oder Hauptspeicher passen. Virtual Texturing funktioniert indem die gesamten Texturdaten in gleich große Teile vorverarbeitet werden und die benötigten Teile vor jedem Frame festgestellt werden. Diese Teile werden dann zur Graphikkarte gestreamt und das Rendern findet mit einem speziellen Fragmentshader statt, der eine Koordinatenanpassung vornimmt, um von der Teilspeichertextur zu samplen.

Eine detailierte Beschreibung von Virtual Texturing und verwandten Themen wird gegeben, ebenso eine Untersuchung von spezifischen Herausforderungen, sowie das Herausfinden von den sichtbaren Teilen, Texturfilterung, Metriken für die Teilgewichtung und viele mehr. Das Bestimmen von sichtbaren Teilen im Bildraum wird detailliert untersucht und eine Implementation für das Komprimieren des resultierenden Buffers in OpenCL wird präsentiert. Das Rendern mit korrekter Texturfilterung von einer Textur, die unkorrelierte Texturteile beinhaltet, wird durch Teilränder und spezifische Koordinatenanpassung sowie Gradientenanpassung im Fragmentshader ermöglicht.

Eine Beispielimplementation wird beschrieben und liefert Resultate bezügliche der Performance und der Korrektheit mit verschiedenen Wahlmöglichkeiten und Architekturentscheidungen. Integration in den Open Scene Graph für die Benutzung in einem hybriden Punktwolken / polygonalen Renderer ermöglicht die Darstellung von hochauflösenden Malereien in Katakomben, die mit Punktwolken modelliert sind. Noch eine weitere Anwendung wird präsentiert, die Echtzeitdarstellung eines detaillierten Modells von New York, das mehr als 60 GB Texturdaten beinhaltet.

Quantitative Analysen zeigen, dass Frameraten jenseits von 200 FPS auch bei komplexen Szenen mit Millionen Polygonen selbst mit veralteter Hardware möglich sind. Die Tests zeigen, dass dabei auch die Qualität hoch bleibt, das Zurückfallen auf niedrigauflösende Teile, welches vorkommt wenn die Benötigten nicht rechtzeitig verfügbar sind, kommt durchschnittlich nur bei 0.01% der Pixel vor. Die Resultate belegen, dass Virtual Texturing eine praktikable Lösung für Spiele, sowie wissenschaftliche und Industrieanwendungen ist. Virtual Texturing erlaubt die Echtzeitdarstellung von Szenen, die vorher nicht dargestellt werden konnten, mit akzeptabler visueller Qualität.

Zusammenfassung (Englisch)

Virtual texturing (as presented by Mittring in 'Advanced Virtual Texture Topics' and in distinction to clipmap-style systems, to which this term is also applied) is a solution to the problem of real-time rendering of scenes with vast amounts of texture data which does not fit into graphics or main memory. Virtual texturing works by preprocessing the aggregate texture data into equally-sized tiles and determining the necessary tiles for rendering before each frame. These tiles are then streamed to the graphics card and rendering is performed with a special virtual texturing fragment shader that does texture coordinate adjustments to sample from the tile storage texture.

A thorough description of virtual texturing and related topics is given, along with an examination of specific challenges including preprocessing, visible tile determination, texture filtering, tile importance metrics and many more. Tile determination in view space is examined in detail and an implementation for compressing the resulting buffer in OpenCL is presented. Rendering with correct texture filtering from a texture which contains de-correlated texture tiles is attained by using tile borders with specific coordinate adjustment and gradient correction in the fragment shader.

A sample implementation is described and serves to provide results concerning performance and correctness with different settings and architecture choices. Integration into Open Scene Graph for usage within a hybrid point-cloud / polygonal renderer enables rendering of high resolution paintings within catacombs modeled with point clouds. Another application is presented, the real-time display of a highly detailed model of New York with more than 60 GB textures.

Quantitative analysis reveals that frame-rates above 200 FPS are attainable on complex scenes with multi-million polygons even with outdated hardware. At the same time quality remains high, results indicate that "fallbacks", that occur when a needed texture tile is not ready in time, occur only for 0.01% of the pixels on average. These results show that virtual texturing can be a competitive solution for games, scientific and industrial applications, allowing for real-time rendering of scenes that could not be displayed previously, while maintaining acceptable visual quality.