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.
Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht
Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht
- Vertex Shader: über den Vertex Shader werden Animationen und Physik-Effekte berechnet
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.
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.
Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht
- Domain Shader: im Domain Shader werden alle Informationen werden zusammengeführt
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.
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.
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.
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.
Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht
Weitere Links: