Gaming Grafikkarten News Software

Microsoft launcht DirectX 12 Ultimate für PC und Konsolen – DXR 1.1 kommt für alle und beschleunigt nicht nur Ray Tracing

Eigentlich hat Nvidia gut Lachen, denn das, was Microsoft als DXR 1.1 (DirectX Ray Tracing) heute veröffentlicht, macht zumindest diesen Teil nun zum Quasi-Standard für PCs und Konsolen in gleichem Maße. Das alles ist jetzt alles natürlich nicht überraschend neu, wenn man sich Ende Oktober letzten Jahres mal den Beitrag „Dev Preview of New DirectX 12 Features“ auf Microsofts DirectX Developer Blog zu Gemüte geführt hat. Die Knackpunkte waren damals schon schnellere Raytracing-Berechnungen und Mesh Shader für mehr Geometrie bei höherer Bildrate.

 

Doch was ist eigentlich DXR?  DirectX Ray Tracing unter Direct3D12 ist eine eigene Implementierung von Microsoft, um Echtzeit-Raytracing in Spielen umzusetzen und bereits das Insider-Preview alias Update 20H1 bot schon im Oktober 2019 Zugriff auf DirectX Raytracing (DXR) Tier 1.1, die sogenannten Mesh Shader und auf die Änderungen beim Textur-Streaming sowie -Shading. Neu ist das also weder für AMD, noch Nvidia. Zumal Nvidia, sicher nicht ganz uneigennützig, dort ziemlich eng mit Microsoft in der Entwicklung kooperiert hat.

Der Status Quo ist diesbezüglich (und wohl auch deshalb) ziemlich eindeutig. Bisher unterstützt nämlich nur Nvidia diese Features mit den eigenen Turing-Karten samt der Hardwarebeschleunigung durch die speziellen RT-Cores. Die Pascal-Modelle konnten zwar Teile von DXR per Software-Fallback rein durch aufwändige Shader-Berechnungen realisieren, jedoch darf man davon ausgehen, dass viele kommende Features bis hin zu weiteren DLSS-Evolutionen dann nicht mehr durch Emulationen abgedeckt werden können.

Mit DXR 1.1 soll laut Microsoft die Geschwindigkeit von Raytracing nun signifikant steigen und der Blog-Eintrag erläutert auch, wie man das realisieren möchte. Die Anzahl der Strahlen („Rays“) pro Pixel kann nun dynamisch erfolgen, auch die Nachverfolgung und das Shading sind deutlich flexibler kontrollierbar. Speziell Forward-Renderer und Compute-Berechnungen wie Culling oder Physik dürften davon gehörig profitieren. Doch kommen wir einfach mal zu den Details.

Die erwähnten Mesh Shader wurden von Nvidia übrigens ja schon vor Monaten gezeigt. Schaut man sich nun das Schema oben an, dann sieht man die deutliche Verkürzung der Bearbeitungsschritte. Hat man beispielsweise eine Szene mit einer großen Anzahl an Objekten, dann scheitert eine aufwändigere Geometrie bisher an der resultierenden Bildrate, denn flüssig geht meist anders. Der Grund liegt in den leidigen Draw-Calls, da der Prozessor einfach nicht hinterherkommt und die Grafikkarte ausbremst.

Daher wird die Pipeline umgestaltet und erhält neue Stages. Amplification Shader und Mesh Shader übernehmen die Funktionskette von Vertex- und Hull Shader (VS, HS), Tessellation (Tess) und der Domain- bzw. Geometry Shader (DS, GS). Übrigens: erinnern wir uns noch an die Einführung von AMDs Vega und die sagenumwobenen Primitive Shader samt des angeblich spezialisierten und programmierbaren Arrays für die Berechnung? Umgesetzt bzw. aktiviert wurden dies ja leider nie, aber es zielt(e) exakt in die gleiche Richtung! Mittels eines optimierten Level of Detail (LoD) und speziellen Listen soll eine bessere Verwerfung von nicht benötigten Polygonen und, damit einhergehend, auch eine detailliertere Tessellation möglich werden – was natürlich nachzuprüfen wäre (und auch ist).

