Plattformübergreifende HDR-Display-Unterstützung in Unity 2023

Grüße vom Unity Graphics Team. Wir freuen uns, Ihnen mitteilen zu können, dass Unity 2023.2.0a18 (und 2023.2 Beta) jetzt plattformübergreifende HDR-Ausgabeunterstützung und vollständige Kompatibilität mit der Universal- und High-Definition Render Pipeline bietet.
HDR-Displays mit hohem Dynamikumfang werden immer verfügbarer. Sie sind in der Lage, Bilder mit höherer Spitzenhelligkeit und einem breiteren Farbumfang wiederzugeben, um einen besseren Kontrast (Highlights/Schatten) und Farbsättigung zu erreichen. Dies führt zu realistischeren Variationen der Leuchtdichte über Szenen hinweg, vergrößerten Oberflächendetails und verbesserter Tiefenwahrnehmung.

Bevor wir weitere Informationen zur Aktivierung der HDR-Anzeige für Ihr Projekt sowie Plattformunterstützung und nützliche Richtlinien bereitstellen, möchten wir uns kurz mit den Konzepten von HDR Rendering und Anzeige befassen.
Wenn das HDR Rendering aktiviert ist, rendert die Kamera die Szene in einen Gleitkomma-Framebuffer, wodurch die Render-Pipeline einen größeren Bereich von Farbwerten speichern und Details besser erhalten kann. Shader-Berechnungen wie Beleuchtung und Nachbearbeitung erfolgen mit genaueren Werten (im Vergleich zum SDR-Rendering), was zu überzeugenderen und realistischeren Ergebnissen führt.
HDR Rendering ist zwar seit Jahren der Standard-Workflow, aber ein Mangel an HDR-fähigen Displays begrenzt die Farbtiefe des darstellbaren Bildes auf maximal 8 Bit pro Kanal. Dies begrenzt die maximale Anzahl von Farben, die ein Pixel darstellen kann (16.777.216 verschiedene Farbwerte) und den maximalen Helligkeitsbereich. Das HDR-Tone-Mapping wird verwendet, um die HDR-Werte des Farbpuffers in einen niedrigen Dynamikbereich umzumappen und optional Gammakorrekturen durchzuführen, bevor die Ergebnisse schließlich zur Darstellung in das Swap-Chain-Bild geschrieben werden.
Unity 2022.1 hat HDR Display Support für die High-Definition Render Pipeline (HDRP) für Desktop- und Konsolenplattformen eingeführt. Dies funktioniert durch die Einstellung des geräteeigenen Farbraums bei der Erstellung der Swap-Kette und die Verwendung eines benutzerdefinierten HDR Tone Mappings, um den Inhalt des Farbpuffers dem Bereich der anzeigennativen HDR zuzuordnen. Als letzter Schritt vor dem Schreiben in das HDR Swap Chain Image wird dann die HDR Codierung angewendet.
Bei aktivierter HDR Ausgabe ist das Bildformat der Swap-Kette so eingestellt, dass eine höhere Farbtiefe (entweder 10 oder 16 Bit pro Kanal) ermöglicht wird. Dadurch kann jedes Pixel einen viel größeren Bereich möglicher Farbwerte darstellen (rund 68 Milliarden verschiedene Werte) und verfügt über einen stark erhöhten Helligkeitsbereich.
Mit der Veröffentlichung von Unity 2023.2 bieten Unity Editor und Standalone Player jetzt Full HDR Tone Mapping und Display-Unterstützung für alle Render Pipelines und fähigen Plattformen.
Die neuen HDR Display-Einstellungen finden Sie in den Player-Einstellungen Ihres Projekts unter Bearbeiten > Projekteinstellungen > Player > Andere Einstellungen:
- Ausgabe von HDR Displays zulassen
- HDR Display-Ausgang verwenden
Diese Einstellungen ermöglichen die HDR Ausgabe für Unity Standalone Player und den Editor, wenn sie auf unterstützten Plattformen ausgeführt werden.
Bei aktivierter HDR Ausgabe können Sie optional die Swap Chain Bit Depth so konfigurieren, dass eine niedrigere (10 Bit pro Kanal) oder höhere (16 Bit pro Kanal) bevorzugte Farbtiefe für das präsentierte Bild eingestellt wird. Hinweis: Nicht alle Geräte unterstützen 16-Bit-Pufferformate und können stattdessen auf 10-Bit zurückgreifen.
Achten Sie bei der Verwendung der Universal Render Pipeline (URP) darauf, dass die verwendeten Render Pipeline-Assets auf HDR Rendering eingestellt sind. Wählen Sie die im Projekt enthaltenen RP-Assets aus (normalerweise im Ordner Assets > Settings), navigieren Sie dann zum Projektinspektor und aktivieren Sie Quality > HDR.
Vergewissern Sie sich schließlich, dass die HDR Tone Mapping aktiviert ist, indem Sie eine Tonemapping-Komponente zur Nachbearbeitungslautstärke hinzufügen, die sich auf Ihre Kameras auswirkt. Wenn die HDR ausgegeben wird, sollten die folgenden Tone-Mapping-Einstellungen von den HDR-Funktionen des Displays gesteuert werden:
- Unterstützte Mindesthelligkeit
- Maximal unterstützte Helligkeit
- Paper White-Wert: Dieser Wert repräsentiert die Helligkeit einer auf dem Display dargestellten papierweißen Oberfläche, die die Helligkeit des Displays insgesamt bestimmt.
Sie können über eine C# API auf den HDR Bereich und den Papierweißwert des Displays zugreifen.
Für ein optimales Zuschauererlebnis empfehlen wir die Laufzeitkontrolle über diese Parameter über eine dafür vorgesehene HDR Kalibrierschnittstelle. Demnächst werden wir ein neues HDR Kalibrierbeispielprojekt vorstellen, das Sie als Referenzimplementierung für den Anfang verwenden können.
Detailliertere Informationen zur HDR Tone Mapping und Ausgabe finden Sie in der aktualisierten Dokumentation zur HDR Ausgabe in URP und HDR Ausgabe in HDRP.
Um die HDR-Ausgabe während der Laufzeit zu nutzen, muss das Gerät an ein HDR-fähiges Display angeschlossen sein und die GPU muss über die erforderliche Unterstützung für die Aktivierung einer HDR-Swap-Kette und -Darstellung verfügen.
Die HDR Ausgabe wird automatisch während der Laufzeit deaktiviert, wenn sie auf inkompatiblen Geräten ausgeführt wird. Sie können mit HDROutputSettings.available abfragen, ob HDR auf dem Hauptdisplay unterstützt wird und ob HDR-Ausgabe aktiviert ist.
Zusätzlich zu der in Unity 2022 verfügbaren Desktop- und Konsolenunterstützung wird in Unity 2023.2 für folgende Plattformen mobiler Support eingeführt:
- iOS-Player (iOS 16+, iPadOS 16+)
- Android Spieler, die Vulkan und GLES verwenden (Android 9+, je nach Gerätefähigkeit)
Zu den gängigen Mobilgeräten, die HDR unterstützen, gehören iPhone X und neuer, Samsung Galaxy S10 und neuer, Galaxy Note 10 und neuer, Galaxy Tab S6 und neuer...
Mit dieser Version wird auch die XR-Unterstützung für leistungsfähige Plattformen eingeführt. Die HDR-Display-Unterstützung finden Sie in der Dokumentation der XR-Plattform.
Die HDR Verarbeitung erfolgt in zwei Schritten: HDR Tone Mapping und Coding. Beide Schritte werden normalerweise während des letzten Nachbearbeitungs-Rendering-Durchlaufs durchgeführt.
Die einzige Ausnahme ist das Einfügen zusätzlicher Durchläufe in URP, die nach der Nachbearbeitung ausgeführt werden. In diesen Fällen wird die HDR-Kodierung in einem „End-Blit“-Durchlauf, der immer am Ende der Rendering-Pipeline aufgerufen wird, separat angewendet.
Benutzerdefinierte Overlay-Durchläufe, die im RenderPassEvent.AfterRenderingPostProcessing-Ereignis eingefügt werden, erfordern eine spezielle Behandlung der HDR Ausgabe. Wenn die HDR-Ausgabe aktiv und die Nachbearbeitung aktiviert ist, hätten die vorherigen Durchläufe Tone Mapping und Farbraumkonvertierung angewendet. Daher müssen Sie Ihre eigenen Effekte erstellen, um mit dem erwarteten Dynamikumfang und Farbraum zu arbeiten.
Bei Verwendung der HDR Ausgabe empfehlen wir HDR Rendering für alle anzeigbaren Kameras zu aktivieren. Sie können HDR Rendering weiterhin auf Kamerabasis deaktivieren, müssen aber sicherstellen, dass nach der Nachbearbeitung keine Renderdurchläufe ausgeführt werden oder Effekte, die nach der Nachbearbeitung Durchläufe einfügen. Bei Verwendung von SDR-Rendering mit HDR-Ausgabe werden die folgenden Funktionen nicht unterstützt:
- Hochskalieren
- FXAA
- HDR Debug-Modi
- Benutzerdefinierte Durchläufe nach der Nachbearbeitung
Stellen Sie beim 2D Renderer sicher, dass die Nachbearbeitung deaktiviert ist, wenn Sie das SDR-Rendering mit HDR-Ausgabe verwenden möchten.
Detailliertere Informationen zu den oben aufgeführten Einschränkungen und Richtlinien finden Sie in der offiziellen Dokumentation:
Bitte versuchen Sie es mit der neuen HDR Display Unterstützung in Ihrem Projekt und teilen Sie uns mit, was Sie davon halten.
Ihr Feedback war hilfreich und hilft uns, die wichtigsten Lösungen zu priorisieren. Sehen Sie sich unsere öffentliche Roadmap an, um über Funktionen abzustimmen, die Ihren Anforderungen am besten entsprechen, und besuchen Sie unsere Grafikforen für weitere Informationen. Wenn es zusätzliche Änderungen gibt, die Sie sehen möchten, können Sie gerne eine Funktionsanfrage stellen oder sich direkt an das Team wenden.
Wenn Ihnen dieser tiefe Einblick gefallen hat, sehen Sie sich die technischen Aufschlüsselungen der Unity-Entwickler als Teil der laufenden Tech-Serie aus den Trenches an.
