Lichter, deren Mobilität auf Movable eingestellt ist, sind Lichter, die während der Laufzeit auf beliebige Weise dynamisch verändert werden können. Sie werden manchmal dynamische Lichter genannt. Ihre Performancekosten sind höher als bei statischen oder stationären Lichtern und hängen von der Anzahl der Meshes ab, die vom Licht beeinflusst werden, sowie der Dreieckszahl dieser Meshes. Beispielsweise hat ein schattenwerfendes dynamisches Licht mit einem großen Radius höhere Performancekosten als eines mit einem kleineren Radius.
Movable-Lichter unterstützen dynamische indirekte Beleuchtung, wenn du sie mit Lumen Global Illumination and Reflections verwendest.
Von den drei verfügbaren Lichtmobilitäten weisen Movable-Lichter eine variierende Qualität (abhängig von der Art der verwendeten dynamischen Schatten), die höchste Veränderbarkeit und die höchsten Performancekosten auf.
Unterstützte Schattentypen
Movable-Lichter unterstützen mehr dynamische Beleuchtungs- und Beschattungsmethoden als statische und stationäre Lichtquellen. Die folgenden Beschattungstypen werden für Movable-Lichter unterstützt:
Shadow Maps bieten dynamische Schatten für eine ganze Szene. Es handelt sich um die Standard-Beschattungsmethode für alle dynamischen Schatten in der Engine, die auf den meisten Plattformen für alle Lichttypen funktioniert. Shadow-Maps bieten keine weiche Flächenbeschattung, wie viele andere Beschattungsmethoden in dieser Liste.
Virtual Shadow Maps bieten konsistente, hochauflösende Shadow-Maps, die gut mit Assets in Filmqualität und großen, dynamisch beleuchteten offenen Welten funktionieren. Sie bieten weiche Bereichsschattierungen und lassen sich gut mit Nanite, Lumen Global Illumination and Reflections und World Partitionkombinieren, um höchste Qualität bei angemessenen Performancekosten zu erzielen. Virtuelle Shadow-Maps werden auf den neuesten Konsolen-und PC-Plattformen unterstützt, die DirectX 11 oder DirectX 12 unterstützen.
Raytracing-Schatten simulieren weiche Flächenbeleuchtungseffekte für höchste Schattenqualität bei angemessener Performance. Sie nutzen die Ray Tracing-Architektur, die von NVIDIA GPU Hardware auf Windows 10 (oder neuer) mit DirectX 12 unterstützt wird.
Mesh-Distanzfeld-Schatten bieten Beleuchtungseffekte und weiche Bereichsverschattung von Meshes basierend auf einer Distanzfeld-Repräsentation des Mesh. Für diese Methode sind die Distanzfeld-Meshes des Projekts erforderlich, die für Software Ray Tracing in Lumen Global Illumination and Reflections benötigt werden, sowie Distance Field Ambient Occlusion.
Schattenausrichtung
Die standardmäßigen Shadow-Mapping-Techniken in Unreal Engine funktionieren auf allen Plattformen für Movable-Lichter, um dynamische Schatten zu erzeugen. Shadow Mapping hat einige Einschränkungen, die Artefakte erzeugen, wie facettierte Schatten auf gekrümmten Oberflächen und Schattenverhärtung an Oberflächen-Schnittstellen, wodurch Objekte aussehen können, als würden sie schweben oder nicht auf dem Boden der Szene positioniert sein.
Schattenausrichtung ist ein Satz von Eigenschaften pro Licht, die dazu beitragen, diese Arten von Artefakten zu reduzieren und gleichzeitig die Genauigkeit der Selbstschattenbildung und Kontakthärtung von diesen Lichtquellen zu verbessern. Diese Ausrichtungseinstellungen funktionieren, indem sie einen Kompromiss zwischen dem Ausgleich der Genauigkeit in einem Bereich und der Reduzierung von Selbstschattenartefakten in einem anderen Bereich finden.
Die Anpassung der Schattenschrägen-Ausrichtung verringert Selbstschattierungs-Artefakte auf Kosten der Schattengenauigkeit, was zu einem Schwebe-Effekt (Peter-Panning) für auf dem Boden positionierte Objekte in der Szene führen kann. Neigungs-Ausrichtungsanpassungen lösen nicht alle Selbstschattierungsprobleme mit dynamischer Beleuchtung, aber die meisten davon. Es ist dir überlassen, die angemessene Balance für dein Projekt zu finden.
Direktionale Lichter haben eine zusätzliche Tiefenausrichtungseigenschaft, die die Ausrichtungsstärke in den Cascaded Shadow Maps (CSM) steuert. Sie verringert Brüche von Schatten an Kaskadenübergangspunkten.
Die folgenden Eigenschaften sind für Lichter verfügbar, um die Schattenausrichtung anzupassen:
| Eigenschaft | Beschreibung |
|---|---|
Schattenkaskaden-Bias-Verteilung | (Directional Lights Only) Steuerelement der Tiefenausrichtungsskalierung in Cascaded Shadow Maps. Dies verringert die Unterschiede in den Schattenartefakten zwischen verschiedenen Kaskadenübergängen. Werte von 1 skalieren die Schattenausrichtung basierend auf der Größe jeder Kaskade. 0 skaliert die Schattenausrichtung über alle Kaskaden einheitlich. |
Schattenverzerrung | Steuert, wie genau die Selbstschattierung der gesamten Szenenschatten von dieser Lichtquelle ist. Bei 0 beginnen Schatten an der Oberfläche, auf der sie Schatten werfen, aber es gibt viele Artefakte. Bei größeren Werten beginnen die Schatten weiter vom schattenwerfenden Objekt entfernt, und es gibt keine Selbstschattierungs-Artefakte. Das Objekt scheint jedoch über der Oberfläche zu schweben. Werte um den Mittelpunkt von 0,5 sind ein guter Kompromiss zwischen Genauigkeit und Verringerung von Selbstschattierungs-Artefakten. |
Neigung Shadow Bias | Dies funktioniert zusätzlich zur Schattenausrichtung, um die Genauigkeit der Selbstschattierung von Schatten der gesamten Szene durch das ausgewählte Licht zu steuern. Diese Eigenschaft erhöht den Betrag der Ausrichtung in Abhängigkeit von der Neigung einer bestimmten Oberfläche. Bei 0 beginnen Schatten an der Objektoberfläche, aber haben viele Selbstschattierungs-Artefakte. Größere Werte bewirken, dass Schatten weiter vom Urheber entfernt beginnen, und es entstehen keine Selbstschattierungs-Artefakte, aber Objekte können über einer Oberfläche zu schweben scheinen. |
Schattenfilter Schärfen | Passt die Schärfe der direkten Beschattung durch stationäre oder bewegliche Lichter an. Dies kann den weichen Schatteneffekt von Shadow Mapping reduzieren. |
Shadow Map Caching
Shadow Map Caching ist eine Funktion von Movable-Lichtern, die den Schattenwurf von Punkt-und Scheinwerferlichtern in Spielen kostengünstiger macht. In Levels, in denen du Assets hast, die sich nicht bewegen müssen, kostet ihre Schattenberechnung in jedem Frame Performance. Shadow Map Caching betrachtet die Assets, deren Mobilität auf Static oder Stationary eingestellt ist, und muss nicht in jedem Frame neu berechnet werden, es sei denn, an ihnen oder dem Licht ändert sich etwas.
Shadow Map Caching hat einen erheblichen Einfluss auf die Performance, insbesondere in Levels, in denen viele Assets von Lichtern beeinflusst werden.
Beispielsweise könnte es in einer mittelgroßen Szene mit drei schattenwerfenden Movable Punktlichtern bis zu 14 Millisekunden dauern, bis die Schattentiefe gerendert ist. Mit aktivierten zwischengespeicherten Schatten brauchen dieselben drei Lichter etwa 1 Millisekunde zum Rendern der Schattentiefen.
Shadow Map Caching erfordert Speicher, um die zwischengespeicherten Schatten zu speichern. Bei Szenen, die groß genug sind, musst du eventuell die Menge des ihnen zugewiesenen Speichers mit dem Konsolenbefehl r.Shadow.WholeSceneShadowCacheMb anpassen.
Performance des Shadow Map Caching
Du kannst die Performance von zwischengespeicherten Schatten prüfen, indem du das Statistikfenster für Schatten-Rendering mit Stat ShadowRendering öffnest. Aktiviere/deaktiviere dann die zwischengespeicherten Schatten mit dem Konsolenbefehl r.Shadow.WholeSceneShadows.
Einschränkungen von Shadow Map Caching
Shadow Map Caching kann die Kosten der dynamischen Beschattung in deinen Levels deutlich senken, aber es gibt einige Einschränkungen, die du beim Einsatz von nicht unterstützten Funktionen der Engine beachten musst.
Standardmäßig kann Caching nur stattfinden, wenn die folgenden Assets diese Kriterien erfüllen:
Die Mobilität von Grundkörpern im Level muss auf Static oder Stationary eingestellt sein.
Materialien, die World Position Offset verwenden, werden nicht zwischengespeichert.
Point Lights und Spot Lights werden unterstützt. Ihre Mobilität beim Werfen von Schatten muss auf Movable eingestellt sein.
Die Schatten von Lichtern, die sich bewegen, werden nicht zwischengespeichert.
Materialien, die animierte Tesselation oder Pixel Depth Offset verwenden, können Artefakte verursachen, da ihre Schatten zwar gecached werden, aber mit dem Asset nicht richtig aussehen.