Erstellung von immersiven, fotorealistischen VR-Erlebnissen mit dem High Definition Render Pipeline

SEBASTIEN LACHAMBRE / UNITY TECHNOLOGIESSenior Technical Artist
Mar 12, 2020|7 Min.
Erstellung von immersiven, fotorealistischen VR-Erlebnissen mit dem High Definition Render Pipeline
Diese Website wurde aus praktischen Gründen für Sie maschinell übersetzt. Die Richtigkeit und Zuverlässigkeit des übersetzten Inhalts kann von uns nicht gewährleistet werden. Sollten Sie Zweifel an der Richtigkeit des übersetzten Inhalts haben, schauen Sie sich bitte die offizielle englische Version der Website an.

Wir bringen offiziell virtuelle Realität in die High Definition Render Pipeline (HDRP). In 2019.3.6f1 und später mit Paketversion 7.3.1 ist HDRP jetzt verifiziert und kann in VR verwendet werden.

Dieser Blogbeitrag geht technisch auf die Verwendung von HDRP in Ihrem VR-Projekt ein. Um mehr über all die Möglichkeiten zu erfahren, die HDRP bietet, werfen Sie einen Blick auf diesen Blogbeitrag.

VR in HDRP ist so konzipiert, dass:

Alle HDRP-Funktionen sind mit VR kompatibel.

HDRP wird vollständig mit dem neuen Unity XR Plugin Framework unterstützt.

Single-Pass (Instanzierung) ist die Standard- und empfohlene Rendering-Lösung für VR.

Funktionen im Überblick

Wenn Sie HDRP für ein VR-Projekt verwenden, können Sie alle Funktionen der Render-Pipeline nutzen, um Erfahrungen zu schaffen, die nur durch Ihre Vorstellungskraft begrenzt sind. Mit seinen hochmodernen Rendering-Techniken kann HDRP atemberaubende, fotorealistische Grafiken in einer Qualität liefern, die in virtuellen Realität-Umgebungen selten zuvor gesehen wurde.

Hier ist eine sehr schnelle Übersicht über die Funktionen, die für Ihre VR-Projekte verfügbar sind:

  • Deferred- und Forward-Rendering
  • Alle Lichtarten, Schatten, Decals und volumetrische Effekte
  • Bildschirmraum-Effekte
  • Ambient Occlusion (AO)
  • Screen Space Reflection (SSR)
  • Subsurface Scattering (SSS)
  • Verzerrung und Brechung
  • Post-Processing
  • Farbkorrektur, Anti-Aliasing, Tiefenschärfe usw.
  • Alle VFXs aus dem Visual Effect Graph
Unterstützte Plattformen

VR für HDRP ist derzeit für die folgenden Plattformen und Geräte verfügbar:

  • Oculus Rift & Rift S (Oculus XR Plugin, Windows 10, DirectX 11)
  • Windows Mixed Reality (Windows XR Plugin, Windows 10, DirectX 11)
  • PlayStationVR

OpenVR: Valve entwickelt derzeit ihr OpenVR Unity XR Plugin für 2019.3 und höher, und dies wird bald verfügbar sein.

Stereorendering-Techniken

Eine native VR-Implementierung verarbeitet alles zweimal – einmal für jedes Auge. Wir nennen diese Lösung Multipass-Rendering. HDRP unterstützt Multipass-Rendering, jedoch empfehlen wir diese Methode nicht, da Ihre Anwendung doppelt so viel CPU-Leistung für das Rendering benötigt, was im Wesentlichen die Anzahl Ihrer Draw Calls verdoppelt. Darüber hinaus werden Schatten zweimal gerendert und könnten einen erheblichen Teil Ihres GPU-Budgets verbrauchen.

Das gesagt, gibt es einige Fälle, in denen die Verwendung von Multipass angemessen ist:

  • Wenn Ihr System über eine geringe Menge an GPU-Speicher verfügt, benötigt Multipass weniger Speicher für Renderziele als Single Pass.
  • Wenn Sie aus irgendeinem Grund sehr unterschiedliche Blickwinkel für jedes Auge rendern müssen.

