Hero background image
Reflexionen und Echtzeiteffekte für PC- und Konsolenspiele

Dies ist der vierte 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:

Reflexionssonden-Demo
Reflexionen

Reflexionen helfen dabei, Spielobjekte in ihre Umgebung zu integrieren. Während wir Reflexionen normalerweise mit glatten und glänzenden Oberflächen assoziieren, erfordern selbst raue Materialien korrekte Reflexionen in einem physikalisch basierten Rendering-Workflow (PBR). HDRP bietet mehrere Techniken zum Erzeugen von Reflexionen:

  • Bildschirmraumreflexionen
  • Reflexionssonden
  • Himmelsreflexionen

Jeder Reflexionstyp kann ressourcenintensiv sein. Wählen Sie daher sorgfältig die Methode aus, die je nach Anwendungsfall am besten funktioniert. Wenn mehr als eine Reflexionstechnik auf ein Pixel zutrifft, mischt HDRP den Beitrag jedes Reflexionstyps. Begrenzungsflächen, sogenannte Einflussvolumina, unterteilen den 3D-Raum, um zu bestimmen, welche Objekte die Reflexionen empfangen.

Screen Space Reflection Override-Schnittstelle
Bildschirmraumreflexionen

Screen Space Reflections (SSR) verwenden den Tiefen- und Farbpuffer, um Reflexionen zu berechnen. Daher können sie nur Objekte reflektieren, die sich aktuell in der Kameraansicht befinden, und werden an bestimmten Positionen auf dem Bildschirm möglicherweise nicht richtig gerendert. Glänzende Fußböden und nasse, ebene Oberflächen eignen sich gut zum Empfang von Screen Space Reflections. Beachten Sie jedoch, dass SSRs alle Objekte außerhalb des Rahmens ignorieren, was den Effekt einschränken kann.

Um Screen Space Reflectionszu aktivieren, gehen Sie unter Beleuchtungzu den Rahmeneinstellungen (HDRP-Standardeinstellungen oder benutzerdefinierte Rahmeneinstellungen der Kamera). Fügen Sie dann den Screen Space Reflection Override zu Ihrem Volume Objecthinzu.

Materialoberflächen müssen den Mindestglättewert überschreiten, um Bildschirmraumreflexionen anzuzeigen. Verringern Sie diesen Wert, wenn Sie möchten, dass rauere Materialien das SSR anzeigen. Bedenken Sie jedoch, dass ein niedrigerer Mindestglätteschwellenwert den Rechenaufwand erhöhen kann. Wenn die Screen Space Reflection einen Pixel nicht beeinflusst, greift HDRP auf die Verwendung von Reflection Probeszurück.

Verwenden Sie das Dropdown-Menü „Qualität“ , um eine voreingestellte Anzahl von Max Ray-Schrittenauszuwählen. Höhere Max Ray Steps steigern die Qualität, haben aber auch ihren Preis. Versuchen Sie wie bei allen Effekten, ein Gleichgewicht zwischen Leistung und Bildqualität herzustellen.

Ab HDRP-Version 12 können Sie zwischen einem physikalisch basierten Algorithmus mit Accumulation (neu) oder Approximation, einem weniger genauen Näherungsalgorithmus (Standard), wählen.

Reflexionssondenkomponente
Reflexionssonden

Reflexionssonden erzeugen Reflexionen mithilfe einer bildbasierten Technik. Eine Sonde erfasst die sphärische Sicht ihrer Umgebung in alle Richtungen und speichert das Ergebnis in einer Cubemap-Textur. Shader verwenden diese Cubemap, um eine Reflexion anzunähern.

Jede Szene kann mehrere Sonden haben und die Ergebnisse mischen. Lokale Reflexionen können sich dann ändern, wenn sich Ihre Kamera durch die Umgebung bewegt.

