Direct3D 12, Shader Model 6 und Windows-RHI

Aus UnrealWiki
Version vom 4. September 2026, 13:03 Uhr von Elaina (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{Hinweis|Stand: Unreal Engine 5.8 unter Windows. Bezeichnungen in der Oberfläche können bei lokalisierten Editor-Versionen leicht abweichen.}} '''Direct3D 12 (D3D12)''' ist Microsofts moderne Grafikschnittstelle. Unreal Engine greift nicht direkt aus jedem Spielsystem darauf zu, sondern über das '''Rendering Hardware Interface (RHI)'''. Das RHI vereinheitlicht verschiedene Grafik-APIs wie Direct3D 11, Direct3D 12 und Vulkan. '''Shader Model 6 (SM6)'…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Hinweis: Stand: Unreal Engine 5.8 unter Windows. Bezeichnungen in der Oberfläche können bei lokalisierten Editor-Versionen leicht abweichen.

Direct3D 12 (D3D12) ist Microsofts moderne Grafikschnittstelle. Unreal Engine greift nicht direkt aus jedem Spielsystem darauf zu, sondern über das Rendering Hardware Interface (RHI). Das RHI vereinheitlicht verschiedene Grafik-APIs wie Direct3D 11, Direct3D 12 und Vulkan.

Shader Model 6 (SM6) bezeichnet die neuere Shader-Funktionsstufe und den zugehörigen Compilerpfad. D3D12 und SM6 sind verschiedene Einstellungen: D3D12 wählt die Grafik-API, SM6 das Shader-Ziel innerhalb des D3D12-Pfads.

Warum D3D12 und SM6?

Epic empfiehlt D3D12 für die meisten Spiele. In UE 5.8 benötigen mehrere moderne Rendering-Funktionen SM6:

  • Lumen und MegaLights unter Windows setzen D3D12 und aktiviertes SM6 voraus; Lumen Hardware Ray Tracing benötigt SM6.
  • Nanite und Virtual Shadow Maps benötigen unter Windows D3D12 mit SM6; für Nanite nennt Epic D3D12 mit Shader-Model-6.6-Atomics sowie aktuelle Treiber.
  • Temporal Super Resolution läuft grundsätzlich auch mit SM5, kann unter D3D12/SM6 aber 16-Bit-Typen nutzen. Der SM5-Pfad ist unter anderem durch acht UAVs pro Shader eingeschränkt. Ein UAV ist eine Shader-Ressource mit ungeordnetem Lese-/Schreibzugriff.

SM6 macht eine GPU nicht automatisch schneller. Es schaltet Fähigkeiten frei; Nutzen und Kosten hängen von Renderer, Shadern, Treiber und Hardware ab.

Windows-RHI im Editor einstellen

  1. Edit > Project Settings > Platforms > Windows öffnen.
  2. Unter Targeted RHIs die benötigten Ziele aktivieren. Für den modernen Windows-Pfad DirectX 12 (SM6) einschalten.
  3. Default RHI auf DirectX 12 setzen. Epic weist darauf hin, dass das ausgewählte Standard-RHI auch als Targeted RHI aktiviert sein muss.
  4. Den Editor neu starten. Eine RHI-Änderung wird erst danach wirksam; geänderte Shaderziele können eine längere Shader-Kompilierung auslösen.

DirectX 11 & 12 (SM5) ist ein separater Kompatibilitätspfad. Wer SM5 zusätzlich aktiviert, erzeugt weitere Shader-Varianten und vergrößert damit typischerweise Cook- und Build-Aufwand. Für eine klar definierte D3D12-/SM6-Zielhardware sollte nur der tatsächlich benötigte Satz gepflegt werden; bei breiter Hardwareunterstützung muss der Fallback bewusst getestet werden.

Kurzzeitig über die Kommandozeile testen

Die UE-5.8-Referenz dokumentiert folgende Startparameter:

  • -dx12 erzwingt das D3D12-RHI.
  • -dx11 erzwingt das D3D11-RHI.
  • -sm6 beziehungsweise -sm5 erzwingt das Shader Model.
  • -forcedisablesm6 deaktiviert SM6 für einen Vergleichstest.

Beispiel:

UnrealEditor.exe MeinProjekt.uproject -dx12 -sm6

Erzwungene Parameter eignen sich für Diagnose und A/B-Tests. Sie ersetzen keine korrekt gepflegten Targeted RHIs. Eine nicht unterstützte erzwungene Kombination kann den Start verhindern.

Praktische Prüfliste

  1. Windows-Version, GPU-Funktionsumfang und aktuellen stabilen Herstellertreiber prüfen.
  2. D3D12 als Default RHI und D3D12 SM6 als Ziel aktivieren.
  3. Nach dem Neustart das Startprotokoll kontrollieren: verwendetes RHI, gewählter Adapter und Shader-Plattform müssen zur Erwartung passen.
  4. Benötigte Funktionen einzeln prüfen: Nanite, Virtual Shadow Maps, Lumen oder Hardware Ray Tracing.
  5. Einen Development- oder Test-Build auf der schwächsten unterstützten Ziel-GPU ausführen. Ein erfolgreicher Editorstart allein beweist keine vollständige Kompatibilität.
  6. D3D11/SM5 nur behalten, wenn dieser Pfad wirklich unterstützt, gekocht und getestet wird.

Typische Stolperfallen

  • D3D12 aktiviert, SM6 vergessen: Das RHI stimmt, moderne Funktionen bleiben dennoch nicht verfügbar.
  • Default RHI ohne passendes Target: Epic verlangt, dass das Standard-RHI zugleich als Ziel ausgewählt ist.
  • Altes Windows oder alter Treiber: Besonders Nanite und Virtual Shadow Maps benötigen geeignete Windows-Builds, D3D12 Agility SDK-Unterstützung und aktuelle Treiber.
  • Shader-Neukompilierung unterschätzt: Ein Wechsel des Shaderziels kann viele Shader neu erzeugen.
  • Nur auf einer GPU getestet: D3D12/SM6-Unterstützung und Stabilität sind Eigenschaften der gesamten Kombination aus Betriebssystem, Treiber und Hardware.

Bezug zu UE5 Heterogeneous Multi-GPU

Für UE5 Heterogeneous Multi-GPU ist D3D12 nicht nur ein Renderer-Schalter, sondern die Grundlage des expliziten Unlinked-Multiadapter-Prototyps. Die Windows-RHI-Einstellungen bestimmen zunächst den regulären Unreal-D3D12-Pfad und die Shaderplattform. Sie aktivieren jedoch nicht automatisch:

  • eine zweite, heterogene GPU,
  • Cross-Adapter Heaps oder gemeinsam nutzbare Ressourcen,
  • Shared Fences zur Synchronisation,
  • die Auswahl eines Worker-Adapters oder die Verteilung von Compute-Arbeit.

Diese Funktionen müssen Jans Engine-Anpassungen ausdrücklich auf D3D12-Ebene implementieren. Ein sauberer D3D12-/SM6-Basiszustand ist trotzdem wichtig: Er trennt allgemeine RHI- oder Shaderprobleme von Fehlern im Multiadapter-Code.

Quellen