TEST

Die Turing-Architektur mit RTX, Ray Tracing und den neuen Shader-Funktionen - Mesh Shading und Variable Rate Shading

Portrait des Authors


Werbung

Eine der neuen Shader-Funktionen in der Turing-Architektur ist das Mesh Shading. 3D-Szenen mit vielen Objekten werden häufig durch die Geometrieberechnungen limitiert, was wiederum teilweise auf dem Prozessor stattfindet und dann hier der Flaschenhals zu suchen ist.

Per Level of Detail (LOD) wird in Abhängigkeit zur Distanz eine bestimmte Detailstufe zur Darstellung von Objekten gewählt. Die meisten Game-Engines setzen das LOD als festen Wert an, der Nutzer kann diesen zwar manchmal ändern, es handelt sich aber um keine dynamische Anpassung in Abhängigkeit zur jeweiligen 3D-Szene und deren Komplexität.

Für eine Szene mit 200.000 Objekten stehen für flüssige 60 FPS nur 2 ms für die Geometrieberechnungen zur Verfügung. Dies bedeutet wiederum pro Objekt eine Rechenzeit von 10 ns und darin inbegriffen sind auch die Festlegung und Berechnung eines bestimmten LOD und das Verschicken des Draw Calls. 20.000 bis 30.000 Objekte sind derzeit in 3D-Engines umsetzbar, mehr nicht. Mit einem adaptiven LOD bzw. dem Mesh Shading sind nun eben etwa 200.000 Objekte möglich.

Die Mesh Shader der Turing-Architektur sollen in Abhängigkeit zur Auslastung der Render-Pipeline den Grad des LOD bestimmen. Anstatt die festgelegte Berechnung für das LOD sowie das Object Culling (Auswählen und Weglassen der (nicht)sichtbaren Objekte) vom Prozessor ausführen zu lassen, muss der Prozessor für die Mesh Shader nur die Draw Calls ausführen. Die Vertex und Hull Shader werden zu einem Task Shader zusammengefasst, der das Level des LOD und das Object Culling übernimmt. In den Mesh-Shadern werden dann wiederum die Domain und Geometry Shader zusammengefasst.

In einer Tech-Demo erläutert NVIDIA die Funktionsweise des Mesh Shaders:

Datenschutzhinweis für Youtube



An dieser Stelle möchten wir Ihnen ein Youtube-Video zeigen. Ihre Daten zu schützen, liegt uns aber am Herzen: Youtube setzt durch das Einbinden und Abspielen Cookies auf ihrem Rechner, mit welchen Sie eventuell getracked werden können. Wenn Sie dies zulassen möchten, klicken Sie einfach auf den Play-Button. Das Video wird anschließend geladen und danach abgespielt.

Ihr Hardwareluxx-Team

Youtube Videos ab jetzt direkt anzeigen

In der Demo werden zwischen 200.000 und 300.000 Asteroiden dargestellt. Je nach LOD entspricht dies in der höchsten Geometrie-Detailstufe fast 4.000.000.000.000 Polygonen. Diese könnten durch keine Hardware flüssig dargestellt werden.

Die Turing-Architektur ist nun der Lage selbst zu bestimmen, welche Objekte berechnet werden müssen und welche nicht. Hinzu kommt die Bestimmung des LOD. Per Einfärbung zeigt NVIDIA das verwendete LOD. Schwarz, Lila und Blau entspricht einem hohen LOD, Grün und Gelb einem niedrigen. Die Änderung des LOD in Abhängigkeit zum Abstand findet dynamisch statt und soll nicht sichtbar sein.

Variable Rate Shading

Das Variable Rate Shading ist eine weitere neue Shader-Funktion, welche die Effizienz der Berechnungen verbessern soll. 

Einfach gesagt handelt es sich beim Variable Rate Shading um eine "Kompression" für das Shading. Wir kennen dies bereits von Kompressionsverfahren für Musik (MP3), Bilder (JPG) aber auch in GPU-Architekturen in Form einer Speicherkomprimierung. Normalerweise wird jeder Pixel pro Shading-Vorgang einmal gezeichnet. Bei mehreren Frames pro Sekunde werden viele Objekte aber immer wieder mehrfach gleich gezeichnet.

Für das Variable Rate Shading wird der Frame in mehrere Blöcke aufgeteilt. Abhängig vom Inhalt des jeweiligen Frame und der Geschwindigkeit, in der sich Änderungen zum nächsten Frame ergeben, können diese Blöcke unterschiedlich groß sein. Es gibt daher unterschiedliche Methoden des Variable Rate Shading.