Stellen Sie den Typ jeder Reflexionssonde auf „Gebacken“ oder „Echtzeit“ein:

  • Baked Probes verarbeiten die Cubemap-Textur nur einmal für eine statische Umgebung.
  • Echtzeit-Sonden erstellen die Cubemap zur Laufzeit im Player und nicht im Editor. Dies bedeutet, dass Reflexionen nicht auf statische Objekte beschränkt sind, Echtzeitaktualisierungen jedoch ressourcenintensiv sein können.

Das Einflussvolumen bestimmt die 3D-Grenzen, an denen GameObjects die Reflexion empfangen, während Sie mit den Aufnahmeeinstellungen anpassen können, wie die Reflexionssonde einen Schnappschuss der Cubemap macht.

Um Echtzeit-Reflexionssonden zu optimieren, deaktivieren Sie alle Rendering-Funktionen, die die visuelle Qualität von Reflexionen nicht wesentlich beeinträchtigen, indem Sie allgemeine oder reflexionssondenspezifische Kameraeinstellungen überschreiben. Sie können auch ein Skript erstellen, um das Update zeitlich aufzuteilen.

Diagramm der planaren Reflexionssonde
Planare Reflexionssonde

Mit einer planaren Reflexionssonde können Sie unter Berücksichtigung der Oberflächenglätte eine flache, reflektierende Oberfläche nachbilden. Dies ist ideal für glänzende Spiegel und Böden.

Obwohl planare Reflexionssonden viel mit Standard-Reflexionssonden gemeinsam haben, funktionieren diese Komponenten etwas anders. Anstatt die Umgebung als Cubemap zu erfassen, erstellt eine Planar Reflection Probe die durch ihre Spiegelebene reflektierte Kameraansicht neu. Die Sonde speichert dann das resultierende Spiegelbild in einer 2D-Rendertextur. An die Grenzen der rechteckigen Sonde gezogen, entsteht eine planare Reflexion.

Wenn ein Objekt nicht von einer nahegelegenen Reflexionssonde beeinflusst wird, fällt es auf die Himmelsreflexionzurück.

Lichtleck-Demo
Reflexionshierarchie

Um Reflexionen in Topqualität zu erzeugen, verwendet HDRP die Technik, die für jedes Pixel die höchste Genauigkeit bietet, und kombiniert sie unter Verwendung einer gewichteten Priorität mit anderen Techniken, die auf den drei Reflexionsmethoden (SSR, Reflection Probes, Sky) basieren. Diese spezielle Reihenfolge der Auswertung von Reflexionen wird als Reflexionshierarchiebezeichnet.

Wenn eine Technik die Reflexion eines Pixels nicht vollständig bestimmt, greift HDRP auf die nächste Technik zurück. Mit anderen Worten: Screen Space Reflection greift auf die Reflection Probes zurück, die wiederum auf Sky Reflections zurückgreifen.

Es ist wichtig, die Einflussvolumina für Ihre Reflexionssonden richtig einzurichten. Andernfalls kann es zu Lichtverlusten durch unerwünschte Himmelsreflexionen kommen. Dies wird in Raum 3 der Beispielszene deutlich. Das Deaktivieren einer der Reflexionssonden oder das Verschieben ihrer Einflussvolumina führt dazu, dass die Reflexion zurück in den Himmel fällt. Dies führt dazu, dass der helle HDRI-Himmel die Szene mit seinen intensiven Reflexionen überwältigt.

Weitere Einzelheiten zur Reflexionshierarchie finden Sie im Abschnitt „Reflexion“ der HDRP-Dokumentation.

Reflection-Proxy-Volumen
Reflection-Proxy-Volumes

Da der Erfassungspunkt einer Reflexionssonde fest ist und selten mit der Position der Kamera in der Nähe übereinstimmt, kann es in der resultierenden Reflexion zu einer erkennbaren Perspektivverschiebung kommen. Daher scheint die Reflexion keinen Zusammenhang mit der Umgebung aufzuweisen.