Eine schnellere Lösung besteht darin, Single Pass (instanziertes) Rendering zu verwenden. In diesem Modus wird jeder Draw Call gleichzeitig für beide Augen gerendert. Dies wird erreicht, indem ein Textur-Array für die Renderziele und instanzierte Draw Calls verwendet werden. Darüber hinaus werden Culling und Schatten nur einmal pro Frame verarbeitet.

HDRP wurde so konzipiert, dass alle Funktionen mit VR kompatibel sind und für das Single Pass Rendering optimiert sind.

Die wichtigste Designentscheidung war die Verwendung von Textur-Arrays für alle Renderziele (auch wenn Sie nicht für VR erstellen). Diese Entscheidung, zusammen mit Shader-Makros, hat es uns ermöglicht, Shader zu erstellen, die automatisch mit VR kompatibel sind, abgesehen von einigen Sonderfällen (z. B. Lichtlisten-Generierung, indirektes Kachel-Deferred-Shading, volumetrische Beleuchtung und kamerarelativer Rendering).

Beachten Sie, dass das Rendering mit einem Durchgang für doppelt breite Texturen von HDRP nicht unterstützt wird, aufgrund der zusätzlichen Komplexität und des Overheads, die für alle Vollbilddurchgänge und Effekte erforderlich sind.

Beginnen Sie mit HDRP VR

Um mit HDRP VR zu beginnen, sehen Sie sich den VR-Überblick Abschnitt in der Unity-Dokumentation an. Um Ihnen bei der Einrichtung von HDRP mit VR zu helfen, bieten wir auch einen HDRP-Assistenten an, der Ihre Einstellungen validiert und Ihnen helfen kann, alle Einstellungen zu korrigieren, die der Assistent als falsch identifiziert.

hdrp-assistent

Um Ihr Projekt manuell für VR mit dem neuen XR-Plugin-Framework zu konfigurieren, beziehen Sie sich bitte auf die Dokumentation. Um das Rendering mit einem Durchgang einzurichten, müssen Sie beide Projekteinstellungen auf den Modus für stereoskopisches Rendering mit einem Durchgang und die HDRP-Asset-Einstellungen auf einen Durchgang setzen. HDRP wird standardmäßig auf Mehrfachdurchgang umschalten, wenn eine dieser beiden Optionen nicht für einen Durchgang aktiviert ist.

Xr-Einstellungen

Anti-Aliasing

Die Reduzierung von Aliasing ist in VR äußerst wichtig, um ein großartiges Benutzererlebnis zu schaffen und die Immersion der virtuellen Umgebung nicht zu beeinträchtigen. HDRP bietet mehrere Lösungen zur Unterstützung von Anti-Aliasing.

Die Anti-Aliasing-Modi der Kamera werden ausführlich in der Unity-Dokumentation beschrieben. Diese Optionen umfassen:

  • Multisampling-Anti-Aliasing (MSAA) wird mit Forward-Rendering unterstützt. Sie können Qualität und Leistung ausbalancieren, indem Sie die Anzahl der Proben (2x, 4x, 8x) wählen. Diese Technik kann großartige Ergebnisse erzielen, kann aber auch teuer sein.
  • Temporales Anti-Aliasing ist wahrscheinlich die beste Lösung für die meisten Anwendungen. Es ist sehr effektiv bei der Reduzierung von Aliasing, kann jedoch einige Details verwischen. Sie können diese Unschärfe mit der enthaltenen Schärfekontrolle ausgleichen.
  • Etwas günstigere Lösungen sind Fast Approximate Anti-Aliasing (FXAA) oder Subpixel Morphological Anti-Aliasing (SMAA).
  • Es ist auch möglich, MSAA mit TAA, FXAA oder SMAA zu kombinieren. Diese Technik verbessert die visuelle Qualität, aber die Kosten sind kumulativ.
  • Es gibt auch zusätzliches Schattierungs-Anti-Aliasing pro Material mit Geometric Specular Anti-Aliasing, das Sie direkt an Materialien anpassen können. Seine Verwendung wird für glatte und dichte Oberflächen empfohlen.

Leistung

