Aufgrund der hohen Rendering Anforderungen für XR erfordert die Unreal Engine (UE) eine Reihe von Performance Optimierungen. Zudem wurden neue Rendering Modi in der Unreal Engine (UE) eingeführt, die nur für XR spezifisch sind. Im folgenden Dokument schauen wir uns diese Funktionen und wie Sie sie in Ihren UE-XR-Projekten einsetzt an.
Schattierung mit variabler Rate und fixiertes foveatisiertes Rendering
Variable Rate Schattierung (VRS) ist eine Funktion, die auf neueren GPUs unterstützt wird und verschiedene Methoden zur Anpassung der Schattierung von Pixeln in einem Renderziel (oder Zielen) bietet. Die Standard Schattierung Rate in jedem Setup beträgt 1:1, wobei 1 Pixel-Shader-Aufruf auf 1 Ziel Pixel auf dem Bildschirm angewendet wird. Mit VRS können Sie alternative Schattierung-Raten festlegen, insbesondere 1x2, 2x1, 2x2, 2x4, 4x2 und 4x4. Beispiel sehen Sie bei einer Schattierung Rate von 2x2 einen einzelnen Pixel-Shader -Aufruf für eine Gruppe von 2x2 Pixel (4 Pixel) und bei 4x4 einen einzigen Pixel-Shader-Aufruf für eine 4x4- Gruppe (16 Pixel).
Die Schattierungsrate kann entweder materialspezifisch oder über einen Schattierung Bildanhang (über Tier-2-VRS) angewendet werden.
Fixiertes foveated Rendering ist eine Technik, die bildbasiertes VRS in VR-Headsets verwendet, um die Schattierung eines Ziels anzupassen und die Schattierung zum Rand des Blickfelds hin zu verringern. Aufgrund optischer Verzerrungen verliert die GPU immer mehr Pixeldetails zum Bildrand hin. Durch die Anwendung eines VRS-Bildes, das die Schattierungsrate weiter außerhalb der Bildmitte reduziert, können Sie die Leistung verbessern, ohne dass die Bildqualität dabei wahrnehmbar beeinträchtigt wird.
Fixierte Foveation verwendet einen Anhang, der über einen Compute-Shader generiert wird:
Die mittleren (schwarzen) Gebiete auf beiden Seiten entsprechen dem Zentrum jeder Stereoansicht; dunklere Gebiete haben eine höhere Schattierung, wobei Schwarz voll ist (1x1, 1 Pixel-Shader-Aufruf pro Pixel), dunkles Rot mit halber Rate in x und y (2x2, 1 Pixel-Shader-Aufruf pro 4 Pixel) und helleres Rot mit Viertelrate (4x4, 1 Pixel-Shader-Aufruf pro 16 Pixel).
Die anfänglichen Ergebnisse mit VRS-Anhängen an Basis-Pass und Transparenz-Durchlauf sind vielversprechend. Aktuell ist das noch ein Machbarkeitsnachweis und könnte auch an anderen Stellen als Basis und Transparenz-Durchlauf eingesetzt werden.
Projekt-Einstellungen
Um auf die VRS-Einstellungen zuzugreifen, gehen Sie im Hauptmenü zu Bearbeiten > Projekt-Einstellungen. Gehen Sie dann im Fenster Projekt-Einstellungen zu Engine > Rendering > VR.
Konsolenvariablen
Sie können die folgenden Konsolenvariablen verwenden:
| Variable | Beschreibung |
|---|---|
r.vrs.Aktiviert | Aktiviert oder deaktiviert VRS in der gesamten Engine (Material-basiertes VRS und alle aktiven bildbasierten VRS). |
r.VRS.EnableImage | Aktiviert oder deaktivieren nur bildbasiertes VRS. Materialabhängige VRS wird weiterhin funktionieren, wenn es aktiviert ist und unterstützt wird. |
vr.VRS.HMDFixedFoveationLevel | Qualität und Performance Einstellung für Foveated Rendering mit HMD fixiert. |
vr.VRS.HMDFixedFoveationDynamic | Aktivieren oder deaktivieren Sie, ob der feste Foveationslevel basierend auf der GPU-Auslastung angepasst werden soll. |
Bekannte Einschränkungen
Nur verfügbar auf Windows-Geräten mit DirectX 12 und VRS Tier 2 Support, Windows-Geräten mit Vulkan und VK_KHR_fragment_shading_rate Erweiterung sowie Oculus Quest.
Nicht kompatibel mit NVIDIAs DLSS.
Augen-Tracking-Foveated- Rendering wird derzeit nicht unterstützt.
Instanced Stereo
Instanziertes Stereo-Rendering verringert die Auswirkungen auf die Performance von XR in der UE. Aktivieren Sie diese Funktion, indem Sie zu Projekt-Einstellungen > Engine > Rendering > Instanced Stereo navigieren und dann die Option Instanced Stereo prüfen.
Nachdem Instanzierung Stereo-Rendering aktiviert wurde, ist ein Neustart der Engine und eine Shader-Rekompilierung erforderlich. Der Basis-Pass und Early-Z-Durchlauf funktionieren mit statischen Meshes, Skelett-Meshes, Sprite-Partikeln und Mesh-Partikeln, wenn die Funktion aktiviert ist (sowohl serielle als auch parallele Rendering-Pfade). Instanced Stereo funktioniert derzeit auf dem PC (DirectX) und der PS4, wobei nach der anfänglichen Freigabe mit Version 4.11 auch andere Plattformen unterstützt werden. Hier ist ein Video, das Standard Stereo Rendering in VR vs. Instanzierung Stereo Rendering in VR vergleicht.
Multiview Support für Mobilgeräte
Bestimmte (unterstützte) Mobilgeräte können jetzt VR Multiview unterstützen. Mobile Multiview ähnelt instanziertem Stereo-Rendering, das für Desktop-PCs verfügbar ist, und bietet einen optimierten Pfad für Stereo-Rendering auf der CPU des Mobilgeräts. Um diese Funktion zu aktivieren, müssen Sie Folgendes tun:
Gehen Sie in der Haupt-Symbolleiste zu Bearbeiten > Projekteinstellungen, um die Projekteinstellungen des Editors zu öffnen.
Gehen Sie dann zu Engine > Rendering > VR, und suchen Sie nach der Option Mobilgerät Multi-View.
Aktivieren Sie die Mobilgerät Multi-anzeigen Option und starte die Unreal Engine neu, damit die Änderungen Effekt werden.
Mobile Multiview funktioniert nur mit modernen GPUs, die auf Mali basieren.
Diese Funktion ist zur Laufzeit deaktiviert, wenn Sie dieses Projekt verpacken, aber keine kompatible GPU haben.
Vorwärtsrendern
By default, Unreal Engine uses a Deferred Renderer as it provides the most versatility and grants access to more rendering features. However, there are some trade-offs in using the Deferred Renderer that might not be right for all VR experiences. Forward Rendering provides a faster baseline, with faster rendering passes, which may lead to better performance on VR platforms. Not only is Forward Rendering faster, it also provides better anti-aliasing options than the Deferred Renderer, which may lead to better visuals.
Weitere Informationen zu dieser Funktion finden Sie in der Dokumentation zu Forward Shading Renderer.
Performance-Profiling
Um Assets zu tracken, die zu teuer für VR sind, müssen Sie profiling betreiben, was Ihr Projekt über die Lebenszeit Ihres Projekts auf der CPU und GPU so genau wie möglich macht.
GPU Profiling – Um den GPU Profiler zu aktivieren, möüssen du lediglich Strg + Umschalt + , (Komma) gleichzeitig drücken, während Sie Ihr Projekt laufen lassen. Nachdem Sie die Tasten gedrückt haben, erscheint ein neues Fenster, das wie Bild aussieht:
CPU Profiler – Das Profiling dessen, was Ihr Projekt auf der CPU tut, ist etwas mehr als das Profiling für die GPU. Weitere Informationen dazu finden Sie in der Performance Profiler Dokumentation.
Nachbearbeitungs-Einstellungen
Aufgrund der hohen Rendering-Anforderungen von VR sollten viele der standardmäßig aktivierten, erweiterten Nachbearbeitungsfunktionen deaktiviert werden, oder Ihr Projekt könnte beeinträchtigt werden. Performance Probleme auftreten. Um das in Ihrem Projekt zu erreichen, müssen Sie Folgendes tun.
1. Fügen Sie ein Nachbearbeitungsvolumen (PP) in Ihr Level ein, wenn nicht bereits eines vorhanden ist. 1. Wählen Sie das PP-Volumen und schalten Sie in der Sektion Nachbearbeitungsvolumen die Option Infinite Extent (Ungebunden) ein, damit die Einstellungen im PP-Volumen auf das gesamte Level angewendet werden.
![Aktivieren Sie die Option Ungebunden für das Nachbearbeitungsvolumen(enable-unbound-post-process-volume.png)
1. Erweitern Sie die Einstellungen des Nachbearbeitungsvolumen und gehen Sie dann jede Sektion durch, um aktive PP-Einstellungen zu deaktivieren, indem Sie diese Eigenschaft aktivieren; darauf klicken und den Wert vom Standard (normalerweise 1.0) auf 0 setzen, womit die Funktion deaktiviert wird.
Sie müssen dabei nicht jeden Sektion treffen und dessen Eigenschaften auf 0 setzen. Deaktivieren Sie stattdessen zuerst die wirklich heftigen Funktionen wie Lens Flares, Bildschirmraum-Reflexionen, temporales AA, Screen Space Ambient Occlusion, Bloom und alle anderen, die Auswirkungen auf die Performance haben könnten.