Ein Reflection Proxy Volume hilft Ihnen, dies teilweise zu korrigieren. Es projiziert die Reflexionen innerhalb des Proxy-Volumens basierend auf der Kameraposition genauer neu.

Schnittstelle zur Übersteuerung der Umgebungsverdeckung
Lichteffekte in Echtzeit

HDRP bietet auch einige Echtzeit-Lichteffekte, die über das Lautstärkesystemverfügbar sind. Wählen Sie eine lokale oder globale Lautstärkeaus und fügen Sie dann unter „Override hinzufügen > Beleuchtung“den entsprechenden Effekt hinzu.

Umgebungsverdeckung im Bildschirmbereich (SSAO)

Ambient Occlusion simuliert eine Verdunkelung, die in Falten, Löchern und nahe beieinander liegenden Oberflächen auftritt. Bereiche, die das Umgebungslicht blockieren, neigen dazu, verdeckt zu erscheinen.

Obwohl Sie Ambient Occlusion für statische Geometrie über den Lightmapper von Unity einbacken können, fügt HDRP eine zusätzliche Screen Space Ambient Occlusion hinzu, die in Echtzeit funktioniert. Dies ist ein Screen-Space-Effekt, was bedeutet, dass nur Informationen innerhalb des Rahmens zum erzeugten Effekt beitragen können. SSAO ignoriert alle Objekte außerhalb des Sichtfelds der Kamera.

Aktivieren Sie „Screen Space Ambient Occlusion“ in den Rahmeneinstellungen unter „ Beleuchtung“. Fügen Sie dann „Override“ auf einem lokalen oder globalen Volume hinzu und wählen Sie „Beleuchtung“ > „Umgebungsverdeckung“.

Demo zur globalen Beleuchtung im Bildschirmbereich bei Laub
Bildschirmbereich Globale Beleuchtung

Screen Space Global Illumination (SSGI) verwendet den Tiefen- und Farbpuffer des Bildschirms, um reflektiertes, diffuses Licht zu berechnen. Ähnlich wie Lightmapping indirekte Beleuchtung in die Oberflächen Ihrer statischen Levelgeometrie einbrennen kann, simuliert SSGI genauer, wie Photonen auf Oberflächen treffen und beim Abprallen Farbe und Schattierung übertragen können.

Wie bei anderen Effekten, die vom Frame-Puffer abhängen, werden die Bildschirmränder problematisch, da Objekte außerhalb des Sichtfelds der Kamera nicht zur globalen Beleuchtung beitragen können. Dies kann teilweise durch die Verwendung von Reflexionssonden verbessert werden, um einen Fallback bereitzustellen, wenn der Strahl außerhalb des Frame-Puffers wandert.

Aktivieren Sie SSGI in den Rahmeneinstellungen unter Beleuchtung. Es muss auch im Abschnitt „Beleuchtung“ des Pipeline-Assets aktiviert werden.

Hinweis Wir empfehlen die Verwendung von Unity 2021.2 oder höher mit Screen Space Global Illumination. HDRP 12 enthält erhebliche Verbesserungen der SSGI-Qualität.

Brechungsschnittstelle
Bildschirmraumbrechung

Mit der Funktion„Screen Space Refraction Override“ lässt sich simulieren, wie sich Licht verhält, wenn es durch Medien mit einer höheren Dichte als Luft hindurchtritt. Die Screen Space Refraction von HDRP verwendet den Tiefen- und Farbpuffer, um die Brechung durch ein transparentes Material wie Glas zu berechnen.

Um diesen Effekt durch den HDRP Lit Shaderzu aktivieren, stellen Sie sicher, dass Ihr Material einen transparentenOberflächentyp hat.

Wählen Sie dann unter „Transparenzeingaben“ein Brechungsmodell und einen Brechungsindex aus. Verwenden Sie das Kugelbrechungsmodell für feste Objekte und wählen Sie „ Dünn“ (wie eine Blase) oder „Quadrat“ (mit einer gewissen Dicke) für hohle Objekte.

War dieser Inhalt hilfreich?