NEWS

Neue DX12-Funktionen

Mesh Shader und Raytracing Tier 1.1

Portrait des Authors


Mesh Shader und Raytracing Tier 1.1
7

Werbung

Mit dem nächsten großen Update für Windows 10, oftmals als 20H1 bezeichnet, wird Microsoft auch neue Funktionen für DirectX 12 einführen. In einer der nächsten Versionen der Windows 10 Insider Preview Builds werden diese bereits enthalten sein.

Neu sind die DirectX Mesh Shader, DirectX Raytracing Tier 1.1 und ein DirectX Sampler Feedback, welches ein Texture-Space Shading sowie Texture Streaming unterstützen wird.

Im Frühjahr 2018 kündigte Microsoft die DXR-Schnittstelle an, die erstmals auf Raytracing-Effekte ausgelegt war. Kurze Zeit später kündigte NVIDIA die entsprechende Unterstützung an – im Sommer dann hardwarebeschleunigt durch die RT Cores der Turing-Architektur. Bisher ist man der einzige Anbieter, der die DXR-Schnittstelle anspricht, obwohl dies auch durch einfache Shader allen GPUs und Herstellern möglich wäre. Die Hardwarebeschleunigung über die RT Cores versetzt NVIDIA aber in die Gelegenheit, zumindest Teile eines Frames bzw. bestimmte Effekte mittels Raytracing zu berechnen. Im kommenden Jahr sollen die Konsolen Raytracing unterstützen und auch AMD hat eine entsprechende Unterstützung angekündigt.

Das Update für DirectX 12 bringt nun DirectX Raytracing Tier 1.1 bzw. DXR Tier 1.1. Die Neuerungen sind die folgenden:

  • Support for adding extra shaders to an existing Raytracing PSO, which greatly increases efficiency of dynamic PSO additions.
  • Support ExecuteIndirect for Raytracing, which enables adaptive algorithms where the number of rays is decided on the GPU execution timeline.
  • Introduce Inline Raytracing, which provides more direct control of the ray traversal algorithm and shader scheduling, a less complex alternative when the full shader-based raytracing system is overkill, and more flexibility since RayQuery can be called from every shader stage. It also opens new DXR use cases, especially in compute: culling, physics, occlusion queries, and so on.

Das was aber sicherlich bei allen Hardwareentwicklern auf der Liste steht, ist eine höhere Raytracing-Leistung, so dass mehr Effekte per Raytracing berechnet werden können und der Leistungsverlust nicht mehr so groß ist.

DirectX Mesh Shader

In DirectX 12 integriert werden die Mesh Shader. 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. Die Mesh Shader sollen eine gewisse Flexibilität in die Geometrie Pipeline bringen.

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 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.

NVIDIA hat die Mesh Shader bereits als Funktion der Turing-Architektur umgesetzt.

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

Texture Streaming

Immer detailreichere Texturen, immer größere Welten – dies alles sorgt vor allem für immer längere Ladezeiten. Um diese zu verkürzen soll das Texture Streaming Daten dann in den Speicher der Grafikkarte laden, wenn diese auch wirklich gebraucht werden. Über eine Feedback Map wird dem Sampler eine entsprechende Rückmeldung gegeben.

  • Render scene and record desired texture tiles using Sampler Feedback.
  • If texture tiles at desired MIP levels are not yet resident:
  • Render current frame using lower MIP level.
  • Submit disk IO request to load desired texture tiles.
  • (Asynchronously) Map desired texture tiles to reserved resources when loaded.

Per Sampler Feedback kann auch ein Texture-Space Shading durchgeführt werden. Dabei müssen verschiedene Shader-Berechnungen nicht immer wieder neu ausgeführt werden, sondern die Ergebnisse können auch mehrfach wiederverwendet werden, was die Leistung der Hardware teilweise deutlich steigern kann.

  • Draw geometry with simple shaders that record Sampler Feedback to determine which parts of a texture are needed.
  • Submit compute work to populate the necessary textures.
  • Draw geometry again, this time with real shaders that apply the generated texture data.

Spielentwickler können ab sofort mit der Umsetzung der neuen Funktionen beginnen. DXR Tier 1.1 und die weiteren Funktionen sind in den Windows 10 Insider Preview Builds und SDK Preview Builds für Windows 10 (20H1) enthalten.