VR-Rendering ist aufgrund der höheren Bildwiederholrate und Auflösung, die für beide Augen erforderlich ist, äußerst anspruchsvoll. Stellen Sie sicher, dass Sie alle Funktionen deaktivieren, die Sie in den HDRP-Asset-Einstellungen nicht benötigen. Funktionen wie Volumetrisch sind für VR-Anwendungen nicht geeignet, da ihre Leistung die erforderlichen 90 fps trotz Unterstützung nicht erreicht. Häufiges Überwachen und Profilieren der Leistung hilft Ihnen, Engpässe in Ihrem Projekt zu identifizieren.

Beachten Sie, dass standardmäßig die Präzision volumetrischer Effekte (z-Schnitte) in VR halbiert wird, um die GPU-Leistung akzeptabler zu halten. Zusätzlich zu volumetrischem Licht wird dringend empfohlen, HDRP Area Light-Unterstützung zu deaktivieren, wenn Sie ein VR-Projekt durchführen. Im Gegensatz zu anderen Funktionen muss das Area Light über die Shader-Konfigurationsdateien deaktiviert werden.

Es gibt zwei Rendering-Methoden in HDRP, die auch die Leistung beeinflussen: Lit Shader Mode Vorwärts und Deferred. Um mehr über die Unterschiede zwischen diesen beiden Modi zu erfahren, lesen Sie bitte die Dokumentation. Die Wahl des richtigen Modus für VR hängt von den Anforderungen des Projekts ab. Das Vorwärts-Rendering ermöglicht es Ihnen, MSAA zu aktivieren und den Speicherverbrauch zu reduzieren, während das Deferred-Rendering effizienter für Projekte mit einer großen Anzahl von Lichtern ist, aber auch mehr Speicher verbraucht.

Ein weiterer Faktor, der die GPU-Leistung beeinflusst, ist die Auflösung des Renderpuffers. Diese Auflösung wird zunächst vom XR-Display-Plugin festgelegt und hängt von dem verwendeten Headset ab. Sie können dann die Auflösung in Ihrer Anwendung anpassen oder die dynamische Auflösung Funktion verwenden, um die Auflösung je nach Kontext der aktuellen Szene zu steuern. Zum Beispiel könnte die Auflösung basierend auf der aktuellen GPU-Bildzeit angepasst werden.

Für weitere Tipps, schauen Sie sich diesen HDRP VR-Vortrag von Unite 2019 Kopenhagen. an.

Technischer Einblick in HDRP VR

Um VR in HDRP zu unterstützen, haben wir eine Reihe von Shader-Makros hinzugefügt, um die Sichtinstanzierung und die Verwendung von Texturarrays für das Renderziel zu handhaben. Zum Beispiel können Sie eine Textur in einem Shader mit dem folgenden Code deklarieren:

TEXTURE2D_X(MyTexture);

Auf Plattformen, die Texturarrays unterstützen, wird dieses Makro zu TEXTURE2D_ARRAY erweitert. Wenn die Plattform keine Texturarrays unterstützt oder wenn die Einstellung in ShaderConfig.cs deaktiviert ist, wird das Makro zu regulärem TEXTURE2D erweitert. Ähnliche Funktionen sind für das Textursampling verfügbar.

Auf der Shader-Seite werden die richtigen Sichtkonstanten (Sichtmatrix, Projektionsmatrix usw.) im Array gespeichert und basierend auf dem Augenindex indiziert, der aus der instanceID der Primitiven abgeleitet wird. Im Fall von Compute-Shadern wird die z-Dispatch-Dimension verwendet, um jedes Auge zu identifizieren. Das Makro UNITY_XR_ASSIGN_VIEW_INDEX wird normalerweise verwendet, um den richtigen Augenindex zuzuweisen.

Die Zukunft von HDRP VR

Zukünftige Versionen von HDRP VR werden sich auf Folgendes konzentrieren:

  • Verbesserung der Leistung mit neuen Hardwareoptionen wie Variable Rate Shading
  • Verbesserung der Plattformunterstützung mit Vulkan und DX12
  • Verbesserung der Geräteunterstützung
  • Die Erweiterung des Einzelpassverfahrens zur Unterstützung von mehr als zwei Ansichten
Lass uns wissen, was du denkst

Du kannst heute bereits von HDRP VR profitieren. Wir würden uns freuen, dein Feedback im HDRP-Forum zu hören, während wir weiterhin Verbesserungen vornehmen.