Dies ist der zweite Artikel einer Reihe, in der erklärt wird, wie Entwickler und technische Künstler die High Definition Render Pipeline (HDRP) in Unity einrichten und verwenden können, um grafischen High-End-Realismus zu erzielen. HDRP stellt einen technologischen Sprung im Echtzeit-Rendering von Unity dar, sodass Sie mit Licht genauso arbeiten können, wie es sich in der realen Welt verhält.
Lesen Sie unbedingt auch die anderen Artikel unserer How-to-Serie für High-End-Beleuchtung:
Der Renderpfad im Lit Shader-Modus beeinflusst, wie Sie Anti-Aliasing verwenden können, um gezackte Kanten aus Ihren Renderings zu entfernen. HDRP bietet je nach Ihren Produktionsanforderungen mehrere Anti-Aliasing-Techniken.
Multisample Anti-Aliasing
Multisample Anti-Aliasing (MSAA) ist eine beliebte Anti-Aliasing-Methode unter PC-Gamern. Dies ist eine hochwertige Hardwaremethode, die die Kanten einzelner Polygone glättet und nur mit Forward-Rendering in Unity funktioniert. Die meisten modernen GPUs unterstützen 2x, 4x und 8x MSAA-Samples.
Stellen Sie in Ihrem aktiven Pipeline-Assetden Lit Shader-Modus auf „Nur Vorwärts“ein. Wählen Sie als Nächstes MSAA 2x, MSAA 4xoder MSAA 8x für die Multisample-Anti-Aliasing-Qualität. Höhere Werte führen zu einem besseren Anti-Aliasing, sind aber langsamer. Dies können wir deutlicher erkennen, wenn wir in die Kameraansichthineinzoomen.
Bei MSAA gibt es einige Einschränkungen, die Sie beachten sollten:
- MSAA ist nicht kompatibel mit Deferred Shading G-Puffern, die die Geometrie der Szene in einer Textur speichern. Daher erfordert Deferred Shading eine der Anti-Aliasing-Techniken zur Nachbearbeitung.
- Da MSAA sich nur mit dem Aliasing von Polygonkanten befasst, kann es das Aliasing, das bei bestimmten Texturen und Materialien auftritt, die von scharfem, spiegelndem Licht getroffen werden, nicht verhindern. Wenn dies ein Problem darstellt, müssen Sie MSAA möglicherweise mit einer anderen Anti-Aliasing-Technik zur Nachbearbeitung kombinieren.
Um Anti-Aliasing als Nachbearbeitungstechnik anzuwenden, verwenden Sie die Post-Anti-Aliasing-Einstellungen:
- Temporales Anti-Aliasing (TAA) kombiniert Informationen aus vergangenen und aktuellen Frames, um Treppeneffekte aus dem aktuellen Frame zu entfernen. Sie müssen Bewegungsvektoren aktivieren, damit es funktioniert. TAA führt im Allgemeinen zu hervorragenden Ergebnissen, kann in manchen Situationen jedoch zu Ghosting-Artefakten führen (z. B. wenn sich ein GameObject schnell vor einer kontrastierenden Oberfläche bewegt). HDRP10 führte Verbesserungen zur Reduzierung typischer TAA-Artefakte ein. Die Implementierung von Unity reduziert Ghosting, verbessert die Schärfe und verhindert das bei anderen Lösungen auftretende Flimmern.
- Fast Approximate Anti-aliasing (FXAA) ist ein Anti-Aliasing-Algorithmus für den Bildschirmbereich , der Pixel zwischen Bereichen mit hohem Kontrast mischt. Es handelt sich dabei um eine relativ schnelle Technik, die keine große Rechenleistung erfordert, aber die Gesamtschärfe des Bildes verringern kann.
- Subpixel Morphological Anti-Aliasing (SMAA) erkennt Ränder im Bild und sucht dann nach bestimmten Mustern zum Mischen. Dies erzeugt schärfere Ergebnisse als FXAA und funktioniert gut mit flachen, Cartoon-artigen oder klaren Kunststilen.
Hinweis Achten Sie bei der Kombination von Nachbearbeitung und Multisample-Antialiasing auf die Rendering-Kosten. Optimieren Sie Ihr Projekt wie immer, um ein Gleichgewicht zwischen visueller Qualität und Leistung zu schaffen.
HDRP verwendet ein Volume-Framework. Mit diesem System können Sie Ihre Szene aufteilen und bestimmte Einstellungen oder Funktionen basierend auf der Kameraposition aktivieren. Beispielsweise enthält die HDRP-Vorlagenebene drei unterschiedliche Teile, jeder mit seiner eigenen Beleuchtungskonfiguration. Daher umfasst jeder Raum ein anderes Volumen.
Ein Volumen ist lediglich ein Platzhalterobjekt mit einer Volumenkomponente. Sie können eines über das Menü „GameObject > Lautstärke“ erstellen, indem Sie eine Voreinstellung auswählen. Andernfalls erstellen Sie einfach manuell ein GameObject mit den richtigen Komponenten.
Da jedem GameObject Volumenkomponenten hinzugefügt werden können, kann es schwierig sein, sie in der Hierarchie zu finden. Mit dem Licht-Explorer (Fenster > Rendern > Licht-Explorer > Volumina) können Sie Volumina in geladenen Szenen lokalisieren. Verwenden Sie diese Schnittstelle, um schnelle Anpassungen vorzunehmen.
Stellen Sie den Modus der Volume-Komponente je nach Kontext entweder auf „Global“ oder „Lokal“ein.
Global Volume funktioniert als „Auffangbehälter“ ohne jegliche Grenzen und wirkt sich daher auf alle Kameras in der Szene aus. In der HDRP-Beispielszenedefiniert VolumeGlobal eine allgemeine Basislinie der HDRP-Einstellungen für das gesamte Level.
Das lokale Volume definiert einen begrenzten Bereich, in dem seine Einstellungen wirksam werden. Es verwendet eine Collider- Komponente, um seine Grenzen zu bestimmen. Aktivieren Sie „Ist Auslöser“ , wenn Sie nicht möchten, dass der Collider die Bewegung physikalischer Körper, beispielsweise Ihres FPS-Player-Controllers, behindert.
In der Beispielszene (siehe Bild im Abschnitt „Volumina“) verfügt jeder Raum über ein lokales Volumen mit einem BoxCollider, der die globalen Einstellungen überschreibt.
Raum 2 verfügt über ein kleines, kugelförmiges Volumen als helles Zentrum neben der Glasvitrine, und Raum 3 hat kleinere Volumina im Eingangskorridor und im Sitzbereich unter den Hängelampen.
In der Vorlage überschreiben die lokalen Lautstärken den Weißabgleich, die Belichtung und/oder den Nebel. Alles, was nicht explizit überschrieben wird, wird auf die globalen Einstellungen zurückgegriffen.
Während sich Ihre Kamera in der Szene bewegt, werden die globalen Einstellungen wirksam, bis Ihr Player-Controller auf ein lokales Volume stößt, wo diese Einstellungen übernehmen.
Leistungstipp: Verwenden Sie nicht zu viele Volumes. Die Auswertung jedes Volumens (Mischen, Räumliche Verteilung, Override-Berechnung usw.) ist mit einigen CPU-Kosten verbunden.
Eine Volumenkomponente enthält keine tatsächlichen Daten. Stattdessen verweist es auf ein Volume-Profil – ein ScriptableObject- Asset auf der Festplatte, das Einstellungen zum Rendern der Szene enthält.
Verwenden Sie das Feld „Profil“, um mit den Schaltflächen „Neu“ oder „Klonen“ ein neues Volume-Profil zu erstellen. Sie können auch zu einem anderen Profil wechseln, das Sie bereits gespeichert haben.
Die Verwendung des Volume-Profils als Datei erleichtert die Wiederverwendung vorheriger Einstellungen und die gemeinsame Nutzung von Profilen zwischen Ihren Volumes.
Beachten Sie, dass Änderungen an Lautstärkeprofilen im Wiedergabemodus nicht verloren gehen, wenn Sie diesen Modus verlassen.
Jedes Volume-Profil beginnt mit einem Satz von Standardeigenschaften. Um die Werte zu bearbeiten, gehen Sie zu „Volume Overrides“ und passen Sie die einzelnen Einstellungen an. Verwenden Sie beispielsweise Lautstärkeüberschreibungen, um den Nebel, die Nachbearbeitungoder die Belichtungdes Volumens zu ändern.
Nachdem Sie Ihr Volume-Profil festgelegt haben, klicken Sie auf „Override hinzufügen“, um die Profileinstellungenanzupassen. Ein Beispiel dafür, wie eine Nebelüberbrückung aussehen könnte, finden Sie im Bild.
Jede der Eigenschaften der Lautstärkeüberschreibung verfügt links über ein Kontrollkästchen, mit dem Sie diese Eigenschaft bearbeiten können. Wenn Sie das Kontrollkästchen deaktiviert lassen, verwendet HDRP den Standardwert der Lautstärke. Volume-Objekte können mehrere Overrides haben. Bearbeiten Sie für jede Eigenschaft so viele Eigenschaften wie nötig. Mit der Tastenkombination „Alle“ oder „Keine“ oben links können Sie sie alle schnell aktivieren oder deaktivieren.
Das Hinzufügen von Overrides ist ein wichtiger Arbeitsablauf in HDRP. Wenn Sie das Konzept der Vererbung aus der Programmierungkennen, werden Ihnen Volume Overrides bekannt vorkommen.
Die Lautstärkeeinstellungen auf hoher Ebene sind die Standardeinstellungen für niedrige Lautstärken. Hier werden die HDRP-Standardeinstellungen an das globale Volume weitergegeben, das wiederum als „Basis“ für lokale Volumes dient.
Das globale Volume überschreibt die HDRP-Standardeinstellungen und das lokale Volume überschreibt das globale Volume. Verwenden Sie Priorität, Gewichtungund Mischdistanz (im folgenden Abschnitt beschrieben), um etwaige Konflikte zu lösen, die durch überlappende Volumina verursacht werden.
Um die aktuellen Werte einer bestimmten Volumenkomponente zu debuggen, gehen Sie zur Registerkarte „Volumen“ im Rendering-Debugger.
Eine vollständige Liste der Volume-Overrides finden Sie in der HDRP-Dokumentation.
Da Sie häufig mehr als ein Volumen pro Ebene benötigen, können Sie mit HDRP Volumen mischen. Dadurch sind die Übergänge zwischen ihnen weniger abrupt.
Zur Laufzeit verwendet HDRP die Kameraposition, um zu bestimmen, welche Lautstärken die HDRP-Einstellungen beeinflussen.
Die Blend-Distanz bestimmt, wo oder wie weit außerhalb des Colliders des Volumens das Ein- bzw. Ausblenden beginnen soll. Ein Wert von 0 für die Überblendungsdistanz bedeutet einen sofortigen Übergang, während ein positiver Wert bedeutet, dass die Lautstärkeüberschreibungen erst überblendet werden, wenn die Kamera den angegebenen Bereich betritt.
Das Volume-Framework ist flexibel und ermöglicht Ihnen, Volumes und Overrides nach Bedarf zu kombinieren. Wenn sich mehrere Volumes im selben Bereich überlappen, entscheidet HDRP anhand der Priorität, welches Volume Vorrang hat. Höhere Werte bedeuten eine höhere Priorität.
Legen Sie Ihre Prioritätswerte grundsätzlich explizit fest, um Rätselraten zu vermeiden. Andernfalls verwendet das System die Erstellungsreihenfolge als Prioritäts-„Tiebreaker“, was zu unerwarteten Ergebnissen führen kann.
HDRP verwendet reale Beleuchtungsmodelle, um jede Szene zu rendern. Daher sind viele Eigenschaften mit ihren Gegenstücken in der traditionellen Fotografie vergleichbar.
Den Belichtungswert verstehen
Der Belichtungswert (EV) ist ein numerischer Wert, der eine Kombination aus Verschlussgeschwindigkeit und Blendenzahl einer Kamera darstellt (die die Größe der Linsenöffnung bzw. Blendenöffnung bestimmt). Sie müssen die Belichtung richtig einstellen, um eine optimale Helligkeit zu erreichen und ein hohes Maß an Details sowohl in den Schatten als auch in den Lichtern zu erfassen. Andernfalls führt eine Über- oder Unterbelichtung des Bildes zu weniger als wünschenswerten Ergebnissen.
Der Belichtungsbereich bei HDRP liegt normalerweise irgendwo im oben genannten Spektrum.
Höhere Belichtungswerte lassen weniger Licht in die Kamera, was für hellere Situationen geeignet ist. Dabei ist für einen sonnigen Außentag ein EV-Wert zwischen 13 und 16 geeignet. Im Gegensatz dazu könnte für einen dunklen, mondlosen Nachthimmel ein EV zwischen -3 und 0 verwendet werden.
Sie können eine Reihe von Faktoren in den Einstellungen einer tatsächlichen Kamera variieren, um Ihren Belichtungswert zu ändern:
- Die Verschlusszeit: Die Zeit, in der der Bildsensor dem Licht ausgesetzt ist
- Die Blendenzahl: Die Größe der Blende bzw. der Linsenöffnung
- Die ISO: Die Lichtempfindlichkeit des Films/Sensors
Fotografen nennen dies das Belichtungsdreieck. In Unity können Sie, wie bei einer echten Kamera, durch verschiedene Kombinationen dieser Zahlen denselben Belichtungswert erreichen. HDRP drückt den Belichtungswert in EV100aus, wodurch die Empfindlichkeit auf die eines 100-EV-Films der International Standards Organization (ISO)festgelegt wird.
Mit der obigen Formel wird der Belichtungswert berechnet.
Beachten Sie, dass es sich um eine logarithmische Skala zur Basis 2 handelt. Wenn der Belichtungswert um eine Einheit erhöht wird, verringert sich die in die Linse einfallende Lichtmenge um die Hälfte.
Mit HDRP können Sie die Belichtung eines realen Bildes anpassen. Schießen Sie einfach mit einer Kamera oder einem Smartphone ein digitales Foto. Erfassen Sie die Metadaten des Bildes, um Blendenzahl, Verschlussgeschwindigkeit und ISO zu ermitteln.
Verwenden Sie die Formel, um den Belichtungswertzu berechnen. Wenn Sie bei der Belichtungsüberschreibung (siehe folgenden Abschnitt) denselben Wert verwenden, sollte das gerenderte Bild der tatsächlichen Belichtung entsprechen.
Sie können digitale Fotos als Referenzen für die Beleuchtung Ihres Levels verwenden. Das Ziel besteht zwar nicht unbedingt darin, ein Bild perfekt nachzubilden, aber durch die Anpassung an ein echtes Foto können Sie bei der Beleuchtungskonfiguration auf ein Minimum verzichten.
In HDRP ist die Belichtung eine Lautstärkeüberschreibung. Fügen Sie es einem lokalen oder globalen Volume hinzu, um die verfügbaren Eigenschaften anzuzeigen.
Wählen Sie im Dropdown- Menü „Modus “ eine der folgenden Optionen aus: Fest, Automatisch, Automatisches Histogramm, Kurvenzuordnungund Physische Kamera.
Mit der Kompensation können Sie die Belichtungverschieben oder anpassen. Damit können Sie kleinere Anpassungen vornehmen und das gerenderte Bild leicht nach oben und unten „anhalten“.
Fester Modus
Im Festmodus können Sie den Belichtungswert manuell einstellen. Beachten Sie die Graduierungsmarkierungen auf dem Schieberegler für die feste Belichtung , um Hinweise zu erhalten. Während das Symbol rechts ein Dropdown-Menü mit Voreinstellungen enthält (z. B. 13 für eine Szene mit Sonnenlicht bis -2,5 für eine Szene ohne Mond), können Sie das Feld direkt auf einen beliebigen Wert einstellen.
Bedenken Sie, dass der Fixed-Modus zwar ziemlich einfach, aber nicht sehr flexibel ist. Dies funktioniert in der Regel nur, wenn Sie ein Volumen oder eine Szene mit relativ gleichmäßiger Beleuchtung haben, bei der ein Belichtungswert durchgehend funktionieren kann.
Der Automatikmodus passt die Belichtung dynamisch an die Helligkeitsstufen auf dem Bildschirm an. Dies funktioniert ähnlich wie die Anpassung des menschlichen Auges an unterschiedliche Dunkelheitsgrade, indem es neu definiert, was als Schwarz wahrgenommen wird.
Obwohl der Automatikmodus unter vielen Lichtbedingungen funktioniert, kann es auch zu einer unbeabsichtigten Über- oder Unterbelichtung des Bildes kommen, wenn die Kamera auf einen sehr dunklen oder sehr hellen Teil der Szene gerichtet wird. Verwenden Sie „Limit Min“ und „Limit Max“ , um die Belichtungsstufe innerhalb eines gewünschten Bereichs zu halten. Führen Sie einen Spieltest durch, um zu überprüfen, ob die Grenzwerte im gesamten Level innerhalb der erwarteten Grenzen bleiben. Verwenden Sie dann den Messmodusin Kombination mit Maskenoptionen , um anzugeben, auf welche Teile des Rahmens die automatische Belichtung angewendet werden soll.
Die automatische Belichtung ändert sich, wenn die Kamera zwischen Dunkelheit und Licht wechselt, mit Optionen zum Anpassen der Geschwindigkeit. Genau wie beim Auge kann das Bewegen der Kamera von einem sehr dunklen in einen sehr hellen Bereich oder umgekehrt kurzzeitig desorientierend sein.
„Automatisch“, „Automatisches Histogramm“ und „Kurvenmapping“ verwenden den Messmodus , um zu bestimmen, welcher Teil des Rahmens bei der Berechnung der Belichtung verwendet werden soll. Sie können den Messmodus wie folgt einstellen:
- Durchschnitt: Die Kamera verwendet den gesamten Rahmen zur Belichtungsmessung.
- Spot: Die Kamera verwendet zur Belichtungsmessung nur die Bildschirmmitte.
- Mittenbetont: Die Kamera bevorzugt Pixel in der Bildmitte und weicht zu den Bildrändern hin ab.
- Maske gewichtet: Ein bereitgestelltes Bild (Weight Texture Mask) zeigt an, welche Pixel für die Steuerung der Belichtung am wichtigsten sind.
Prozedurale Maske: Die Kamera wertet die Belichtung anhand einer prozedural generierten Textur aus. Sie können Optionen für Mittelpunkt, Radius und Weichheit ändern.
Der automatische Histogrammmodus geht im Automatikmodus noch einen Schritt weiter. Abschließend berechnet es ein Histogramm des Bildes und ignoriert bei der Belichtungseinstellung die dunkelsten und hellsten Pixel.
Durch das Ausschließen sehr dunkler oder sehr heller Pixel aus der Belichtungsberechnung erzielen Sie möglicherweise eine stabilere Belichtung, wenn im Bild extrem helle oder dunkle Pixel erscheinen. Auf diese Weise wird Ihr gerendertes Ergebnis durch stark emittierende Oberflächen oder schwarze Materialien nicht so stark unter- oder überbelichtet.
Verwenden Sie die Prozenteinstellungen des Histogramms im automatischen Histogrammmodus, um alles im Histogramm zu verwerfen, was außerhalb des angegebenen Prozentbereichs liegt (stellen Sie sich vor, Sie schneiden die hellsten und dunkelsten Pixel aus den äußersten linken und rechten Teilen des Histogramms ab). Verwenden Sie dann die Funktion „Kurvenneuzuordnung“ , um die Belichtungskurve neu zuzuordnen (weitere Informationen finden Sie im folgenden Abschnitt).
Curve Mapping ist eine weitere Variante des Automatikmodus.
Im Kurvenzuordnungsmodusstellt die x-Achse der Kurve die aktuelle Belichtung und die y-Achse die Zielbelichtung dar. Durch Neuzuordnung der Belichtungskurve kann die Präzision verbessert werden.
Wer sich mit Fotografie auskennt, findet den physischen Kameramodus möglicherweise hilfreich zum Einstellen der Kameraparameter.
Schalten Sie den Belichtungsüberschreibungsmodus auf „Physische Kamera“und suchen Sie dann die Hauptkamera. Von dort aus können Sie die physische Kamera aktivieren. Die im Inspektor angezeigten Eigenschaften finden Sie im Bild.
Für die Belichtung sind ISO (Empfindlichkeit), Blende (oder Blendenzahl) und Verschlusszeitwichtig (siehe „Physische Kamera“). Wenn Sie Referenzfotos abgleichen, kopieren Sie die richtigen Einstellungen aus den Exif- Daten des Bildes. Andernfalls kann Ihnen diese Tabelle dabei helfen, den Belichtungswert basierend auf der Blendenzahl und der Verschlussgeschwindigkeit zu schätzen.
Obwohl diese Eigenschaften nicht mit der Belichtung zusammenhängen, können sie Ihnen dabei helfen, die Attribute echter Kameras nachzubilden.
Beispielsweise verwenden wir in Unity (und vielen anderen 3D-Anwendungen) normalerweise das Sichtfeld, um zu bestimmen, wie viel von der Welt eine Kamera auf einmal sehen kann. Bei echten Kameras hängt das Sichtfeld jedoch von der Größe des Sensors und der Brennweite des Objektivs ab.
Anstatt das Sichtfeld direkt einzustellen, können Sie in den physischen Kameraeinstellungen den Sensortyp, die Sensorgrößeund die Brennweite anhand der tatsächlichen Kameradaten eingeben. Unity berechnet dann automatisch den entsprechenden Sichtfeldwert.
Verlassen Sie sich beim Versuch, eine Übereinstimmung mit einer echten Fotoreferenz herzustellen, auf die in den Bilddateien enthaltenen Metadaten der Kamera. Sowohl Windows als auch macOS können die Exif-Daten von digitalen Bildern lesen. Die entsprechenden Felder können Sie anschließend in Ihre virtuelle Kamera kopieren.
Beachten Sie, dass Sie möglicherweise auf der Website des Herstellers nach den genauen Sensorabmessungen suchen müssen, wenn Sie Marke und Modell der Kamera aus den Metadaten ableiten. Dieser Artikel enthält eine Schätzung gängiger Bildsensorformate. Mehrere der unteren Parameter beeinflussen das Schärfentiefevolumen.
In Unity 2021 LTS können Sie die Fokusdistanz über den Kamera-Inspektor steuern. Stellen Sie in der Komponente „Tiefenschärfevolumen“ den Fokusmodus und den Fokusdistanzmodus auf „Physische Kamera“ein.
Verwenden Sie die Lamellenanzahl, Krümmungund Laufausschnitt, um die Form der Kameraöffnung zu ändern. Dies beeinflusst das Aussehen des Bokehs, das sich aus der Schärfentiefe -Volumenkomponente ergibt.