Beim Content Adaptive Shading geht es um den Inhalt des jeweiligen Frames. Das Motion Adaptive Shading bewertet auch die Bewegungen und Änderungen von Frame zu Frame. Beim Foveated Rendering spielt die Betrachungsrichtung des Nutzers in einer VR-Umgebung eine Rolle, da nur die Bereiche in voller Detailstufe berechnet werden müssen, die auch im Fokus des Betrachters liegen. Das Lens Optimized Rendering passt das Rendering an die Gegebenheiten der Linse in einer VR-Brille an. Anleihen zum Simultaneous Multi Projection der Pascal-Archiktur sind hier offensichtlich.

Für das Motion Adaptive Shading wird der Umstand genutzt, dass bewegte Objekte vom menschlichen Auge mit einer geringere Auflösung wahrgenommen werden.

In einer Umsetzung für Wolfenstein 2: The New Colossus zeigt NVIDIA die Funktionsweise von Motion Adaptive Shading:

Datenschutzhinweis für Youtube



An dieser Stelle möchten wir Ihnen ein Youtube-Video zeigen. Ihre Daten zu schützen, liegt uns aber am Herzen: Youtube setzt durch das Einbinden und Abspielen Cookies auf ihrem Rechner, mit welchen Sie eventuell getracked werden können. Wenn Sie dies zulassen möchten, klicken Sie einfach auf den Play-Button. Das Video wird anschließend geladen und danach abgespielt.

Ihr Hardwareluxx-Team

Youtube Videos ab jetzt direkt anzeigen

Das Motion Adaptive Shading soll keinerlei Unterschiede in der Darstellungsqualität zeigen. In den ersten Sekunden der Demo wird daher zwischen aktiviertem und deaktiviertem Motion Adaptive Shading hin und her geschaltet. Auch wir vor Ort konnten keinerlei Unterschied in der Darstellungsqualität feststellen.

Per Overlay zeigt NVIDIA wo und wie stark das Motion Adaptive Shading aktiv ist. Wo kein Overlay sichtbar ist, ist auch kein Motion Adaptive Shading aktiv. Die Farbe der Blöcke zeigt deren Größe an.

NVIDIA erwartet durch das Motion Adaptive Shading ein Leistungsplus von etwa 20 Prozent bei Spielen, die bisher mit etwa 60 FPS liefen.

Das Variable Rate Shading hält für die Zukunft aber auch noch weitere Neuerungen bereit bzw. bietet weitere Möglichkeiten. So wird ein Multi-View Rendering (nicht mehr) auf einen Viewport beschränkt. Das Foveated Rendering ist die dritte wichtige Anwendung für ein Variable Rate Shading.

Beim Foveated Rendering werden Bereiche, die im Fokus des Betrachters liegen, höher aufgelöst, als solche in den Randbereichen. Besonders in VR-Umgebungen kann dies Rechenleistung einsparen bzw. diese wird auf die wichtigen Bereiche fokussiert.

Texture Space Shading

Ein Texture Space Shading (TSS) könnte zukünftig eine Wiederverwendung bestimmter Shading-Operationen ermöglichen. Beim TSS werden die Werte für das Shading dynamisch berechnet und gespeichert. Danach können diese in einer Textur als Texel im Texture Space verwendet werden. Pixel, auf die Texturen gemapped werden, werden aus dem Screen Space in den Texture Space überführt. Beim TSS werden die Samples des Screen und Texture Space in unabhängig voneinander behandelt und bleiben auch getrennt voneinander. Das daraus folgende Decoupling Shading ermöglicht damit ein redundantes Spatial und Temporal Rendering.

Mit TSS sind die beiden wichtigsten Operationen für das Visibility Sampling (Rasterization und Z-Testing) und das Appearance Sampling (Shading) derart voneinander getrennt, dass sie auch in unterschiedlichen Stufen und/oder zeitlich versetzt ausgeführt werden können.

Der Shading-Prozess ist damit nicht mehr an die Screen Space Pixel gebunden, sondern dies findet teilweise im Texture Space statt. Die Geometrie wird noch immer im Rasterizer behandelt und in den Screen Space überführt, auch das Visibility Sampling findet noch darin statt. Das Shading aber nicht mehr, denn die entsprechenden Texel werden über die Output-Pixel gelegt. Der "Fußabdruck" der Screen Space Pixel wird in einen separaten Texture Space überführt. Der darauf folgende Mapping to Texture Space ist eine Standard-Operation für das Texture Mapping. Die notwendigen Texturen werden on-demand für das Sampling erstellt, aber eben nur die Werte, die auch als Texel bereits berechnet wurden.

Quellen und weitere Links KOMMENTARE (108) VGWort