NEWS

GTC 2010

DirectX 11 Overview

Portrait des Authors


DirectX 11 Overview
0

Werbung

NVIDIA legt bei einer erneuten Präsentation von DirectX 11 besonderen Wert auf die Tatsache, dass DirectX 11 auch auf DirectX 9 Hardware funktioniert. Dann sind allerdings nicht alle Features verfügbar. Jede DirectX-11-Anwendung kann spezielle Feature-Level abrufen und macht die Ausführung so auch auf ältere Hardware verfügbar. Die engstirnige Einteilung der Hardware in DirectX-11-fähige und nicht fähige sieht NVIDIA nicht sonderlich gerne, auch wenn man selbst mit diesem Umstand seine Karten bewirbt. Ebenfalls besonderen Wert legt NVIDIA auf die Tatsache, dass die Programmierung der CUDA Cores über sogenanntes General Purpose Programming möglich ist.

{jphoto image=2673}

Nun wollen wir aber mit Hilfe von einigen Bildern und dazugehörigem Text versuchen die erneute Vorstellung von DirectX 11 bzw. dessen Features dazulegen.

Tesselation und Displacement Mapping

Tesselation soll nicht nur den Detailgrad aktueller Engines erhöhen, sondern spart Speicher und Bandbreite, da Informationen zur Details getrennt abgespeichert und auf der GPU zusammengeführt werden. Details werden erst abgerufen wenn sie gebraucht werden. Befindet sich ein Objekt in einem gewissen Abstand müssen nicht alle Details berechnet werden. Erst wenn das Objekt näher kommt, werden diese dazugerechnet. 

GTC2010_DX11__02_rs GTC2010_DX11__03_rs
 GTC2010_DX11__04_rs GTC2010_DX11__05_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

NVIDIA nennt dies View Dependent Level of Detail. Durch intelligente Anordnung der Pipeline werden unnötige Berechnungen verhindert. Folgende Schritte werden dabei in den verschiedenen Stufen der Pipelines ausgeführt. In den Beispielen werden bestimmte Tesselation-Level gezeigt, maximal kann dies auf 64 ausgebaut werden.

GTC2010_DX11__06_rs GTC2010_DX11__07_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

  • Vertex Shader: über den Vertex Shader werden Animationen und Physik-Effekte berechnet

GTC2010_DX11__09_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

  • Hull Shader: der Hull Shader generiert aus den Daten eine Oberfläche aus einer gewissen Anzahl an Polygonen. Auf Basis dieser Daten wird das Tesselation-Level bzw. der Faktor dessen bestimmt. Ein Polygon besteht aus sogenannten Normalen, welche die fixe Position des Dreiecks bestimmen sowie den Normalen, welche die Ausrichtung bestimmen. Über das Tesselation kann die Anzahl der jeweiligen Punkte also erhöht werden, um den Detailgrad zu verbessern. Ein einfaches Dreieck besteht dann nicht mehr aus drei Geraden, sondern derer nein. Der Hull Shader wird pro Berechnung nur einmal ausgeführt und lässt sich daher sehr einfach parallelisieren bzw. das Load-Balancing ist für den Entwickler recht leicht auszurichten. Durch diesen Effekt kann der Hull Shader seine Berechnungen auch auf mehrere Core verteilen um höhere Tesselation-Level zu erreichen.

GTC2010_DX11__10_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

  • Tesselator: der Tesselator ist eine Fixed Function Einheit, aber konfigurierbar. Erst hier werden die gewünschten Details hinzugefügt. Berechnet werden Polygone, Quads und Isobaren. Dabei kann der Tesselator in gewisser Ebene konfiguriert werden. So kann das Tesselation-Level am Rand bestimmt werden (Edge-Tesselation), also wie viele Zwischenschritte an der Außenseite des gewünschten Objekts ausgeführt werden. Es ist aber auch möglich innenliegende Anzahl der Polygone (Center-Tesselation) zu erhöhen um so mehr Details zu erhalten.

GTC2010_DX11__11_rs GTC2010_DX11__12_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

  • Domain Shader: im Domain Shader werden alle Informationen werden zusammengeführt

GTC2010_DX11__13_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Wie dies dann in der Praxis aussieht, haben wir bereits in mehreren Videos dargestellt. An dieser Stelle wollen wir zwei von AMD und NVIDIA erneut präsentieren.

GTC2010_DX11__20_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Eine spezielle Rolle spielt das Terrain-Tesselation. Auf den ersten Blick wird gar nicht deutlich, warum eine flache Oberfläche über Tesselation benötigt. Doch gerade diese Oberflächen profitieren besonders vom höheren Detailgrad. Doch nicht nur die eigentliche Funktion wird oft falsch bewertet, sondern auch die Verarbeitung der entsprechenden Daten. Problematisch wird das Terrain-Tesselation durch die Tatsache, dass auf eine flache Oberfläche ein gewisser Blickwinkel berechnet werden muss. Die „Höheninformationen“ der Oberfläche sind nur über die Textur verfügbar, welche in diesem Status eigentlich noch nicht über das Polygon gelegt wird. Der Hull Shader muss diese Informationen als bereits jetzt verwenden. Bei einem sehr flachen Blickwinkel werden so mehr Daten berechnet, als eigentlich nötig. Betrachtet man das Objekt allerdings aus einem optimalen Blickwinkel von 90°, muss das Tesselation-Level so hoch wie möglich sein, um genügend Informationen darzustellen.

GTC2010_DX11__22_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Neben der Berechnung fallen aber gigantische Datenmengen an. Bei einer dazustellenden Fläche von 60 x 60 km fallen bei einem hohen Tesselation-Level Polygone bzw. Quads mit einer Kantenlänge von 2 m an. Dies resultiert in einer gigantischen Datenmenge, welche durch die GPU und den Speicher geschoben werden muss. Um die Datenmenge zu reduzieren, wird einer durch wenige Punkte gegebene Oberfläche durch bestimmte Berechnungen eine rundere Gestalt gegeben. Auf diese wird dann ein Rauschen gelegt, so dass der Eindruck einer detaillierten Oberfläche entsteht.

GTC2010_DX11__24_rs GTC2010_DX11__26_rs
GTC2010_DX11__27_rs GTC2010_DX11__28_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Eine Parallisierung alle Berechnungen spielt ebenfalls in DirectX 11 eine entscheidende Rolle. Im Normalfall folgt auf einen Abfrage eine Befehls die Ausführung dessen und die Rückgabe der Daten. Die Abarbeitung der Befehle kann in DirectX 11 aber auch asynchron erfolgen. Dazu wird die Befehlskette in zwei Teile aufgesplittet. Diese können asynchron zueinander arbeiten und so Aufgaben übernehmen, die von einem anderen Befehl stammen.

Neue Kompressionsstandards sollen DirectX 11 ebenfalls zu höherer Performance verhelfen. Im Vergleich zu sehen ist BC6H gegen BC7. Letzterer bietet einen höheren Funktionsumfang bei besseres Qualität. In der abgebildeten Tabelle ist besonders die unterste Zeile interessant. Je höher dieser Wert, desto optimaler arbeitet die Kompression im Verhältnis von Datenmenge und Qualitätsverlust.

GTC2010_DX11__31_rs GTC2010_DX11__32_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Weitere Links:

Quellen und weitere Links

    Werbung

    KOMMENTARE (0)