Das erwähnte Sampler-Feedback ist eine Hardware-Funktion zur Aufzeichnung, welche Bereiche einer Textur während der Sampling-Vorgänge aufgerufen wurden. Mit diesem Sampler-Feedback können Spiele während des Renderings eine Feedback-Map erzeugen, die aufzeichnet, welche Teile welcher MIP-Ebenen resident sein müssen. Diese Funktion ist vor allem in zwei Szenarien sehr hilfreich, dem sogenannten Texture Streaming und dem Texture-Space Shading.

Viele Spiele der nächsten Generation haben dabei nämlich das gleiche Problem: Denn stets dann, wenn immer größere Welten mit immer hochwertigeren Texturen gerendert werden sollen, leiden diese Spiele unter längerer Ladezeit, höherer Speicherlast oder gleich beidem. Spieleentwickler müssen dann die Qualität ihrer Assets reduzieren oder Texturen zur Laufzeit nachladen. Wenn man dann noch eine Ultra-HD-Auflösung anstrebt, nimmt die gesamte MIP-Map einer qualitativ hochwertigen Textur extrem viel Platz ein! Es ist also anzustreben, nur die notwendigen Teile der detailliertesten MIP-Level laden zu müssen.

Eine Lösung für dieses Problem ist das  sogenannte Texture Streaming, wobei das Sampler-Feedback die Genauigkeit, mit der die richtigen Daten zur richtigen Zeit geladen werden können, erheblich verbessert. Der Ablauf ist dabei klar gegliedert. Die Szene wird gerendert und man zeichnet die gewünschten Texturkacheln zunächst mittels Sampler-Feedback auf. Falls die jeweiligen Texturkacheln auf den gewünschten MIP-Stufen noch nicht resident sind, rendert man dann die Texturen des aktuellen Frames mit einem niedrigerem MIP-Level und sendet IO-Anforderung an die Festplatte, um die gewünschten Texturkacheln letztendlich zu laden. Dieser Vorgang des Ladens auf reservierte Ressourcen erfolgt ausschließlich asynchron.

Ein weiteres, interessantes Szenario ist das Texture-Space Shading, bei dem Spiele dynamisch die Zwischenschattierungswerte in einer Textur berechnen und speichern, wodurch sowohl die räumliche als auch die zeitliche Rendering-Redundanz reduziert wird. Diese redundante Bearbeitung zu vermeiden ist hierbei das eigentliche Hauptanliegen. Folgt man dem Bearbeitungsverlauf, so zeichnet man zunächst Sie Geometrie mit einfachen Shadern über das Sampler-Feedback auf, um danach zu bestimmen, welche Teile einer Textur überhaupt benötigt werden. Erst dann werden genau diese Texturen auch gefüllt. Im Anschluss zeichnet man die Geometrie erneut, jedoch mit echten Shadern, die dann die so generierten Texturdaten auch final anwenden.

Natürlich wird es jetzt auch auf die Spielentwickler ankommen, wie extensiv man diese neuen Funktionen implementieren und nutzen wird. Inwieweit welche AMD-Karten und auch Nvidias GeForce GTX ohne RT- und Tensor-Cores mit welchen Features noch durch Emulationen eingebunden werden können, ist unklar und eigentlich auch fast schon fraglich. Nvidia selbst sieht sich mit den aktuellen GeForce RTX auf dem richtigen Weg und gibt eine 100%-ige Unterstützung von DXR 1.1 an. Man wird, gerade im Hinblick auf AMDs aktuelle Navi-Karten mit RDNA wohl eher auf die Konsolen schauen müssen, was vielleicht mit RDNA2 dann möglich ist und wäre.

Danke für die Spende



Du fandest, der Beitrag war interessant und möchtest uns unterstützen? Klasse!

Hier erfährst Du, wie: Hier spenden.

Hier kannst Du per PayPal spenden.

About the author

Igor Wallossek

Chefredakteur und Namensgeber von igor'sLAB als inhaltlichem Nachfolger von Tom's Hardware Deutschland, deren Lizenz im Juni 2019 zurückgegeben wurde, um den qualitativen Ansprüchen der Webinhalte und Herausforderungen der neuen Medien wie z.B. YouTube mit einem eigenen Kanal besser gerecht werden zu können.

Computer-Nerd seit 1983, Audio-Freak seit 1979 und seit über 50 Jahren so ziemlich offen für alles, was einen Stecker oder einen Akku hat.

Folge Igor auf:
YouTube   Facebook    Instagram Twitter

Werbung

Werbung