Benutzerhandbuch
(Translation by Mauri)
Contents
- 1 Systemanforderungen
- 2 Bevor Sie beginnen...
- 3 Installation
- 4 Schnellstart
- 5 Rendereinstellungen
- 6 Erweiterte Rendereinstellungen
- 6.1 Light probe mode
- 6.2 Asset UV Processing
- 6.3 Denoiser
- 6.4 Adjust sample positions
- 6.5 Unload scenes before render
- 6.6 Denoise
- 6.7 Fix Seams
- 6.8 Split by scene
- 6.9 Hole filling
- 6.10 Min resolution
- 6.11 Scale per map type
- 6.12 Checker preview
- 6.13 Emissive boost
- 6.14 Indirect boost
- 6.15 Backface GI
- 6.16 Ambient occlusion
- 6.17 Dither transparency
- 6.18 RTX Mode
- 6.19 Export terrain trees
- 6.20 Terrain optimization
- 6.21 Light Mesh batch limit
- 6.22 Compress volumes
- 6.23 Samples multiplier
- 6.24 Tile size
- 6.25 Temp path
- 6.26 Output path
- 6.27 Use scene named output path
- 6.28 Render Selected Groups
- 6.29 Beep on finish
- 7 Experimentelle Rendereinstellungen
- 8 Komponenten
- 8.1 Bakery Lightmap Group Selector
- 8.2 Bakery Lightmapped Prefab
- 8.3 Bakery Direct Light
- 8.4 Bakery Sky Light
- 8.5 Bakery Light Mesh
- 8.6 Bakery Point Light
- 8.7 Bakery Volume
- 8.8 Bakery Light Filter
- 8.9 Bakery Sector
- 8.10 Bakery Always Render
- 8.11 Bakery Pack As Single Square
- 8.12 Bakery Shared LOD UV
- 9 Kompatibilität von Materialien
- 10 "Lightmap Parameters" Assets
- 11 Project Settings
- 12 Skinned mesh renderer support
- 13 Shader Tweaks
- 14 Bakery shaders
- 15 Hinweise zu HDRP/URP
- 16 Aktualisierung von Bakery
- 17 Scripting-API
Systemanforderungen
Um Bakery nutzen zu können, benötigen Sie:
- einen PC mit Windows (7 oder höher).
- eine NVIDIA GPU. Minimal unterstütztes Modell ist Kepler (GeForce 650 oder neuer; Für Quadro-Karten überprüfen Sie bitte die jeweiligen Spezifikationen).
- einen 64-bit Unity Editor. Bakery wurde auf allen Versionen - von 5.6 bis 6000.X und höher - getestet.
Bevor Sie beginnen...
- ... stellen Sie bitte sicher, dass Ihr Unity Projekt keine Skriptkompilierungsfehler enthält, da diese auch die Kompilierung von Bakery-Skripten verhindern.
- ... stellen Sie außerdem sicher, dass Sie den aktuellsten Grafiktreiber für Ihre Karte installiert haben. Aktualisieren Sie Ihren Grafiktreiber, falls nötig.
Wichtig: Verwenden Sie den GeForce Game Ready-Treiber (Standard) anstelle des NVIDIA Studio-Treibers.
Installation
1. Importieren Sie Bakery über den Asset Store in Ihr Projekt.
2. Unity wird Ihnen eine Liste an Dateien, die zu importieren sind, anzeigen. Wenn Sie Bakery zum ersten Mal verwenden, empfehlen wir Ihnen den einfachen Klick auf Import. Erfahrene Benutzer möchten zuvor möglicherweise noch den Ordner examples exkludieren, um eine schlankere Installation zu erhalten.
Die Dateien werden in die Ordner Assets/Bakery und Assets/Editor/x64/Bakery kopiert. Beide Ordner können später verschoben werden.
3. Unity importiert nun Bakery und kompiliert die Skripte. Es wird eventuell folgendes Fenster angezeigt:
In diesem Fall können Sie einfach auf "Go Ahead" klicken.
Sie sollten jetzt den Menüeintrag von Bakery am oberen Bildschirmrand sehen:
Schnellstart
1. Platzieren Sie ein beliebiges 3D-Modell oder Unity Primitive in Ihre Szene und markieren Sie es als Static.
Meshes dürfen für das Lightmapping keine überlappenden UV-Bereiche vorweisen. Der UV2-Kanal wird, sofern vorhanden, verwendet (andernfalls UV1). Sollten Sie Ihre 3D-Modelle nicht für das Lightmapping vorbereitet haben, müssen Sie die Einstellung Generate Lightmap UVs am Asset aktivieren. Unity Primitives besitzen bereits valide UV2-Kanäle.
2. Wählen Sie das Directional Light (das, was von Unity bereits erstellt wurde) aus und fügen Sie ihm eine Bakery Direct Light-Komponente hinzu.
3. Das Bakery Direct Light bietet viele verschiedene Einstellungsmöglichkeiten, aber es ist sehr einfach, die Komponente an das Unity-eigene Licht anzugleichen. Klicken Sie hierfür auf Match lightmapped to real-time. Nun sollte das Bakery Direct Light die gleiche Lichtfarbe besitzen wie Unity’s Directional Light.
4. Um eine Umgebungsbeleuchtung mit Schatten zu erzielen, müssen Sie zuerst ein Skylight erstellen (Bakery->Create->Skylight).
5. Wählen Sie das Skylight aus, weisen Sie es eine bläuliche Farbe zu und klicken Sie auf Match scene skybox to this light. Dadurch wird die Beleuchtung der Skybox genau angepasst.
6. Wählen Sie nun Bakery->Render Lightmap vom oberen Menü aus. Standardmäßig ist der Full Lighting-Modus aktiviert. Dieser berechnet sowohl direkte als auch indirekte Beleuchtung aller Lichter. Wenn Sie Echtzeit-Schatten mit gebackener Beleuchtung kombinieren möchten, ändern Sie die Einstellung auf Indirect.
7. Klicken Sie auf die Schaltfläche Render.
8. Fertig! Sie sollten nun gebackene Beleuchtung sehen:
Rendereinstellungen
Alle Rendereinstellungen können jederzeit über Bakery->Render Lightmap eingesehen werden. Diese Einstellungen werden für jede Szene gespeichert. Die oberste Option im Bakery-Fenster ermöglicht es Ihnen, zwischen den Einstellungen Simple, Advanced und Experimental zu wechseln, wobei jeder nachfolgende Modus mehr anpassbare Optionen offenlegt. Der einfache Modus (Simple) reicht für die meisten Szenen aus und ist ein guter Einstieg.
Render mode
Legt den Typ der zu backenden Lightmaps fest.
Full Lighting
Vollständige direkte und indirekte Beleuchtung für alle Bakery-Lichter.
Indirect
Grundlegender Mixed mode. Es wird die Baked Contribution-Auswahl auf jedem Licht überprüft: Wenn die Einstellung auf Direct And Indirect gesetzt ist, wird das Licht wie im Full Lighting-Modus gebacken. Ist sie stattdessen auf Indirect Only gesetzt, wird nur der indirekte Beitrag (GI) dieses Lichts gebacken. Im letzteren Fall sollten Sie sowohl Unity- als auch Bakery-Lichter auf dem GameObject belassen, wobei eines einen direkten Echtzeitbeitrag leistet und das andere für vorab berechnete GI zuständig ist.
Shadowmask
Ein etwas fortgeschrittenerer Mixed mode. Er funktioniert durch die Erzeugung von zwei Arten von Lightmaps - eine mit gebackenen Farben (wie im Indirect mode) und eine weitere mit Schatten von statischen Objekten. Dies hat einige Vorteile:
- Echtzeit-Schatten können nur von einer Handvoll dynamischer Objekte erzeugt werden, nicht von der gesamten Szene.
- Echtzeit- und gebackene Schatten verschmelzen ordnungsgemäß miteinander.
- Echtzeit-Lichter können Bump-, Specular- und andere Oberflächeneffekte wiedergeben, während sie weiterhin durch hochwertige gebackene Schatten verdeckt werden.
Um dieses Verhalten zu aktivieren, müssen Sie sowohl Unity- als auch Bakery-Lichter auf demselben GameObject haben und Baked Contribution muss auf Shadowmask and Indirect eingestellt sein. Nicht markierte Lichter werden wie im Indirect mode gebacken.
Distance Shadowmask
Dieses Kontrollkästchen ist nur sichtbar, wenn Sie Shadowmask ausgewählt haben. Es schaltet die gleichnamige Einstellung in den Quality Settings des Projekts um. Mehr Informationen.
Subtractive
Aktiviert den Subtractive Beleuchtungsmodus.
Diese Einstellung hat keine besonderen Auswirkungen auf Lightmaps und funktioniert genau wie Full Lighting.
Der einzige Unterschied besteht darin, dass sie auch Echtzeit-Lichter von Unity für den subtraktiven Modus einrichtet (da dies über die Benutzeroberfläche nicht möglich ist).
Sie müssen zusätzlich globale subtraktive Parameter (wie die globale Schattenfarbe) in Unity’s Lighting Fenster einrichten. .
Ambient Occlusion Only
Es wird nur die Umgebungsverdeckung (AO) gebacken. Kann nützlich sein, wenn Sie wissen, was Sie tun. Stellen Sie sicher, dass die AO Einstellungen eingerichtet wurden.
Directional mode
Legt fest, wie Richtungsinformationen eingebettet werden. Standardmäßige Lightmaps speichern nur eine einzige Farbe pro Texel, während Lightmaps mit Richtungsinformationen den Shadern einen Hinweis darauf geben, wie sich die Beleuchtung über eine Halbkugel um das Texel herum verändert. Diese Daten sind erforderlich, um vollständig belichtete Bereiche mit Normal Maps zu kombinieren. Durch das Einbinden in den integrierten Bakery Shader kann ebenfalls eine ungefähre Spiegelungsreaktion erzeugt werden.
None
Keine Richtungsdaten, eine Farbe pro Texel.
Baked Normal Maps
Immer noch keine Richtungsdaten, aber Normal Maps werden beim Rendern der Lightmap berücksichtigt. Es gibt keinen zusätzlichen Laufzeit-Overhead. Da Lightmaps in der Regel eine geringere Auflösung als Normal Maps haben, kann das Ergebnis unscharf aussehen. Weitere Probleme sind Aliasing in der Ferne aufgrund fehlendes Mipmapping und eine mögliche Verwischung von Details durch die Rauschunterdrückungsprozedur (Denoising). Um zu erfahren, wie Sie in diesem Modus benutzerdefinierte Shader mit prozeduralen Normalen verwenden können, lesen Sie den Abschnitt Normal Mapping.
Dominant Direction
Dieser Modus ähnelt dem, was Enlighten und Progressive in Unity backen. Er ist mit den meisten Shadern kompatibel, generiert nur eine zusätzliche Map und der Laufzeit-Overhead ist minimal. Der Nachteil ist, dass das Bump Mapping eher blass und grau wirkt und sich deutlich von demselben Objekt unter Echtzeitbeleuchtung unterscheiden kann.
RNM
Basierend auf der Radiosity Normal Mapping-Technik, die ursprünglich für HL2 (Folien) entwickelt und später in vielen weiteren Spielen (z. B. Mirror’s Edge) verwendet wurde. Es werden insgesamt 3 HDR-Maps erzeugt und ist damit der Modus mit dem höchsten Speicherbedarf. Der Laufzeit-Overhead ist immer noch relativ gering. Dieser Modus ist außerdem präziser als Dominant Direction. Er ist besser darin, Oberflächenkontraste wiederzugeben und kann mit farbigem Licht umgehen, welches Normal Maps aus verschiedenen Winkeln beeinflusst.
SH
Basierend auf dem “Precomputed Global Illumination in Frostbite” Papier. Dies ist der Modus mit der höchsten Qualität, der einen deutlich besseren Oberflächenkontrast bietet und unterschiedlich gefärbtes Licht aus verschiedenen Richtungen darstellen kann. Erzeugt insgesamt 4 Maps, von denen nur eine HDR ist, und benötigt daher weniger Speicherplatz als RNM. Der Laufzeit-Overhead ist etwas höher als bei RNM.
MonoSH
Wie SH, jedoch unter Verwendung monochromatischer L1-Richtungskoeffizienten. Ähnlich guter Oberflächenkontrast, obwohl unterschiedliche Farben, die aus verschiedenen Richtungen auf ein Texel fallen, nicht genau wiedergegeben werden; für viele Szenen jedoch ausreichend. Es wird nur eine zusätzliche Map generiert, sodass die VRAM-Nutzung/Bandbreite ähnlich ist wie bei Dominant Direction; tatsächlich ist sie sogar noch geringer, da Dominant Direction RGBA-kodierte Maps verwendet, während MonoSH nur RGB benötigt. Die Map wird über das integrierte Richtungs-Lightmap-System gespeist, sieht jedoch mit Standard Shadern nicht korrekt aus. Achten Sie darauf, einen kompatiblen Shader zu verwenden.
Einschränkungen
- RNM und SH/MonoSH können nur mit dem Bakery Shader verwendet werden oder benötigen Anpassungen an Ihren Shadern.
- Im RNM- und SH-Modus werden keine Standard-Farb-Lightmaps erstellt. Sie müssen entweder den Bakery Shader für alle Materialien in der Szene verwenden oder Lightmap Groups einsetzen, um RNM/SH-Objekte von den übrigen zu trennen.
- RNM- und SH-Maps werden mithilfe von MaterialPropertyBlock auf Objekte angewendet und werden daher möglicherweise nicht vollständig im Lighting Fenster von Unity angezeigt.
- Die Modi Dominant Direction, RNM and SH/MonoSH erfordern möglicherweise etwas mehr Samples für GI und Light Meshes, um eine vergleichbare Qualität erzielen zu können.
Texels per unit
Ungefähre Anzahl der Lightmap-Texel pro Welteinheit. Beeinflusst die Anzahl und Auflösung der generierten Lightmaps.
Beispielwerte für den Einstieg:
- Großer Außenbereich (z. B. eine Stadt): 1 - 5
- Mittlerer Außenbereich (einige Gassen): 10 - 20
- Hochwertige Innenbeleuchtung: 100
Es wird davon ausgegangen, dass der Maßstab der Szene ungefähr 1 Einheit = 1 Meter beträgt. Eine solche Skalierung wird im Allgemeinen bei der Arbeit in Unity empfohlen, um eine bessere Navigation und Physiksimulation zu erzielen. Wenn Ihre Skalierung anders ist, multiplizieren Sie die Texel entsprechend.
Beachten Sie, dass Texels per unit die Basisauflösung ist, aber jedes Objekt noch zusätzlich mit Scale in Lightmap in den Mesh Renderern sowie mit Scale per map type im Bakery-Fenster angepasst werden kann.
Max resolution
Maximale Größe der Lightmap. Falls nicht alle Objekte in eine einzelne Lightmap passen (bei gegebenem Texels Per Unit-Wert), werden zusätzliche Lightmaps zugewiesen. Dieselben vier quadratischen Objekte können vier 512x512-Maps oder eine 1024x1024-Map belegen.
Bounces
Legt fest, wie oft Lichtstrahlen von Oberflächen reflektiert werden sollen. In der Regel sind niedrige Werte für Außenbereiche (z. B. eine Stadt) ausreichend, während für geschlossene Bereiche (Innenräume, Höhlen) höhere Werte erforderlich sind.
Der Schieberegler ist zwar auf 5 Reflektierungen begrenzt, es ist jedoch möglich, eine beliebige Anzahl von Reflektierungen in das Zahlenfeld einzugeben.
Samples
Beeinflusst die Qualität von GI. Typische Werte liegen zwischen 16 und 32.
GPU Priority
Während die GPU an Lightmaps arbeitet, können das Betriebssystem und andere Software weniger reaktiv werden. Mit dieser Option können Sie ein Gleichgewicht zwischen der Baking-Geschwindigkeit und der Reaktionsfähigkeit des Systems herstellen.
Render
Backt Lightmaps für alle geöffneten Szenen. Wenn Light Probe Mode auf L1 oder L2 eingestellt ist, werden auch Light Probes mitgebacken.
Render Light Probes
Backt Light Probes für alle geöffneten Szenen.
Beachten Sie, dass Sie für korrekte Mixed light Schatten auf dynamischen Objekten im Shadowmask-Modus auch Okklusionsproben aktivieren müssen.
Render Reflection Probes
Backt Reflection Probes für alle geöffneten Szenen. Diese Schaltfläche dient lediglich der Benutzerfreundlichkeit und ruft die interne Aktualisierungsroutine der Engine für Reflection Probes auf.
Update Skybox Probe
Backt globale Diffuse- und Reflection Probes für die aktuelle Skybox. Wie bei "Render Reflection Probes" werden lediglich integrierte Engine-Funktionen aufgerufen.
Occlusion probes
Lässt Unity beim Rendern von Light Probes Okklusionsproben mit dem aktuell ausgewählten integrierten Lightmapper backen. Okklusionsproben sind zusätzliche Daten, die in regulären Light Probes gespeichert werden und verhindern, dass dynamische Objekte in schattigen Bereichen beleuchtet werden. Derzeit gibt es keine Möglichkeit, benutzerdefinierte Okklusionsproben in Unity zu erstellen, weshalb Unity’s eigene Lightmapper aufgerufen werden müssen, um diese Aufgabe zu erledigen.
Warnings
Diese Optionen validieren die Szene, nachdem eine der Render-Schaltflächen gedrückt wurde, und zeigen Warnungsdialogfelder an, in denen Sie gefragt werden, ob Sie den Backvorgang fortsetzen oder beenden möchten.
- Suppress all popups: Nach dem Drücken von Render werden keine Dialogfelder mehr angezeigt.
- UV validation: Überprüft, ob alle Modelle vollständig korrekte Lightmapping UVs aufweisen – insbesondere, ob sie im Bereich von 0 bis 1 liegen und sich nicht überlappen.
- Overwrite check: Teilt mit, ob und welche Lightmap-Dateien überschrieben werden.
- Memory check: Gibt einen sehr ungefähren Wert für den benötigten Videospeicher an.
- Sample count check: Überprüft, ob Lichter, GI oder AO unangemessene Sample-Werte aufweisen, die dazu führen könnten, dass die GPU ihre verfügbaren Ressourcen überschreitet.
- Lightmapped prefab validation: Validiert Lightmapped Prefabs und benachrichtigt Sie, falls Prefabs überschrieben werden.
Erweiterte Rendereinstellungen
Light probe mode
Ändert die Art und Weise, wie Light Probes gebacken werden.
- Legacy: Verwenden Sie die Schaltfläche Render Light Probes, um Probes zu rendern. Punkt- und direktionale Lichter werden innerhalb des Lightmappers berechnet, während Flächen-/Himmels-/indirekte Beleuchtung durch das Rendern einer Cubemap an jeder Probenposition erfasst wird. Die Ergebnisse werden als sphärische Harmonische der Ordnung L2 gespeichert. Die Nachteile sind eine langsame Cubemap-Rendering-Leistung und mögliche Abweichungen zwischen Lightmaps und Probes in Fällen, in denen Shader in Ihrem Spiel beleuchtete Oberflächen nicht physikalisch darstellen können oder Ihr Projekt für mobile Endgeräte eingerichtet ist (Unity kann hohe Intensitätswerte wegschneiden).
- L1: Light Probes werden zusammen mit Lightmaps gerendert, wenn Sie auf Render klicken. Diese Einstellung bietet eine überlegendere Backleistung und garantiert, dass die Beleuchtung der Proben mit den Lightmaps übereinstimmen. Ergebnisse werden als sphärische Harmonische der Ordnung L1 gespeichert (und können weiterhin von regulären Shadern verwendet werden). Durch Anwendung der Einstellung Non-Linear Light Probe SH im Bakery Shader können die Ergebnisse weiter verbessert werden.
- L2: überragende Qualität (vollständige sphärische Harmonische der Ordnung L2). Wie bei L1, werden sie automatisch zusammen mit Lightmaps gerendert. Vernachlässigbare Auswirkungen auf die Leistung im Vergleich zu L1. Sollte mit allen Shadern gut aussehen. Kontrast/Direktionalität/Ringing-Entfernung der Proben kann über Project Settings -> Bakery -> "Ringing removal for L2 light probes" angepasst werden.
Es scheint einen Fehler in Unity 2019.3 zu geben, der verhindert, dass Legacy Light Probe-Farben ordnungsgemäß gespeichert werden, falls die Einstellung Occlusion probes aktiviert ist. Der L2-Modus ist jetzt der Standardmodus und wird bei Verwendung von Okklusionsproben empfohlen.
Asset UV Processing
Konfiguriert die UV Padding-Anpassung für Assets. Mögliche Werte:
- Don't change: Es werden keine Änderungen an Assets vorgenommen.
- Adjust UV padding: Sucht nach Modellen mit automatisch generierten UVs (“Generate Lightmap UVs” auf dem Asset) und passt diese weiter an, um ein korrektes Padding zwischen den UV-Inseln pro Mesh zu erzielen. Die modellweite Pack Margin in den Importeinstellungen wird ignoriert. Stattdessen werden optimale Werte berechnet, basierend auf der Fläche jedes Meshes und der Auflösung der Lightmap.
- Adjust UV padding for new meshes only: Wie oben, jedoch werden alle Modelle übersprungen, die zuvor mindestens einmal angepasst wurden.
- Remove UV adjustments: Hebt alle vorherigen UV-Anpassungen auf und lässt automatisch unwrappte Modelle so aussehen, wie Unity sie ursprünglich unwrappt hat.
Denoiser
Legt den gewünschten Denoiser fest. Mögliche Werte:
- Optix 5: Verwendet den OptiX 5.1 AI-Denoiser (früher bekannt als "Legacy denoiser"). Läuft auf der GPU. Unterstützt auf allen Grafikkarten von Kepler (GeForce 6xx) bis Turing (Geforce 20xx). Nicht unterstützt auf Ampere (30xx)-Grafikkarten. OptiX 5.1 verwendet einen statischen Trainingsdatensatz, der darin eingebettet ist, sodass er nicht von der Treiberimplementierung beeinflusst wird.
- Optix 6: Verwendet den OptiX 6.0 AI-Denoiser (war zuvor die Standardeinstellung). Läuft auf der GPU. Scheint auf Kepler (6xx)-GPUs nicht zu funktionieren, läuft dafür aber auf neueren Modellen - einschließlich Ampere (30xx). Seit Version 6.0 befindet sich der Trainingsdatensatz für den OptiX Denoiser im Grafikkartentreiber. Das Verhalten war vor Treiberversion 442.50 ähnlich wie bei OptiX 5.1; nach diesem Treiber hat NVIDIA jedoch den Datensatz geändert, sodass die Ergebnisse unterschiedlicher ausfallen können. Der aktualisierte Datensatz kann manchmal gitterartige Muster und hellere Kanten erzeugen (die jedoch mit "Denoise: fix bright edges" behoben werden können), läuft aber schneller.
- Optix 7: Verwendet den OptiX 7.2 AI-Denoiser. Verhält sich ähnlich wie OptiX 6.0, wird jedoch möglicherweise besser von Ampere (30xx) unterstützt.
- OpenImageDenoise: Verwendet Intel Open Image Denoise. Läuft auf der CPU (jede CPU, die SSE 4.1 unterstützt). Kann etwas langsamer als OptiX sein, aber die Qualität ist vergleichbar.
- OpenImageDenoise2: Verwendet Intel Open Image Denoise 2 im CUDA-Modus. Läuft auf der GPU, die Leistung ist vergleichbar mit OptiX 6/7 und die Qualität ist identisch mit der CPU-Version.
Adjust sample positions
Findet die besten Positionen für die Proben, um Beleuchtungslecks zu vermeiden. Die Details des Algorithmus werden hier beschrieben. In einigen Fällen (in der Regel bei großen Geometrien mit sehr niedriger Polygonanzahl und glatten Normalen) kann es zu falschen Ergebnissen kommen. In diesem Fall können Sie die Funktion deaktivieren.
Unload scenes before render
Entlädt Szenen vor dem Backen, um Videospeicher freizugeben. Komplexere Szenen können allein durch die Anzeige im Editor mehrere Gigabyte VRAM beanspruchen.
Denoise
Wenn aktiviert, wird der Entrauschungsalgorithmus angewendet. Bakery verwendet NVIDIA’s AI-Denoiser (OptiX) oder Intel's Open Image Denoise (falls ausgewählt).
Fix Seams
Wenn aktiviert, wird versucht, durch UV-Diskontinuitäten entstandene Übergänge zu glätten. Nützlich für glatte Geometrien - einschließlich der Standardkugel von Unity.
Split by scene
Wenn mehrere Szenen gleichzeitig geladen werden und diese Option aktiviert ist, verfügt jede Szene über einen eigenen Satz Lightmaps, der nicht mit anderen geteilt wird. Dies kann hilfreich sein, um die Anzahl der geladenen Texturen zu begrenzen, wenn Szenen während der Laufzeit gestreamed werden.
Hole filling
Wenn Atlas Packer auf xatlas eingestellt ist, wird versucht, jedes Loch zu füllen, was zu effizienteren Atlas-Texturen führt. Bei Szenen mit sehr komplexer Geometrie kann dies die Exportzeit der Szene verlängern, ist aber ansonsten empfehlenswert.
Min resolution
Mindestgröße für Lightmaps. Kann verwendet werden, um zwischen vielen kleinen, aber vollständig belegten Lightmaps und wenigen unvollständig gefüllten Lightmaps abzuwägen.
Scale per map type
Ermöglicht es Ihnen, die Auflösung von Color/Shadowmask/Direction-Maps unterschiedlich zu skalieren. Ein häufiger Fall wäre beispielsweise eine indirekte Färbung mit niedriger Auflösung, aber einer sehr detaillierten Shadowmask. Beachten Sie, dass die Skalierung erst nach dem Rendern der Lightmaps angewendet wird, sodass keine Zeit beim Baking eingespart wird. Wenn “Adjust UV padding” aktiviert ist, basiert das Padding auf der Map mit der niedrigsten Auflösung, um Texel-Leaking zu verhindern.
Checker preview
Wenn das Kontrollkästchen Show checker aktiviert ist, rendert die Scene View ein Schachbrettmuster über alle sichtbaren Objekte, um die Größe der Lightmap-Texel anzuzeigen. Dies ist nützlich, um sicherzustellen, dass Sie vor dem Backen angemessene Werte für Texels Per Unit und andere Einstellungen, die sich auf die Auflösung auswirken, verwenden.
Durch das Aktivieren der Checker preview wird Bakery gezwungen, Atlas Packing durchzuführen. Dies kann einige Sekunden dauern. Klicken Sie auf Refresh checker, um die Szene nach einer vorgenommenen Änderung neu zu atlasieren und die Änderungen anzuzeigen.
Checker preview verwendet ebenfalls zufällige Farben, um zu zeigen, wie die Szene in verschiedene Lightmaps aufgeteilt sein wird.
Atlas preview
Die Schaltfläche Atlas preview ist sichtbar, wenn die Checker preview aktiviert ist. Durch Anklicken öffnet sich ein neues Fenster, in dem die UV-Layouts zukünftiger Lightmaps angezeigt werden. Sie können mithilfe der "<" und ">" Schaltflächen zwischen den Lightmaps wechseln. Dies kann nützlich sein, um vor dem Backen die Packungsqualität und die Anzahl der Lightmaps zu überprüfen.
Emissive boost
Multipliziert jede Oberflächenemission mit dieser Zahl.
Indirect boost
Multipliziert alle reflektierten Lichtstrahlen mit diesem Wert. Entspricht der Indirect Intensity-Einstellung bei Licht-Komponenten, gilt jedoch global.
Backface GI
Bestimmt, wie viel Licht durch die Vorderfläche zur Rückfläche gelangt und dann von GI reflektiert wird. Dies ist besonders nützlich für dünne, durchscheinende Oberflächen wie Blätter. Die Werte liegen im Bereich von 0 bis 1.
Ambient occlusion
Einfache nicht-physikalische Umgebungsverdeckung, die Sie aus ästhetischen Gründen über die endgültige Szenenbeleuchtung legen können.
- Intensity: Steuert die Sichtbarkeit des AO-Effekts. Ein Wert von 0 deaktiviert den Effekt.
- Radius: Legt die im AO-Effekt verwendete Strahlungsentfernung fest. Kleinere Werte führen zu lokalisierten Verdunkelungen (Ecken, Falten), während höhere Werte eher einem Skylight ähneln und Schatten von weiter entfernten Objekten erzeugen.
- Samples: Beeinflusst die Qualität der Umgebungsverdeckung. Typische Werte liegen zwischen 4 und 32.
Dither transparency
Aktiviert halbtransparente Schatten durch das automatische Dithering von Alpha-Texturen. Lernen Sie, wie Bakery Opacity Maps interpretiert.
RTX Mode
Aktiviert die RTX-Hardwarebeschleunigung. Nur RTX-GPUs profitieren von dieser Einstellung. Die minimal unterstützte Treiberversion ist 418.
Treiber können den RTX-Modus auf den meisten Nicht-RTX NVIDIA-Karten emulieren, aber das Ergebnis ist in der Regel langsamer.
Der RTX-Modus muss auf Ampere (3xxx) oder neueren Karten aktiviert sein.
Export terrain trees
Wenn diese Einstellung aktiviert ist, beeinflussen Bäume auf Terrain die Beleuchtung. Die Bäume selbst werden nicht gebacken. Beachten Sie, dass beim Backen für jeden Baum die höchstmögliche LOD-Stufe verwendet wird. Daher wird es nicht empfohlen, diese Einstellung für die Darstellung von mehreren Kilometern großen Wäldern mit hochdetaillierten Modellen zu verwenden.
Terrain optimization
Wenn aktiviert (Standard), verwenden Terrains eine separate Raytracing-Technik, um die Vorteile ihrer Höhenfeldgeometrie zu nutzen. Andernfalls werden sie wie jedes andere Mesh behandelt. Terrain optimization reduziert den Speicherbedarf für hochauflösende Landschaften erheblich. In einigen Fällen kann es auch das Backen des Terrains beschleunigen, in anderen Fällen (insbesondere bei einfachen Landschaften mit niedriger Auflösung) kann es sinnvoll sein, sie zu deaktivieren.
Light Mesh batch limit
Wenn dieser Wert über 0 liegt, werden mehrere Light Meshes zu einem zusammengefasst, vorausgesetzt, sie haben identische Einstellungen und wirken sich auf dieselben Lightmap Groups aus, wobei ihre Gesamtzahl an Samples jedoch auf diesen Wert begrenzt wird (d. h. wenn das Limit 64 beträgt, können 2 Lichter mit Samples=32 oder 4 Lichter mit Samples=16 usw. zusammengefasst werden). Dies erhöht die Leistung in Szenen mit vielen Light Meshes. Achten Sie darauf, diesen Wert nicht zu hoch einzustellen, da ansonsten die GPU bei der Verarbeitung zu vieler Samples gleichzeitig das Zeitlimit des Betriebssystemtreibers erreichen könnte.
Compress volumes
Wenn aktiviert, wird die Texturkomprimierung auf 3D-Volumen-Texturen angewendet und die Bakery Shader werden auf einen entsprechenden Abtastmodus umgeschaltet. Nicht empfohlen für Volumes mit sehr niedriger Auflösung. Die Volumengröße kann auf ein Vielfaches von 4 erhöht werden.
Anmerkungen:
- Derzeit kann nur in die Texturenformate BC6H/BC7 (Desktop/Konsolen) komprimiert werden.
- Die Volumenkomprimierung wird nur in Unity 2020.1 oder neuer unterstützt.
- Derzeit unterstützt nur der Bakery Shader für die Built-In Render Pipeline die Verwendung komprimierter Volumes.
Samples multiplier
Multipliziert alle Schatten- und GI-Samples mit dem angegebenen Faktor. Verwenden Sie diese Einstellung, um schnell zwischen Entwurfs- und Endqualität zu wechseln.
Tile size
Wie bei der GPU Priority, jedoch legen Sie anstelle der abstrakten Priorität die Kachelgröße fest. Bakery teilt Lightmaps in kleinere Kacheln auf und aktualisiert diese nacheinander. Eine kleinere Größe bedeutet mehr Unterbrechungen in der GPU-Arbeit und kann das System reaktionsfähiger machen.
Temp path
Ordner für temporäre Dateien. Bakery benötigt während des Renderns möglicherweise einige Gigabyte freien Speicherplatz. Wenn sich dieser Ordner auf einer SSD befindet, kann das Rendern im Vergleich zu einer HDD etwas schneller erfolgen. Derzeit wird dieser Ordner nicht automatisch bereinigt. Sie können den Inhalt jederzeit (außer während des Renderns) manuell oder über Bakery -> Utilities -> Clear cache löschen.
Output path
Ordner für Lightmaps. Hier werden alle Lightmap-, Light Probe- und Vertex-Color Assets gespeichert. Dieser Pfad ist relativ zu Ihrem Assets Ordner.
Use scene named output path
Wenn diese Einstellung aktiviert ist, wird der Ausgabepfad automatisch auf einen Ordner mit dem gleichen Namen wie die aktuell aktive Szene gesetzt (Assets/AktuellerSzenenName/). Dies ähnelt dem Verhalten der integrierten Unity Lightmapper.
Render Selected Groups
Backt nur Lightmap Groups, die ausgewählte Objekte enthalten. Nicht nur ausgewählte Objekte werden neu gezeichnet, sondern auch alle Lightmap Groups, zu denen sie gehören. Andere Lightmaps werden nicht aktualisiert. Falls Objekte nicht zu einer manuell zugewiesenen Gruppe gehören, wird ein Teil der Szene, der dieselbe Lightmap verwendet, neu berechnet.
Derzeit ist es praktischer, Sektoren für das teilweise Backen von Szenen zu verwenden.
Beep on finish
Wenn diese Einstellung aktiviert ist, gibt Bakery nach Abschluss des Backvorgangs einen Ton aus.
Experimentelle Rendereinstellungen
Unwrapper
Definiert den zu verwendenden Unwrapper, wenn Adjust UV Padding aktiviert ist.
- Default: Standard Unity Unwrapper. Bakery ruft Unwrapping.GenerateSecondaryUVSet für jedes Mesh mit unterschiedlichen Padding-Parametern auf.
- xatlas: Verwendet xatlas von jpcy - eine modifizierte Version von thekla_atlas des Entwicklers Ignacio Castaño. thekla_atlas wurde im Spiel The Witness (Blog post) eingesetzt.
Atlas Packer
Wählt den Algorithmus aus, der beim Packen verschiedener Objekt-UV-Layouts in große Lightmap-Atlas-Texturen verwendet werden soll.
- Default: Originalalgorithmus, den Bakery vor Version 1.7 verwendet hat.
- xatlas: Verwendet xatlas.
Einige Funktionen werden nur mit einem Atlas Packer unterstützt:
| Default | xatlas | |
|---|---|---|
| Override resolution | Ja | Nein |
| Efficient LOD packing | Nein | Ja |
| Hole filling | Nein | Ja |
Beachten Sie, dass der Atlas Packer auch für jede Lightmap Group separat ausgewählt werden kann.
Export geometry and maps
Wenn diese Einstellung aktiviert ist, exportiert Bakery die Szene vor dem Rendern in ein für Bakery passendes Format. Falls Sie sich sicher sind, dass die Geometrie und Texturen in der Szene sowie die Einstellungen für die Lightmap-Auflösung nicht geändert wurden (z. B. wenn Sie nur GI- oder Lichteinstellungen angepasst haben), können Sie dieses Kontrollkästchen deaktivieren, um das nächste Rendern zu beschleunigen.
Update unmodified lights
Wenn diese Einstellung aktiviert ist, berechnet Bakery die Lichtquellen neu, die sich seit dem letzten Rendern nicht verändert haben. Falls Sie nur eine Lichtquelle anpassen und nicht warten möchten, bis alle anderen Lichtquellen neu gerendert werden, können Sie dieses Kontrollkästchen deaktivieren.
Update modified lights and GI
Wenn diese Einstellung aktiviert ist, berechnet Bakery GI und die Lichter, die seit dem letzten Rendern geändert wurden, neu.
UV padding: increase only
Nur sichtbar wenn Adjust UV padding aktiviert ist. Standardmäßig wird das optimale UV-Padding für ein Modell-Asset nur auf der Grundlage der aktuell geladenen Szenen berechnet. Falls mehrere Instanzen desselben Modells unterschiedliche Lightmap-Auflösungen verwenden, bestimmt die kleinste davon das Padding, sodass der Abstand zwischen den UV-Flächen groß genug ist, um ein Überlappen zu verhindern. Jedoch kann das Backen desselben Modells in zwei verschiedenen isolierten Szenen dazu führen, dass die UVs in den vorherigen Szenen beschädigt werden, während sie für die neue Szene optimiert werden. Dieses Kontrollkästchen verhindert ein solches Verhalten, indem es den Padding-Wert niemals verringert, sodass er immer für die Instanz mit der niedrigsten Auflösung optimiert wird, die jemals gebacken wurde.
Denoise: fix bright edges
Nur sichtbar wenn Denoise aktiviert ist. Manchmal kann das zur Rauschunterdrückung verwendete neuronale Netz helle Kanten um Schatten herum erzeugen, als wäre ein Schärfeeffekt angewendet worden. Wenn diese Option aktiviert ist, versucht Bakery, diese herauszufiltern. Die Denoising-Phase kann bei Aktivierung etwas langsamer werden.
Diese Funktion kann auch zum Filtern von "fireflies" verwendet werden, d. h. gelegentlich auftretende helle Punkte auf der Lightmap.
Post-packing
Manchmal kann Bakery beim Rendern einer Szene die Lightmap in mehrere Sub-Lightmaps aufteilen, z. B. beim Backen verschiedener LODs oder Terrains. Post-packing versucht, die endgültige Atlasanzahl zu minimieren, indem diese Sub-Lightmaps zu einer Textur kombiniert werden. Es wird empfohlen, diese Einstellung aktiviert zu lassen.
Combine with Enlighten real-time GI
Wenn diese Einstellung aktiviert ist, wird beim Klicken der Schaltfläche Render zunächst versucht, mit Enlighten zu backen, um Echtzeit-GI zu berechnen. Danach erfolgt der reguläre Bakery-Lightmapping-Prozess. Sowohl gebackene als auch Echtzeit-GI werden dann zusammen verwendet.
Bake on remote server
Aktiviert Backen über das Netzwerk.
Presets
Wird derzeit unter den Schaltflächen Render/Update angezeigt, wenn sich die Einstellungen im Experimental-Modus befinden.
- Klicken Sie auf New, um alle aktuellen Einstellungen in einer Voreinstellungsdatei zu speichern.
- Standardmäßig sind alle Einstellungen ausgegraut, wenn eine Voreinstellung aktiv ist, um ein Überschreiben der Voreinstellung zu verhindern.
- Klicken Sie auf Modify preset, um die Einstellungen zu ändern und die Voreinstellungsdatei zu überschreiben.
- Voreinstellungsdateien können über das Voreinstellungsfeld ausgetauscht werden. Deaktivieren Sie die Verwendung von Voreinstellungen, indem Sie die Einstellung auf None setzen.
Komponenten
Bakery Lightmap Group Selector
Legt fest, welche Lightmap Group für das Objekt und alle seine untergeordneten Objekte verwendet werden soll. Lightmap Group ist ein Begriff, den Bakery für eine Sammlung von Objekten verwendet, die sich eine Lightmap teilen. Groups haben Eigenschaften, die Bakery mitteilen, wie die Objekte gepackt werden sollen, welche Lichter sie beeinflussen sollen und ob das Ergebnis in eine Textur oder in Eckpunkte (Vertices) gebacken werden soll. Standardmäßig werden alle statischen Objekte automatisch in mehrere Lightmap Groups (Atlas-Texturen) gepackt, sodass Sie sich keine Gedanken darüber machen müssen. Die manuelle Definition von Gruppen sollte nur für spezielle Zwecke verwendet werden - zum Beispiel:
- Markieren von Objekten, damit diese Per-vertex Lightmaps statt Texturen verwenden.
- Backen einer Lightmap unter Verwendung exakter, nicht skalierter UVs, so wie sie in einer Modellierungssoftware vorhanden waren.
- Gruppierung bestimmter Bereiche des Levels, um eine einzige Lightmap zu verwenden und damit das Streaming von Ressourcen zu erleichtern oder um während der Laufzeit mittels Skripte zwischen verschiedenen gebackenen Beleuchtungen zu wechseln.
- Verwenden der Using Render Selected Groups-Schaltfläche, um nur gruppierte Objekte zu aktualisieren.
Um eine Gruppe manuell zu definieren, müssen Sie ein Lightmap Group Assets erstellen - entweder über das Assets->Create Menü, oder mithilfe der Create New-Schaltfläche auf der Komponente. Wenn die Schaltfläche Create New verwendet wurde, wird ein neues Asset mit folgenden Eigenschaften erstellt:
- Name: Name des zu erstellenden Lightmap Group Asset.
- Packing mode: Dieser Selektor definiert den Packmodus der Lightmap Group. Es gibt 3 Modi:
- Original UV: Das Objekt und seine untergeordneten Objekte werden mit unveränderten UVs gebacken. Packing wird nicht vorgenommen. Dies ist nützlich für Modelle, bei denen mehrere Meshes dasselbe bereits gepackte UV-Layout verwenden.
- Pack Atlas: Das Objekt und seine untergeordneten Objekte werden in einen eigenen Texturatlas gepackt. Vor Version 1.3 musste jedes packbare untergeordnete Objekt über die Komponente verfügen, aber das ist nun nicht mehr erforderlich. Jedes untergeordnete Objekt wird als eigenes Rechteck gepackt - es sei denn, Bakery erkennt automatisch, dass ein untergeordnetes Objekt nicht überlappende untergeordnete Objekte hat. In diesem Fall können mehrere Objekte ein einziges Rechteck verwenden.
- Vertex: Das Objekt und seine untergeordneten Objekte verwenden anstelle von Texturen eine vertex-farbige gebackene Beleuchtung. Beachten Sie, dass Sie dafür einen benutzerdefinierten Shader benötigen - beispielsweise den Bakery Shader. Ein einfacher Shader ("Bakery/Simple Vertex Lightmapped") ist bereits zu Demonstrationszwecken und als Referenz enthalten. Lernen Sie mehr über Vertex Lightmaps.
- Directional mode: Ermöglicht es Ihnen, den Directional Mode für die Gruppe zu überschreiben. Die Optionen sind identisch - mit Ausnahme von Auto, das einfach die globale Einstellung verwendet.
- Resolution: Gewünschte Auflösung der Lightmap.
- Auto-resolution: Texels Per Unit verwenden, um die nächstgelegene Zweierpotenz (power of two) zu bestimmen.
- Atlas packer: Zu verwendender Atlas Packing-Algorithmus für diese Gruppe.
- Bitmask: Eine Liste von Umschaltflächen, die verwendet werden können, um bestimmte Lichtquellen von der Beeinflussung der Lightmap auszuschließen. Jede Bakery-Lichtquelle verfügt auch über eine Bitmask-Einstellung. Lichter wirken sich nur auf Lightmap Groups aus, mit denen sie mindestens eine dieser Umschaltflächen gemeinsam haben. Die Standardeinstellung bedeutet, dass alle Lichter alle Lightmaps beeinflussen können.
Falls Sie eine Lightmap Group mit einem ihr zugewiesenem Pack Atlas-Modus haben, werden zusätzliche Einstellungen auf der Komponente angezeigt:
- Override resolution: Überschreibt die Auflösung, die dieses Objekt und seine untergeordneten Objekte in der Lightmap einnehmen.
- Resolution: Manuell festgelegte Auflösung. Wenn Sie beispielsweise eine Lightmap mit einer Auflösung von 512 haben, die vier Objekten mit einer überschriebenen Auflösung von 256 zugewiesen ist, generiert Bakery eine einzige Lightmap mit einer Größe von 512x512, wobei jedes Objekt genau 256x256 Flächen einnimmt.
Wenn Sie ein Lightmap Group Asset auswählen, werden zusätzliche experimentelle Einstellungen angezeigt:
- Subsurface scattering: (Klicken, um mehr zu erfahren)
- Normal offset: Erlaubt es Ihnen, Strahlen von der Oberfläche zu versetzen. Dies ist selten nützlich und dient hauptsächlich zu Versuchszwecken.
- Transparent selfshadow: Strahlen hinter der Oberfläche werfen, damit diese keine Schatten auf sich selbst wirft. Kann z. B. für durchscheinendes Laub hilfreich sein.
- Vertex sampling density (nur wenn Packing Mode auf Vertex eingestellt ist): Standardmäßig berechnet das Per-Vertex-Backen nur 1 Wert für jeden Vertex. Falls die Abtastdichte über 0 ist, wird stattdessen der Durchschnitt vieler über Dreiecke verteilter Abtastwerte gebildet, was zu supersamplierten, glatteren Ergebnissen führt.
Bakery Lightmapped Prefab
Diese Komponente erlaubt Prefabs das Speichern von Lightmapping-Metadaten. Solche Prefabs können dann, sowohl im Editor als auch während der Laufzeit, in jeder Szene instanziiert werden. Die Komponente sollte direkt zum Wurzelobjekt des Prefabs hinzugefügt werden. Verschachtelte Prefabs werden nicht unterstützt. Da das Prefab nach dem Backen überschrieben wird (genauso wie beim Klick auf die Schaltfläche “Apply”), darf das Prefab keine unangewendeten Änderungen enthalten (untergeordnete Objekte dürfen nicht verschoben werden, Materialien und Skriptparameter müssen unverändert bleiben usw). Sollten solche Änderungen erkannt werden, wird in der Benutzeroberfläche der Komponente eine Fehlermeldung angezeigt und nach dem Backen werden keine Metadaten gespeichert. Falls die Warnung zur Lightmapped prefab validation aktiviert ist, werden eventuell vorhandene Prefab-Fehler vor dem Backen in einem Dialogfeld angezeigt.
Lightmapped Prefabs unterstützen alle Bakery-Funktionen, wie LODs, Terrains, Directional Lightmaps, RNM, SH, Per-Vertex-Modi und Shadowmasks. Damit Shadowmasks funktionieren, müssen Lichter ebenfalls Teil desselben Prefabs sein.
Nach dem Backen wird ein Objekt namens “BakeryPrefabLightmapData” zum Prefab hinzugefügt. Dieses Objekt enthält ein Skript mit allen erforderlichen Daten zum Anwenden der Lightmaps.
Darüber hinaus ermöglicht Lightmapped Prefab das Speichern der aktuellen Rendereinstellungen und das Laden dieser Einstellungen in jede derzeit geöffnete Szene mithilfe zweier Schaltflächen:
- Save current render settings to prefab: Speichert eine Kopie der aktuellen Rendereinstellungen auf dieses Prefab.
- Load render settings from prefab: Setzt die aktuellen Rendereinstellungen auf die vom Prefab gespeicherten Werte.
Beim Backen eines Lightmapped Prefabs wird empfohlen, Folgendes zu überprüfen:
- Das Prefab wurde "Angewendet". Klicken Sie hierfür bei älteren Unity Versionen auf die Schaltfläche "Apply" in der oberen rechten Ecke des Inspector. Bei neueren Versionen klicken Sie stattdessen auf die "Overrides"-Dropdown-Liste und dann auf "Apply all".
- Die Prefab-Komponenten UI zeigt keine Fehler an.
- Das "Lightmapped prefab validation"-Kontrollkästchen wurde im Hauptfenster von Bakery aktiviert. Diese Einstellung überprüft alle Lightmapped Prefabs in der Szene und benachrichtigt Sie über mögliche Probleme in einem Dialogfeld.
Bakery Direct Light
Unendliches direktes Licht (z. B. eine Sonne).
- Color: Farbe.
- Intensity: Linearer Farbmultiplikator.
- Shadow spread: Größe der Lichtquelle oder, einfacher ausgedrückt, Unschärfe des Schattens. 0 = maximal scharfe Schatten, 1 = maximal unscharfe Schatten. Technisch gesehen wird hier von einem einzelnen Strahl zu einem breiteren Strahlenkegel interpoliert.
- Shadow samples: Beeinflusst die Qualität der Schatten. Je kleiner der Wert für Shadow spread ist, desto weniger Samples sind für ein sauberes Bild erforderlich. Für Sonnenschatten liegen die typischen Werte zwischen 1 und 16. Das Setzen der Samples auf 0 deaktiviert das Werfen von Schatten für dieses Licht.
- Bitmask: Eine Liste von Umschaltflächen, mit denen diese Lichtquelle davon ausgeschlossen werden kann, bestimmte Lightmap Groups zu beeinflussen.
- Baked contribution: Legt fest, welche Art von Beleuchtungsdaten gebacken werden sollen. Nur sichtbar im Indirect- oder Shadowmask-Modus. Mögliche Werte:
- Direct and Indirect: Es wird sowohl die direkte, als auch indirekte Beleuchtung vollständig gebacken.
- Indirect only: Ein Echtzeit-Licht soll einen direkten Beitrag leisten; nur indirekte Beleuchtung wird gebacken.
- Shadowmask and indirect: Ein Echtzeit-Licht soll einen direkten Beitrag leisten, aber Schatten von statischer Geometrie werden in eine separate Map gebacken. Dynamische und statische Schatten werden miteinander gemischt. Indirekte Beleuchtung wird wie gewohnt gebacken.
- Direct, Indirect, Shadowmask (nur benutzerdefinierte Beleuchtung): Wie Direct und Indirect, jedoch wird zusätzlich eine Shadowmask erzeugt und für die Verwendung mit benutzerdefinierten Shadern zugewiesen.
- Denoise shadowmask: Legt fest, ob Denoising auf die Shadowmask dieses Lichts angewendet werden soll. Normalerweise ist dies nicht notwendig, da Schatten in der Regel nicht viel Rauschen aufweisen, aber es kann bei sehr breiten, unscharfen Schatten (großer Shadow spread) hilfreich sein.
- Indirect intensity: Nicht-physikalischer GI-Multiplikator für dieses Licht. Sollte für eine natürliche Beleuchtung auf 1 eingestellt sein, kann jedoch für stilisiertere Szenen angepasst werden.
- Anti-alias: Führt Supersampling für den Schatten durch.
- Texture projection: Projiziert eine multiplikative gekachelte Textur über die Beleuchtung. Kann verwendet werden, um entfernte Wolkenschatten zu simulieren.
Wenn Texture projection aktiviert ist, kann ihre Skalierung/Verschiebung über die Felder "Tiling" und "Offset" angepasst werden. Alternativ können Sie auf "Tweak projection in Scene View" klicken und die Projektion mit einem zusätzlichen Gizmo visuell verschieben und skalieren. Mit dem Klick auf "Render reference frame" können Sie eine Referenz-PNG-Datei aus der "Perspektive des Lichts" speichern. Dies ist nützlich, um Wolkenschatten über die Szene zu malen.
Sollten für dasselbe GameObject sowohl die Unity- als auch die Bakery-Lichtquelle aktiviert sein, und beide nicht miteinander übereinstimmen, werden zwei Schaltflächen angezeigt:
- Match lightmapped to real-time: Kopiert allgemeine Einstellungen vom Unity Light zum Bakery Light.
- Match real-time to lightmapped: Kopiert allgemeine Einstellungen vom Bakery Light zum Unity Light.
Bakery Sky Light
Unendliches, schattenwerfendes Umgebungslicht (Himmel).
- Color: Farbe.
- Intensity: Linearer Farbmultiplikator.
- Sky texture: Optionales Cubemap-Asset, z. B. ein HDRI-Panorama, um die Lichtfarben aus unterschiedlichen Richtungen zu beeinflussen.
- Samples: Beeinflusst die Qualität der Schatten. Typische Werte liegen zwischen 8 und 32.
- Hemispherical: Wenn aktiviert, kommt das Licht nur von oben (obere Hemisphäre). Andernfalls kommt es aus allen Richtungen.
- Bitmask: Eine Liste von Umschaltflächen, mit denen diese Lichtquelle davon ausgeschlossen werden kann, bestimmte Lightmap Groups zu beeinflussen.
- Baked contribution: Legt fest, welche Art von Beleuchtungsdaten gebacken werden sollen. Nur sichtbar im Indirect- oder Shadowmask-Modus. Mögliche Werte:
- Direct and Indirect: Es wird sowohl die direkte, als auch indirekte Beleuchtung vollständig gebacken. Dies ist das Standardverhalten und wird für alle Sky Lights empfohlen, da es keine Echtzeitvariante gibt, um sie in Unity zu emulieren.
- Indirect only: Ein Echtzeit-Licht soll einen direkten Beitrag leisten; nur indirekte Beleuchtung wird gebacken.
Sollten die Einstellungen für das Himmelslicht und die aktuelle Skybox nicht übereinstimmen, werden zwei Schaltflächen angezeigt:
- Match this light to scene skybox: Kopiert die allgemeinen Einstellungen vom aktiven Skybox-Material zum Bakery Sky Light. Derzeit können nur Skyboxen, die mit den Shadern “Skybox/Cubemap” oder “Skybox/Bakery skybox” ausgestattet sind, abgeglichen werden.
- Match scene skybox to this light: Kopiert die allgemeinen Einstellungen vom Bakery Sky Light zur Szenen-Skybox.
Bakery Light Mesh
Emissives Mesh beliebiger Form. Sollte zusammen mit der Mesh Renderer-Komponente oder mit einer Light-Komponente, die auf Area eingestellt ist, verwendet werden.
- Color: Farbe.
- Intensity: Linearer Farbmultiplikator.
- Cutoff: Maximale Lichtdistanz. Bakery wird zusätzlich den invers-quadratischen Lichtabfall nahe der Grenze abmindern. Dies funktioniert am besten, wenn der Cutoff-Wert genau dort liegt, wo der physikalische Abfall sehr schwach wird. Cutoff kann die Backleistung verbessern, aber Sie können ihn für vollständige Korrektheit auch auf einen sehr hohen (unerreichbaren) Wert einstellen.
- Self Shadow: Legt fest, ob das Light Mesh selbst Schatten wirft. Diese Einstellung verwendet einen präziseren Beleuchtungsalgorithmus.
- Samples Near: Beeinflusst die Beleuchtungsqualität in der Nähe des Meshes. Typische Werte liegen zwischen 16 und 64. Diese Einstellung ist nur verfügbar, wenn Self Shadow aktiviert ist.
- Samples Far: Beeinflusst die Beleuchtungsqualität in der Entfernung vom Mesh. Typische Werte liegen zwischen 4 und 4096.
Bakery verwendet zwei verschiedene Algorithmen für Area Lights, basierend auf der Nähe der zu emittierenden Oberfläche. In der unmittelbaren Nähe der Lichtquelle funktioniert es ähnlich wie der GI-Algorithmus, während das Licht in der Ferne eher als eine Wolke virtueller Punktlichter approximiert wird.
- Bitmask: Eine Liste von Umschaltflächen, mit denen diese Lichtquelle davon ausgeschlossen werden kann, bestimmte Lightmap Groups zu beeinflussen.
- Baked contribution: Legt fest, welche Art von Beleuchtungsdaten gebacken werden sollen. Nur sichtbar im Indirect- oder Shadowmask-Modus. Mögliche Werte:
- Direct and Indirect: Es wird sowohl die direkte, als auch indirekte Beleuchtung vollständig gebacken. Dies ist das Standardverhalten und wird für alle Light Meshes empfohlen, da es keine Echtzeitvariante gibt, um sie in Unity zu emulieren.
- Indirect only: Ein Echtzeit-Licht soll einen direkten Beitrag leisten; nur indirekte Beleuchtung wird gebacken.
- Shadowmask and Indirect: Ein Echtzeit-Licht soll einen direkten Beitrag leisten, aber Schatten von statischer Geometrie werden in eine separate Map gebacken. Dynamische und statische Schatten werden miteinander gemischt. Indirekte Beleuchtung wird wie gewohnt gebacken. Derzeit unterstützen nur die HDRP (und benutzerdefinierte Renderer) gemischte Area Lights.
- Direct, Indirect, Shadowmask (nur benutzerdefinierte Beleuchtung): Wie Direct und Indirect, jedoch wird zusätzlich eine Shadowmask erzeugt und für die Verwendung mit benutzerdefinierten Shadern zugewiesen.
- Indirect intensity: Nicht-physikalischer GI-Multiplikator für dieses Licht. Sollte für eine natürliche Beleuchtung auf 1 eingestellt sein, kann jedoch für stilisiertere Szenen angepasst werden.
- Shadowmask with falloff: Backt den vollständigen Lichtabfall in die Shadowmask ein (nur nützlich bei Verwendung mit benutzerdefinierten Shadern).
Sollten das Material des Meshes und die Lichteinstellungen nicht übereinstimmen, werden zwei Schaltflächen angezeigt:
- Match light to material: Kopiert die allgemeinen Einstellungen vom unbeleuchteten Material des Meshes oder Area Light zum Bakery Light Mesh.
- Match material to light: Kopiert die allgemeinen Einstellungen vom Bakery Light Mesh zum unbeleuchteten Material des Meshes oder Area Light.
Unterschiede zwischen Light Mesh und emissive Materialien
Emissives Material:
- Verbreitet Licht während der GI-Berechnung und ist dadurch “kostenlos” - unabhängig davon, wie viele Meshes emissiv sind.
- Kleine und helle Lichter können, je nach Anzahl des GI sample count, zu ungenauen und verrauschten Ergebnissen führen.
- Muss aufgrund der Funktionsweise von GI in Bakery Platz in der Lightmap einnehmen, wodurch möglicherweise Platz verschwendet wird. Das bedeutet wiederum auch, dass emissive Objekte gültige UVs benötigen und die Einstellung “Cast shadows” aktiviert sein muss.
Light Mesh:
- Die Beleuchtung wird für jedes Licht einzeln berechnet und ist daher langsamer als bei emissiven Materialien.
- Entwickelt, um auch bei kleinen und hellen Lichtquellen, selbst wenn diese sehr weit entfernt sind, saubere Ergebnisse zu erzielen.
- Nimmt keinen Platz in Lightmaps ein.
Bakery Point Light
Punktlicht, hat keine Fläche. Trotz physikalischer Unmöglichkeit ist es für Spiele nützlich und die einzige Möglichkeit, die Punkt- und Spotlichter von Unity nachzubilden.
- Color: Farbe.
- Intensity: Linearer Farbmultiplikator.
- Shadow spread: Unschärfe des Schattens. Obwohl Punktlichter keine Fläche besitzen, ist es dennoch oft wünschenswert, von ihnen geworfene, unscharfe Schatten zu bekommen. Zu diesem Zweck werden Schatten so simuliert, als würden sie von einer kugelförmigen Flächenlichtquelle geworfen. Dieser Parameter definiert den Radius einer solchen virtuellen Kugel, was sich direkt auf die Unschärfe auswirkt.
- Physical falloff: Wenn aktiviert, wird der korrekte invers-quadratische Lichtabfall mit zusätzlicher Abschwächung nahe der Grenze verwendet. Andernfalls wird versucht, den Lichtabfall von Unity nachzuahmen.
- Falloff min size: Mehr dazu im Artikel Point Light Attenuation.
- Range: Wenn Physical falloff deaktiviert ist, entspricht dies der Lichtreichweite von Unity. Ist es aktiviert, wird der physikalische Lichtabfall an den Rändern nur leicht abgeschwächt.
- Samples: Beeinflusst die Qualität der Schatten. Typische Werte liegen zwischen 1 und 512. Das Setzen der Samples auf 0 deaktiviert das Werfen von Schatten für dieses Licht.
- Projection mask: Art der Maske/des Cookie. Optionen:
- Omni: keine Maske, vergleichbar mit Unity’s Point Light.
- Cookie: Projektion einer Cookie-Textur. Zusätzliche Optionen:
- Cookie texture: 2D Textur Asset. Bakery enthält die ursprüngliche Spot Light-Textur von Unity (unter dem Namen ftUnitySpotTexture), die Sie zur Nachahmung verwenden können.
- Angle: Texturprojektionswinkel (ähnelt Unity’s Spot Light).
- Correct distortion: Korrigiert Verzerrungen von Cookies, die bei einer Weitwinkelbetrachtung auf geraden Linien sichtbar sind.
- Cubemap: Cubemap-Cookie-Projektion. Zusätzliche Optionen:
- Projected cubemap: Cubemap Asset.
- IES: Beleuchtung wird durch Daten aus einer IES-Datei moduliert. Zusätzliche Optionen:
- IES file: Datei mit .ies-Endung.
- Bitmask: Eine Liste von Umschaltflächen, mit denen diese Lichtquelle davon ausgeschlossen werden kann, bestimmte Lightmap Groups zu beeinflussen.
- Baked contribution: Legt fest, welche Art von Beleuchtungsdaten gebacken werden sollen. Nur sichtbar im Indirect- oder Shadowmask-Modus. Mögliche Werte:
- Direct and Indirect: Es wird sowohl die direkte, als auch indirekte Beleuchtung vollständig gebacken.
- Indirect only: Ein Echtzeit-Licht soll einen direkten Beitrag leisten; nur indirekte Beleuchtung wird gebacken.
- Shadowmask and Indirect: Ein Echtzeit-Licht soll einen direkten Beitrag leisten, aber Schatten von statischer Geometrie werden in eine separate Map gebacken. Dynamische und statische Schatten werden miteinander gemischt. Indirekte Beleuchtung wird wie gewohnt gebacken.
- Direct, Indirect, Shadowmask (nur benutzerdefinierte Beleuchtung): Wie Direct und Indirect, jedoch wird zusätzlich eine Shadowmask erzeugt und für die Verwendung mit benutzerdefinierten Shadern zugewiesen.
- Indirect intensity: Nicht-physikalischer GI-Multiplikator für dieses Licht. Sollte für eine natürliche Beleuchtung auf 1 eingestellt sein, kann jedoch für stilisiertere Szenen angepasst werden.
- Shadowmask with falloff: Backt den vollständigen Lichtabfall (Distanz ausgenommen) in die Shadowmask ein (nur nützlich bei Verwendung mit benutzerdefinierten Shadern).
- Legacy sampling: Verwende Bakery's ursprüngliche, stärker verzerrte Schattenabtastungsstrategie. Erzeugt rauschfreie Schatten, aber breite Halbschatten können Streifenbildung aufweisen. Wenn diese Option deaktiviert ist, wird eine unverzerrte, aber mehr mit Rausch behaftete Technik verwendet.
Sollten für dasselbe GameObject sowohl die Unity- als auch die Bakery-Lichtquelle aktiviert sein, und beide nicht miteinander übereinstimmen, werden zwei Schaltflächen angezeigt:
- Match lightmapped to real-time: Kopiert allgemeine Einstellungen vom Unity Light zum Bakery Light.
- Match real-time to lightmapped: Kopiert allgemeine Einstellungen vom Bakery Light zum Unity Light.
Bakery Volume
Volumes generieren 3D-Texturen, die Light Probes pro Voxel speichern (sphärische Harmonische der Ordnung L1 und Shadowmasks), wodurch sie einen geeigneten Ersatz für reguläre Unity Light Probes darstellen.
| Unity Light Probes | Unity LPPV | Bakery Volumes | |
|---|---|---|---|
| Manuelles Platzieren einzelner Probes | Ja | Ja | Nein |
| Interpolieren mehrerer Probes auf einem Objekt | Nein | Ja | Ja |
| Ist während der Laufzeit verschiebbar | Nein | Nein | Ja |
| Kann in ein Prefab platziert werden | Nein | Nein | Ja |
| Vollständige Scripting-API verfügbar | Nein | Nein | Ja |
| Ringing | Möglich | Möglich | Behoben |
| Denoising | Nein | Nein | Ja |
| Laufzeit-Overhead | CPU: niedrig; GPU: niedrig. | CPU: mittel; GPU: mittel. | CPU: kein; GPU: mittel. |
Bakery Volume ist eine Begrenzungsbox, die mit einer Reihe von 3D-Texturen (3 SH-Texturen und bei Bedarf eine Shadowmask) verknüpft ist, wodurch sie sehr einfach zu verwenden und mit Skripten zu modifizieren ist. Volumes können während der Laufzeit ganz einfach ausgetauscht, verschoben, geladen oder entladen oder mit Prefabs verknüpft werden. Sie benötigen außerdem keine Light Probe Groups und die manuelle Platzierung von Probes entfällt; das gesamte Volumen wird stattdessen mit einem einheitlichen Raster aus Voxel-Probes gefüllt. Light/Shadow leaking wird automatisch auf die gleiche Weise behoben wie bei Lightmaps (dünne doppelseitige Wände können jedoch bei großen Voxelgrößen ein Problem darstellen, was jedoch durch die Verwendung unterschiedlicher Volumes auf verschiedenen Seiten vermieden werden kann). Aufgrund der einheitlichen Beschaffenheit von Voxel-Rastern ist es auch möglich, ein Lightmap-ähnliches Denoising auf sie anzuwenden, was bei normalen Light Probes nicht machbar ist. Zusätzlich verwenden Bakery Shaders den Geomerics Sampling-Trick, um "Ringing"-Artefakte, die von sphärischen Harmonischen manchmal bei kontrastreicher HDR-Beleuchtung erzeugt werden, vollständig zu beseitigen.
Dadurch können Volumes eine saubere, detaillierte und hochwertige gebackene Beleuchtung für dynamische Objekte erzeugen (d. h. Beleuchtung, die von statischen Objekten ausgeht und sich auf dynamische Objekte auswirkt, nicht umgekehrt).
Der einzige Nachteil des Volumes-Ansatzes sind die höheren Shading-Kosten pro Pixel. Die Kosten sind ähnlich wie bei LPPV (Skalierung mit der Anzahl der schattierten, vom Volumen betroffenen, Pixel auf dem Bildschirm), aber im Gegensatz zu LPPV werden die Volumen selbst nach dem Backen nicht mehr aktualisiert. Das Mischen mehrerer Volumen kann vermieden werden, indem man sie leicht überlappen lässt.
Einstellen der Volume Transform
Wenn Bakery Volume zu einem GameObject hinzugefügt wird, erscheint in der Szenenansicht ein Begrenzungsrahmen-Gizmo. Durch das Ziehen an den kleinen Quadraten wird es skaliert. Es gibt noch andere Möglichkeiten, wie man die Größe und Position der Volume ändern kann:
- Ziehen Sie ein beliebiges, renderbares GameObject in das Feld "Wrap to object". Dadurch umschließt das Volume dieses Objekt (und seine untergeordneten Elemente) und ummantelt es.
- Wenn demselben Objekt ein Box Collider hinzugefügt wurde, werden die Schaltflächen "Set from box collider" und "Set to box collider" angezeigt. Diese können verwendet werden, um Werte schnell zwischen Volume/Collider zu kopieren.
Auflösung
Wenn "Adaptive resolution" aktiviert ist, wird die Anzahl der Voxel durch die "Voxels per unit"-Angabe bestimmt. Durch Deaktivieren kann die Auflösung manuell eingegeben werden. Bei den meisten Spielen mit 1 Einheit = 1 Meter ist 2 ein angemessener Wert für "Voxels per unit", aber es gibt Fälle (z. B. dynamische Türen), in denen die Verwendung eines kleineren Volumes mit höherer Auflösung vorteilhafter ist.
Andere Einstellungen
- Enable baking: Soll die Volume (neu) berechnet werden? Deaktivieren, um das Überschreiben vorhandener Daten zu verhindern.
- Denoise: Wende Denoising nach dem Backen der Volume an. Empfohlen für hochauflösende Volumes. Vermeiden Sie die Verwendung der Einstellung bei Volumes mit sehr niedriger Auflösung, die viele Lichter abdecken, da es für den Denoiser schwierig sein wird, den tatsächlichen Inhalt von Rauschen unterscheiden zu können.
- Global: Weist diese Volume automatisch allen kompatiblen Shadern zu, sofern diese keine Überschreibungen enthalten. Intern ruft es den Befehl Shader.SetGlobalTexture()/SetGlobalVector() auf.
Benutzung
Volumes können mithilfe eines Volume-bewussten Shaders Objekten zugewiesen werden. Bakery wird mit dem "Bakery Standard"-Shader, der Volumes bereits implementiert hat, sowie mit HDRP- und URP-Graphen geliefert. Sehen Sie sich die example_volumes Szenen an, um verschiedene Anwendungsmöglichkeiten einer Volume zu entdecken.
Hinweise und Tipps
- Sehen Sie sich unbedingt die Beispiele an.
- Falls sich zwei Volumes berühren, lassen Sie sie ein wenig überlappen. Die Größe der Überlappung sollte der Größe des größten dynamischen Objekts entsprechen. Auf diese Weise funktioniert das einfache Wechseln zwischen Volumes nach Bedarf.
- Platzieren Sie Volumes nur in Bereichen, die dynamische Objekte tatsächlich erreichen können. Verwenden Sie zum Beispiel die Spielerhöhe, um die Höhe der Volume zu begrenzen.
Drehen von Volumes
Volumes können um die Y-Achse gedreht werden, sofern die Einstellung "Rotate around Y" aktiviert ist. Die Drehung ist sehr ressourcenschonend und verwendet nur 2 zusätzliche Daten-Floats (vorberechnete Sinus-/Kosinuswerte des Winkels).
Es gibt eine zusätzliche Option zum Drehen von Volumes während der Laufzeit (unter Experimental -> "Support rotation after bake" und eine ähnliche Einstellung im Bakery Shader). In diesem Fall müssen sie ohne anfängliche Drehung gebacken werden.
In der URP kann solch eine dynamische Drehung mithilfe von BakeryURPVolumeGraphRotatable.shadergraph genutzt werden.
Für globale Volumes wird die dynamische Drehung aktualisiert, wenn die Komponente (wieder) aktiviert oder volume.SetGlobalParams() aufgerufen wird. Bei der Nutzung von lokal gedrehten Volumen ist die manuelle Einstellung der Drehung im Material oder im MaterialPropertyBlock erforderlich:
Technische Informationen
Volumes können automatisch funktionieren (siehe Beispielszenen), aber es ist auch möglich, ihre Wirkweise per Skript zu steuern.
Volumedaten können über diese öffentlichen Eigenschaften aus der Komponente abgerufen werden:
- bakedTexture0: Speichert L0-RGB-Koeffizienten und den L1-Z-Rotkanal in den Alphakanal.
- bakedTexture1: Speichert L1-X-RGB-Koeffizienten und den L1-Z-Grünkanal in den Alphakanal.
- bakedTexture2: Speichert L1-Y-RGB-Koeffizienten und den L1-Z-Blaukanal in den Alphakanal.
- bakedMask: Speichert die volumetrische Shadowmask.
- bounds: Die Begrenzungsbox der Volume.
Alle bakedTexture*-Maps nutzen das RGBAHalf (8 Bytes pro Voxel) Format, während die Shadowmask das Format ARGB32 (4 Bytes pro Voxel) verwendet. Alternativ kann für die Shadowmask auch das Single-channel R8 Format (1 Byte pro Voxel) verwendet werden.
Daher gilt: volume byte size = width*height*depth*3*8 + (nur wenn die Shadowmask verwendet wird) width*height*depth*4 (oder width*height*depth bei einer R8 Shadowmask).
Texture compression kann für Volumes aktiviert werden, um diese deutlich zu verkleinern.
Zum Samplen von Volumes werden spezielle Shader benötigt, die in Bakery bereits enthalten sind. Um einem benutzerdefinierten Shader Volumes-Funktionen hinzuzufügen, überprüfen Sie bitte die Funktion BakeryVolume_float() in der Datei BakeryDecodeLightmap.hlsl, die in den HDRP/URP-Paketen enthalten ist.
Bakery Light Filter
Markiert einen Renderer als Light Filter. Light Filter färben alle direkten/indirekten Strahlen mit ihrer Farbe, ähnlich wie optische Filter im realen Leben, wodurch farbige Transparenzen (z. B. Buntglas) entstehen. Der einzige Parameter ist die, für die Tönung, verwendete Textur.
- Objekte mit Light Filter erhalten weiterhin wie alle anderen Objekte auch Lightmaps.
- Filter streuen/verwischen keine Strahlen (nutzen Sie hierfür Subsurface Scattering oder Backface GI).
- Filter können farbige Schatten erzeugen. Wenn für das Licht ein Shadowmask-Modus verwendet wird, wird nur der R-Kanal des Ergebnisses gespeichert (da Unity nur einkanalige Masken unterstützt). Für vollständig gebackene Schatten gibt es keine Einschränkungen.
Bakery Sector
Lesen Sie den Artikel Partial scene baking für weitere Informationen.
Bakery Always Render
Wenn dies zu einem Objekt hinzugefügt wird, berücksichtigt Bakery es beim Backen immer, auch wenn sein Renderer deaktiviert ist.
Bakery Pack As Single Square
Wenn dies zu einem Objekt hinzugefügt wird, behandelt Bakery die UVs dieses Objekts und die UVs seiner untergeordneten Objekte als ein einziges kombiniertes Quadrat und verschiebt sie während des automatischen Atlas-Packens oder in einer Lightmap Group im Modus Pack Atlas niemals voneinander weg. Die gesamte Hierarchie der untergeordneten Objekte wird als Ganzes gepackt.
Wenn dies zu einer LODGroup hinzugefügt wird, werden alle ähnlich benannten LODs für dieselbe Lightmap markiert. Standardmäßig erhält jedes LOD eine einzigartige Lightmap, die Platz im Atlas einnimmt. Wenn jedoch bekannt ist, dass LODs desselben Objekts ähnliche UV2-Kanäle haben (oder UV1, wenn sie sich nicht überlappen, und UV2 nicht vorhanden ist), können sie demselben Teil des Atlas zugeordnet werden, wodurch Speicherplatz gespart wird. Diese Technik ist auch als Lightmap Stealing bekannt.
Kompatibilität von Materialien
Albedo und Emission
Bakery unterstützt die meisten Unity Materialien durch die Verwendung des Meta Pass-Systems. Alle Built-in, Surface, URP und HDRP Shaders verfügen bereits über einen korrekt definierten Meta Pass.
Wenn Sie einen Unlit Shader haben, müssen Sie den Meta Pass manuell hinzufügen, so wie es in der Unity Dokumentation beschrieben wird.
Sollte der Pass nicht vorhanden sein, wird Bakery die Eigenschaften _MainTex, _BaseColorMap oder _Color (wenn keine Textur festgelegt ist) als Materialalbedo und _EmissionMap sowie _EmissionColor als Emissionsfarbe werten.
Damit Emission funkionieren kann, muss der Wert Material.globalIlluminationFlags auf MaterialGlobalIlluminationFlags.BakedEmissive gesetzt werden. Die Standard Shader legen diesen Wert automatisch fest.
Opacity
Standardmäßig übernimmt Bakery immer die volle Opazität aus dem Alpha-Wert von _MainTex, _BaseColorMap oder _BaseMap und behandelt diese als Cutout (1-Bit Transparenz).
Wenn die Einstellung Dither Transparency aktiviert ist, werden halbtransparente Werte automatisch in variables blaues Rauschen umgewandelt, das anschließend gefiltert/unscharf gemacht wird, was zu einer teilweisen Transparenz führt (dies war zuvor mit benutzerdefinierten, manuell geditherten Karten möglich, seit Version 1.97 erfolgt dies jedoch automatisch).
Damit Opacity funkionieren kann, muss der RenderType Tag des Shaders einen der folgenden Werte haben:
- Transparent
- TransparentCutout
- TreeLeaf
Sollte eine Eigenschaft namens _Cutoff vorhanden sein, wirkt sich diese auf den Cutout aus (daher funktioniert der Cutoff-Schieberegler des Standard Shaders automatisch).
Ohne Dither Transparency wird, wenn der RenderType des Materials Transparent oder TreeLeaf ist, der Alpha-Wert von _Color zusätzlich den Cutoff-Wert modifizieren: finalCutoff = 1 - (1 - cutoff) * alpha
Für farbige Transparenzeffekte, verwenden Sie die Light Filter-Komponente.
Für diffuse Transparenzeffekte, lesen Sie den Abschnitt Backface GI und den Artikel über Subsurface scattering.
Alpha Meta Pass
Seit v1.9 unterstützt Bakery die Angabe einer benutzerdefinierten shader-basierten Transparenz, wofür jedoch ein kompatibler Shader erforderlich ist. Um die Vorteile des Alpha Meta Pass nutzen zu können, müssen folgende Schritte durchgeführt werden:
- Fügen Sie Ihrem Shader die Eigenschaft namens BAKERY_META_ALPHA_ENABLE hinzu. Beispiel:
- Stellen Sie sicher, dass der RenderType auf einen der oben genannten Werte gesetzt ist.
- Deklarieren Sie einen Pass namens META_BAKERY.
- Überprüfen Sie in diesem Pass, ob unity_MetaFragmentControl.w ungleich Null ist. Ist dies der Fall, geben Sie den berechneten Transparenzwert zurück.
Sehen Sie sich als Beispiel die im Paket enthaltene Datei Baked_Alpha_meta.shader an.
Hinweis: Derzeit muss für den Alpha Meta Pass der Light Probe-Modus auf L1 oder L2 eingestellt sein.
Normal mapping
Benutzerdefinierte Oberflächennormalen können in Verbindung mit dem Modus Baked Normal Maps verwendet werden. Leider gibt der Meta Pass von Unity keine Normaleninformationen aus, sodass standardmäßig die Normalen aus einer Textur namens _BumpMap übernommen und zusätzlich durch _MainTex_ST verändert werden.
Es ist jedoch möglich, komplett benutzerdefinierte Shader mit erweiterten Normal Mapping-Funktionen (z. B. Überblenden mehrerer Ebenen) zu erstellen, die mit dem Backen kompatibel sind. Dazu müssen Sie folgendes tun:
1. Fügen Sie Ihrem Shader einen Meta Pass hinzu, so wie es in der Unity Dokumentation beschrieben ist.
2. Nennen Sie diesen Pass "META_BAKERY" statt nur "META".
3. Inkludieren Sie die Datei "BakeryMetaPass.cginc".
4. Fügen Sie #pragma vertex vert_bakerymt hinzu.
5. Wenn die Variable unity_MetaFragmentControl.z nicht 0 ist, sollte der Shader Normale im Weltkoordinatensystem zurückgeben. Der zurückgegebene Normalwert sollte mit der Funktion BakeryEncodeNormal codiert werden.
Zwei Beispiel-Shader, die diesen erweiterten Meta Pass implementieren, sind im Ordner Assets/Bakery/examples/shaders enthalten.
Sie können BakeryMetaPass.cginc kopieren und an Ihre Bedürfnisse anpassen, z. B. um zusätzliche Daten aus dem Vertex Shader zu übermitteln.
Front/back faces
Unabhängig davon, welcher Culling-Modus für den Shader verwendet wird, behandelt Bakery alle Rückflächen als undurchsichtig, was bedeutet, dass direkte Lichtstrahlen eine Rückfläche ebenso wenig durchdringen wie eine Vorderfläche. Bei der Verwendung von Backface GI können Rückflächen jedoch teilweise die von einer Vorderfläche empfangene Beleuchtung emittieren.
"Lightmap Parameters" Assets
Ähnlich wie Bakery's Lightmap Groups verfügt Unity über Lightmap-Parameter, die als Assets erstellt und Mesh Renderern zugewiesen werden können. Deren Logik weisen sowohl Unterschiede als auch Gemeinsamkeiten auf:
- Die Lightmap Group dient in erster Linie dazu, mehrere Objekte in einem Atlas zu gruppieren. Darüber hinaus ermöglicht sie das Überschreiben der Back-Einstellungen für diesen Atlas.
- Lightmap-Parameter werden hauptsächlich dazu verwendet, um die Back-Einstellungen für ein Objekt zu überschreiben. Sie können jedoch auch das Packing beeinflussen, wenn die Option "Baked Tag" verwendet wird: Objekte mit einem unterschiedlichen Baked Tag teilen sich niemals denselben Atlas.
Da einige Benutzer eher mit dem Lightmap Parameter-Workflow vertraut sind, unterstützt und erweitert Bakery diese:
- Der Baked Tag wird von Bakery berücksichtigt.
- Zusätzliche Bakery-spezifische Einstellungen werden in der Lightmap Parameters UI angezeigt. Über die Bedeutung dieser Einstellungen finden Sie im Abschnitt Lightmap Group mehr heraus.
Project Settings
Einige globale Einstellungen können unter Project Settings -> Bakery GPU Lightmapper angepasst werden (diese Option ist nur in Unity 2018.3 oder neuer sichtbar; bei älteren Versionen bearbeiten Sie stattdessen BakeryProjectSettings.asset):
- Mipmap lightmaps: Aktiviert Mipmapping für Lightmap Assets. Kann zu Leaks in UV-Maps führen, da Atlas-Texturen kleiner werden; andererseits reduziert es Lightmap Aliasing in der Ferne. Insgesamt wird empfohlen, für sehr weit entfernte Objekte separat gebackene LODs mit niedrig aufgelösten Lightmaps zu verwenden.
- Color file format: Format für reguläre HDR color lightmaps. Mögliche Werte:
- HDR: Radiance HDR format (Standard). Kann mit vielen Bildbearbeitungsprogrammen geöffnet und bearbeitet werden.
- Asset: Natives Unity Format. Kann eine benutzerdefinierte Mipmap-Anzahl haben.
- Mask/Direction file format: Format für zusätzliche LDR-Karten, wie Shadowmasks oder Richtungsinformationen. Mögliche Werte:
- TGA: 8-bit Targa (Standard).
- PNG: 8-bit PNG. Benötigt weniger Speicherplatz auf der Festplatte als Targa (TGA).
- Asset: Natives Unity Format. Kann eine benutzerdefinierte Mipmap-Anzahl haben.
- Compress lightmaps: Legt das Komprimierungsverhalten für Lightmap-Assets fest. Komprimierte Lightmaps benötigen weniger VRAM, können jedoch je nach Art der Komprimierung einige visuelle Artefakte (wie Streifenbildung oder farbige Flecken) aufweisen. (Informationen zu Komprimierungsproblemen auf mobilen Endgeräten finden Sie hier). Mögliche Werte:
- Compress but allow overriding asset: Es werden neue Lightmaps mit aktivierter Komprimierung erstellt. Nach ihrer Erstellung können ihre Komprimierungseinstellungen im Inspector geändert werden. Diese geänderten Werte bleiben nach dem erneuten Backen erhalten (Standard).
- Force compress: Lightmaps werden immer komprimiert.
- Force no compress: Immer unkomprimierte Lightmaps erstellen.
- High quality direction: Ermöglicht eine "hohe" Komprimierungsqualität für Richtungskarten. Die tatsächlichen Formate hängen von der (Ziel)plattform ab. Auf dem PC wird beispielsweise DXT1 durch BC7 ersetzt, was zwar eine höhere Qualität liefert, aber den VRAM-Verbrauch verdoppelt.
- Texel padding (default atlas packer): Legt fest, wie viele leere Texel zwischen den UV-Layouts von Objekten in Lightmap-Atlas-Texturen hinzugefügt werden sollen, wenn der Standard-Atlas Packer verwendet wird.
- Texel padding (xatlas packer): Wie oben, nur das stattdessen xatlas verwendet wird.
- Alpha Meta Pass resolution multiplier: Multipliziert die Auflösung des Alpha Meta Pass, wodurch präzise shaderbasierte Cutouts beim Backen von niedrig aufgelösten Lightmaps möglich sind.
- Volume render mode: Welcher Render-Modus soll für alle Volumes verwendet werden? Auto verwendet den aktuell aktiven Render-Modus (Standard).
- Delete previous lightmaps before bake: Löscht alle zuvor gerenderten Lightmap-Dateien dieser Szene, bevor neue gebacken werden.
- Log level: Legt fest, wie viele Informationen während des Backvorgangs in der Konsole ausgegeben werden. Mögliche Werte:
- 0: es wird nichts ausgegeben.
- 1: es werden nur Fortschrittsinformationen ausgegeben.
- 2: es werden nur Warnungen ausgegeben.
- 3: es wird alles an Informationen ausgegeben.
- Alternative scale in lightmap: Bewirkt, dass sich die Renderer-Eigenschaft 'Scale in Lightmap' eher wie das integrierte Unity-Verhalten verhält.
- Align to texture compression blocks with xatlas: Lässt xatlas Maps an 4x4-Blockgrenzen ausrichten, was zu komprimierungsfreundlicheren Ergebnissen führt.
- Generate smooth positions: Sollen Sample-Positionen angepasst werden, um falsche Schatten auf Low-Poly-Geometrien mit glatten Normalen zu vermeiden? Kann in sehr seltenen Fällen deaktiviert werden, in denen Geometrie mit stark abweichenden Normalen verwendet wird. Lesen Sie diesen Artikel für eine technische Erklärung.
- Smooth positions per-triangle: Sollen glatte/flache Positionen pro Dreieck festgelegt werden? Kann in sehr seltenen Fällen deaktiviert werden, in denen Geometrie mit stark abweichenden Normalen verwendet wird.
- Use 'Receive GI' values: Berücksichtigt 'Receive Global Illumination'-Werte von Renderern. Ursprünglich wurde dies von Bakery ignoriert.
- Remove ringing in Legacy light probes: Ermöglicht eine weichere Light Probes-Faltung im Legacy Modus, um Artefakte in kontrastreichen Bereichen zu vermeiden.
- Always render reflection probes: Automatisch nach jedem Render/Render Light Probes-Vorgang Reflection Probes rendern.
- Ringing removal for L2 light probes: Wendet De-Ringing auf L2 Light Probes an. Je höher der Wert, desto weicher ist die Beleuchtung von Probes. Diese Glättung reduziert Ringing-Artefakte (falls vorhanden).
- Put menu under Tools: Verschiebt den Bakery Menüeintrag under den Tools Menüeintrag.
Falls ein Format auf Asset eingestellt und Mipmapping aktiviert ist, wird eine zusätzliche Einstellung angezeigt:
- Maximum mipmap count: Legt die maximale Anzahl von Mipmaps fest. Beispiel: Bei einem Wert von 2 verfügt eine 8K-Lightmap nur über zwei zusätzliche Mipmaps: 4K und 2K. Niedrigere Auflösungen werden weggelassen, wodurch das Auftreten von Leak-Artefakten beim Mipmapping begrenzt wird.
Skinned mesh renderer support
Bakery unterstützt Skinned Meshes seit v1.65. Es gibt jedoch einige Einschränkungen:
- Einige Versionen von Unity unterstützen UV1 auf Skinned Meshes nicht und ignorieren daher "Generate lightmap UVs". Stellen Sie sicher, dass das in Ihrer Szene verwendete Mesh über UV1 verfügt, und verwenden Sie nach Möglichkeit nicht überlappende UV0.
- Die Anpassung des UV-Paddings funktioniert nicht bei Skinned Meshes (Unity scheint beim Versuch, die Unwrap-Funktion auf sie anzuwenden, abzustürzen);
- Skinned Meshes können keine pro-Vertex Lightmaps besitzen (die Engine bietet keine Unterstützung für additionalVertexStreams mit skinning).
Shader Tweaks
Bakery bietet optionale Shader-Modifikationen, die auf Unity Shader angewendet werden können, um das Sampling von Lightmaps zu verbessern und die Echtzeitbeleuchtung besser an Lightmaps anzupassen. Das Menü zur Anpassung der Shader kann über Bakery->Shader Tweaks aufgerufen werden.
Diese Optionen patchen die Basis-Unity Shader-Includes (aus dem Ordner CGIncludes), die von den meisten integrierten und Drittanbieter-Shadern verwendet werden. Alle vorgenommenen Änderungen werden sich auf alle Projekte, die in Zukunft mit dieser Version des Editors geöffnet werden, auswirken, können jedoch leicht rückgängig gemacht werden. Shader-Optimierungen beeinflussen die Funktionsweise von Standard- und Surface Shadern. HDRP, URP und andere SRPs sind davon nicht betroffen.
Alle verfügbaren Modifikationen werden als Schaltflächen angezeigt. Klicken Sie auf eine Schaltfläche, um die dazugehörige Änderung anzuwenden. Klicken Sie erneut auf die Schaltfläche, um die Änderung rückgängig zu machen. Derzeit verfügbare Optionen:
- Use bicubic interpolation for lightmaps: Anstelle der standardmäßigen bilinearen Interpolation wird eine bikubische Interpolation verwendet. Diese Optimierung behebt viele, die von niedrig aufgelösten Lightmaps produzierten gezackten Kanten ziemlich gut. Funktioniert derzeit nur auf DX11 und modernen Konsolen, weshalb andere Plattformen weiterhin bilinear verwenden werden.
- Use multiplication for shadowmask: Kombiniert statische und dynamische Schatten mithilfe von Multiplikation anstelle von Minimum. Aus unbekannten Gründen hat Unity beschlossen, standardmäßig den Minimaloperator zu verwenden - was zu Artefakten führt, die bei der Multiplikation nicht auftreten.
- Use physical light falloff (forward): Ersetzt den gewöhnlichen Lichtabfall von Echtzeit-Punkt/Spotlichtern durch einen physikalisch korrekteren invers-quadratischen Abfall. “Range” wird nur an den Rändern leicht ausgeblichen (entspricht Bakery-Lichter mit aktiviertem Physical Falloff-Kontrollkästchen). Beeinflusst nur den Forward Renderer. Lesen Sie den Artikel Point Light Attenuation für weitere Details.
- Use physical light falloff (deferred): Wie oben, aber nur der Deferred Renderer wird beeinflusst.
Falloff-Optimierungen funktionieren möglicherweise nicht vollständig in Unity-Versionen > 2017. SRPs besitzen standardmäßig einen korrekten Lichtabfall.
Bakery shaders
Bakery enthält eigene Shader mit Unterstützung für Vertex-Lightmapping sowie die Richtungsmodi RNM und SH. Außerdem unterstützen sie die Berechnung einer ungefähren gebackenen Spiegelung (Specular) aus Richtungsinformationen. Bakery Shader werden für normale Lightmaps, Shadowmasks und den Dominant Direction-Modus nicht benötigt, da diese Funktionen von den meisten Unity Shadern unterstützt werden.
Standard render pipeline
Bakery/Standard: Erweitert den regulären Standard Shader von Unity um folgende zusätzliche Optionen:
- Allow Vertex Lightmaps: Ermöglicht die Verwendung dieses Materials für das Vertex-Lightmapping.
- Allow RNM Lightmaps: Ermöglicht die Verwendung dieses Materials mit dem RNM directional mode.
- Allow SH Lightmaps: Ermöglicht die Verwendung dieses Materials mit dem SH directional mode.
- Enable Lightmap Specular: Berechnet gebackene Spiegelungen (Specular) anhand von Daten aus den Richtungsmodi Dominant Direction, RNM oder SH directional. Beachten Sie, dass der Effekt aufgrund fehlender Informationen nur sehr ungefähr ist. Das Ergebnis sollte in etwa vergleichbar sein mit gebackener Spiegelung in Unity 4. Am besten sieht er in Kombination mit starken Normal Maps aus, auf flachen Oberflächen hingegen nicht so gut.
- Enable VertexLM directional: Wenn Vertex Lightmaps vorhanden sind, gibt dies an, dass Dominant Direction-Daten in Eckpunkten (Vertices) gespeichert sind und verwendet werden sollen.
- Enable VertexLM SH: Wenn Vertex Lightmaps vorhanden sind, gibt dies an, dass SH-Daten in Eckpunkten (Vertices) gespeichert sind und verwendet werden sollen.
- Enable VertexLM Shadowmask: Wenn Vertex Lightmaps vorhanden sind, gibt dies an, dass die Shadowmask in Eckpunkten (Vertices) gespeichert ist und verwendet werden soll.
- Enable MonoSH: Behandelt Directional Maps als MonoSH Maps.
- Non-linear SH: Im SH directional mode kann diese Option den Kontrast verbessern (näher an Ground Truth dran), verlangsamt jedoch den Shader etwas. Dieser Trick basiert auf dem “Reconstructing Diffuse Lighting from Spherical Harmonic Data”-Papier von Geomerics.
- Non-linear Light Probe SH: Ähnlich wie Non-linear SH, ist aber für Light Probes bestimmt. Im Falle von Probes besteht der größte Vorteil darin, dass falsche negative Werte beseitigt werden. Dieses Problem tritt häufig in kontrastreichen Szenen mit hellen HDR-Lichtquellen auf und ist eine inhärente Einschränkung sphärischer Harmonien und nicht spezifisch für Bakery (d. h. ähnliche Artefakte können auch bei integrierten Lightmappern auftreten).
- Force Bicubic Filter: Aktiviert die bikubische Filterung für alle zusätzlichen Maps. Für eine vollständige bikubische Filterung (einschließlich der ersten color map) wird empfohlen, diese auch in den Shader Tweaks zu aktivieren.
Bakery/Standard Specular: wie Standard, aber für den Specular Workflow bestimmt.
HDRP & URP
Um zusätzliche HDRP/URP-Shader zu extrahieren, öffnen Sie die Datei Bakery_ShaderGraphHDRP.unitypackage oder Bakery_ShaderGraphURP.unitypackage, die im Lieferumfang von Bakery enthalten sind. Im Inneren finden Sie Shader Subgraphs, die Sie in Ihren eigenen Shader Graphs verwenden können, sowie einige Beispielmaterialien.
Vergleich der Feature-Unterstützung aller Shader
| Die meisten Unity Shader | Die meisten HDRP & URP Shader | Bakery Standard | HDRP Graphs | URP Graphs | |
|---|---|---|---|---|---|
| HDR color lightmaps | Ja | Ja | Ja | Ja | Ja |
| Shadowmask | Ja | Ja | Ja | Ja | Ja (Seit URP 10.1) |
| Dominant Direction | Ja | Ja | Ja | Ja | Ja |
| RNM | Nein | Nein | Ja | Ja | Ja |
| SH | Nein | Nein | Ja | Ja | Ja |
| MonoSH | Nein | Nein | Ja | Ja | Ja |
| Lightmap specular | Nein | Nein | Ja | Ja, für Dominant Direction und SH | Ja, für Dominant Direction (siehe Link) |
| Bicubic filtering | Ja,
mithilfe von Shader Tweaks |
Nein | Ja,
mithilfe von Shader Tweaks |
Nein | Nein |
| Vertex lightmaps | Nein | Nein | Ja | Nur eine Farbe, keine per-vertex SH, direction oder Shadowmasks (Shader Graph-Einschränkung) | Nur eine Farbe, keine per-vertex SH, direction oder Shadowmasks (shader Graph-Einschränkung) |
| Non-Linear Light Probes | Nein | Nein | Ja | Ja | Ja |
| Volumes | Nein | Nein | Ja | Ja | Ja |
| Volume shadowmask | Nein | Nein | Ja | Nein | Ja |
| Compressed volumes | Nein | Nein | Ja | Ja | Ja |
Lesen Sie auch: Integrieren von Bakery Shader-Funktionen in eigene Shader
Hinweise zu HDRP/URP
Sobald Bakery in ein HDRP- oder URP-Projekt importiert wurde, kann es in der Regel sofort verwendet werden. Es gilt jedoch einige Dinge zu beachten:
- Beispielszenen verwenden sowohl reguläre Standard Shader als auch in einigen Fällen "Bakery Standard"-Shader. HDRP und URP bieten zwar einen automatischen Mechanismus zum Aktualisieren von Projekt-Shadern von Standard auf Lit an, dieser ist jedoch nicht mit Bakery Standard kompatibel. Sie müssen daher manuell alle Materialien, die Bakery Standard verwenden, durch die Materialien aus Bakery_ShaderGraphHDRP.unitypackage oder Bakery_ShaderGraphURP.unitypackage ersetzen.
- In HDRP ist die voreingestellte Lichtintensität des HDRI-Himmels etwas hoch (11) und die Himmelsreflexion wird nicht verdeckt. Zusammen mit dem voreingestellten Eye Adaptation-Effekt kann dies dazu führen, dass einige Beispielszenen kaum sichtbar sind, da sie mit viel geringerer Intensität gebacken wurden. Reduzieren Sie in diesem Fall die Lichtintensität des HDRI-Himmels auf 1. Die HDRI-Einstellungen befinden sich normalerweise in Assets/HDRPDefaultResources/DefaultSettingsVolumeProfile.
- Falls Lichter in den Beispielszenen unter HDRP zu hell scheinen sollten, klicken Sie auf "Match real-time to lightmapped" an der Bakery Light-Komponente, um dies zu beheben.
- Verwenden Sie OpenImageDenoise 2 (empfohlen) oder OptiX 7 als Denoiser in HDRP, da diese für hohe Intensitätswerte besser geeignet sind.
- In HDRP können "distance" und reguläre Shadowmasks in der Light-Komponente gewechselt werden, nicht jedoch in den globalen Einstellungen.
- Verwenden Sie beim Skylight nicht die "Match"-Schaltfläche, da HDRP einen sehr spezifischen prozeduralen Himmelsshader verwendet. Backen Sie das Licht stattdessen auf diese Weise in ein HDRI ein.
- Es wird empfohlen, bei Verwendung von HDRP den Light Probe-Modus immer auf L2 oder L1 einzustellen, da der Renderer von HDRP nicht für den Legacy-Modus optimiert ist.
- Die neuesten Versionen von HDRP/URP verfügen über einen eigenen IES-Datei-Importierer. Aufgrund der Inkompatibilität der Asset-Typen trennt Unity die Dateien von den mit älteren Versionen gespeicherten Bakery IES-Lichter, sodass diese stattdessen als normale Punktlichter gerendert werden. Die Dateien können erneut hinzugefügt und die Lichter erneut gespeichert werden.
Bakery's Beispielszenen sind für die Built-in Render Pipeline gebaut worden, weshalb einige Schritte erforderlich sind, um sie korrekt in HDRP/URP zu rendern. Hier sind ein paar Tipps; es wird von einem neuen Projekt mit standardmäßigen HDRP/URP-Einstellungen ausgegangen:
Beispielszenen in der HDRP anschauen
- Nach dem Importieren von Bakery konvertieren Sie die Built-in-Materialien zu HDRP-Materialien wie folgt: Edit->Rendering->Materials->Convert All Built-in Materials To HDRP.
- Importieren Sie Bakery_ShaderGraphHDRP.unitypackage in das Projekt, da dies spezielle ShaderGraphen enthält, die erweiterte Bakery-Funktionen implementieren (nicht erforderlich für klassische color/directional/mask lightmaps).
- Wählen Sie die Datei DefaultSettingsVolumeProfile.asset aus. Ändern Sie im HDRI Sky-Bereich den Wert Exposure Compensation auf 1. Andernfalls ist das standardmäßige HDRP im Vergleich zu den Beispielszenen zu hell, sodass diese aufgrund dieser Belichtungsanpassung völlig schwarz erscheinen.
- Bei der Auswahl von Lichtern in den Beispielszenen initialisiert HDRP eigene Lichtdaten. Manchmal kann dies dazu führen, dass das Licht sofort viel heller wird. Klicken Sie auf "Match real-time to lightmapped", um die Synchronisierung durchzuführen.
- Stellen Sie den Light Probe-Modus vor dem Rendern von Light Probes auf L2 ein.
- example_directional: Ändern Sie die Shader zu BakeryDirSpecGraph, um Glanzeffekte zu sehen (oder einfach zum normalen HDRP/Lit für nur diffuses Normal Mapping). Entfernen Sie die Kugel, da derzeit kein ShaderGraph existiert, der per-vertex direction unterstützt.
- example_directional_MonoSH: Ändern Sie die Shader zu BakerySpecMonoSHGraph (oder BakeryMonoSHGraph für eine etwas günstigere Version ohne Glanzeffekte). Entfernen Sie die Kugel, da derzeit kein ShaderGraph existiert, der per-vertex MonoSH unterstützt.
- example_RNM: Ändern Sie die Shader zu BakeryRNMGraph.
- example_SH: Ändern Sie die Shader zu BakerySpecSHGraph (oder BakerySHGraph für eine etwas günstigere Version ohne Glanzeffekte). Entfernen Sie die Kugel, da derzeit kein ShaderGraph existiert, der per-vertex SH unterstützt.
- example_mixed_directional_mode: Für MonoSH/RNM/SH Planes ist ebenfalls ein anderer Graph erforderlich.
- example_lights: Ändern Sie den Shader der vertex-lightmapped Kugel zu BakeryVertexColorGraph.
- example_prefabs_bake: Es sind keine weiteren Anpassungen erforderlich.
- example_sectors: Es sind keine weiteren Anpassungen erforderlich.
- example_shadowmask: Wählen Sie das DirectLight aus und klicken Sie auf "Match real-time to lightmapped", um die Helligkeit anzupassen. Setzen Sie bei allen HDRP-Lichtern den Shadowmask-Modus auf Shadowmask.
- example_sponza_day: Legen Sie OpenImageDenoise 2 (oder Optix 7, falls nicht unterstützt) als bevorzugten Denoiser fest.
- example_sponza_evening: Legen Sie OpenImageDenoise 2 (oder Optix 7, falls nicht unterstützt) als bevorzugten Denoiser fest.
- example_subtractive: HDRP unterstützt den Subtractive-Modus nicht.
- example_volumes_simple: Ändern Sie den Shader vom Zug zu BakeryVolumeSpecGraph (oder BakeryVolumeGraph für eine etwas günstigere Version ohne Glanzeffekte).
- example_volumes_simple_shadowmask: Shadowmask Volumes werden derzeit für HDRP nicht unterstützt.
- example_volumes_advanced: Dasselbe wie example_volumes_simple.
- example_translucency: Der Großteil der Szene sollte normal erscheinen. Stellen Sie den Shader für das Objekt "Dynamic sphere lit by volume" auf BakeryVolumeGraph ein.
Beispielszenen in der URP anschauen
- Nach dem Importieren von Bakery konvertieren Sie die Built-in-Materialien zu URP-Materialien wie folgt: Öffnen Sie den Ordner "content" unter Assets/Bakery/examples/ und wählen Sie alle darin enthaltenen Materialien aus, indem Sie "t:material" im Suchfeld eingeben und den Suchvorgang auf den Ordner beschränken. Klicken Sie dann auf Edit->Rendering->Materials->Convert Selected Built-in Materials To URP.
- Importieren Sie Bakery_ShaderGraphURP.unitypackage in das Projekt, da dies spezielle ShaderGraphen enthält, die erweiterte Bakery-Funktionen implementieren (nicht erforderlich für klassische color/directional/mask lightmaps).
- example_directional: Ändern Sie die Shader zu BakeryURPLit und aktivieren Sie "Bakery Lightmapped Specular" (oder einfach zum normalen URP/Lit für nur diffuses Normal Mapping). Entfernen Sie die Kugel, da derzeit kein ShaderGraph existiert, der per-vertex direction unterstützt.
- example_directional_MonoSH: Ändern Sie die Shader zu BakeryURPLit, stellen Sie den Bakery Mode auf MonoSH ein und aktivieren Sie "Bakery Lightmapped Specular". Aktivieren Sie außerdem "Per-vertex" an der vertex-lit Kugel.
- example_RNM: Ändern Sie die Shader zu BakeryURPLit, stellen Sie den Bakery Mode auf RNM ein und aktivieren Sie "Bakery Lightmapped Specular".
- example_SH: Ändern Sie die Shader zu BakeryURPLit, stellen Sie den Bakery Mode auf SH ein und aktivieren Sie "Bakery Lightmapped Specular". Entfernen Sie die Kugel, da derzeit kein ShaderGraph existiert, der per-vertex SH unterstützt.
- example_mixed_directional_mode: Verwenden Sie hier ebenfalls BakeryURPLit mit einem unterschiedlichen Bakery Mode (MonoSH, RNM, SH). Non-directional / Dominant Direction / Baked Normal Maps können den regulären URP/Lit verwenden.
- example_lights: Es sind keine weiteren Anpassungen erforderlich.
- example_prefabs_bake: Es sind keine weiteren Anpassungen erforderlich.
- example_sectors: Es sind keine weiteren Anpassungen erforderlich.
- example_shadowmask: Ähnlich wie bei der Built-in Pipeline, müssen Sie die Option Distance Shadowmask im Bakery-Fenster (oder in den Quality Settings des Projekts) deaktivieren, um die tatsächliche gebackene/Echtzeit-Schattenmischung in der Nähe der Kamera sehen zu können.
- example_sponza_day: Aktivieren Sie Alpha Clipping am Laubmaterial.
- example_sponza_evening: Dasselbe wie example_sponza_day.
- example_subtractive: Es sind keine weiteren Anpassungen erforderlich.
- example_volumes_simple: Ändern Sie den Shader vom Zug zu BakeryURPLit und schalten Sie den Bakery Mode auf Volume. Optional können Sie "Bakery Lightmapped Specular" aktivieren.
- example_volumes_simple_shadowmask: Dasselbe wie example_volumes_simple, aber mit zusätzlich aktivierter "Volume Shadowmask".
- example_volumes_advanced: Dasselbe wie example_volumes_simple.
- example_translucency: Der Großteil der Szene sollte normal erscheinen. Stellen Sie den Shader für das Objekt "Dynamic sphere lit by volume" auf BakeryURPLit und den Bakery Mode auf Volume ein.
Aktualisierung von Bakery
Bei der Aktualisierung wird empfohlen, die folgenden Schritte auszuführen:
- Schließen Sie das Bakery-Fenster.
- Schließen Sie den Unity Editor.
- Öffnen Sie den Unity Editor erneut und laden Sie Ihr Projekt.
- Importieren Sie das neue Package.
Beachten Sie, dass der Import ohne vorheriges Schließen von Unity aufgrund gesperrter DLL-Dateien fehlschlagen kann (erkennbar an Konsolenbenachrichtigungen wie "alphabuffergen.dll: Access is denied.").
Wenn Sie die Bakery-Ordner (Assets/Bakery und Assets/Editor/x64/Bakery) an einen anderen Speicherort verschoben haben, müssen Sie diese möglicherweise vor der Aktualisierung zurückverschieben, um zu verhindern, dass zwei miteinander in Konflikt stehende Kopien des Pakets entstehen.
Scripting-API
Grundlegende Verwendung
Rendereinstellungen abrufen und ändern:
ftLightmapsStorage storage = ftRenderLightmap.FindRenderSettingsStorage();
Eine vollständige Liste aller verfügbaren Einstellungen können in der Datei ftLightmapsStorage.cs eingesehen werden.
Lightmapper-Instanz abrufen und Einstellungen (neu)laden:
ftRenderLightmap bakery = ftRenderLightmap.instance != null ? ftRenderLightmap.instance : new ftRenderLightmap(); bakery.LoadRenderSettings();
Lightmaps rendern (sowie Probes, wenn sie auf den Modus L1 oder L2 eingestellt sind):
bakery.RenderButton(bool showMsgWindows)
Nur Light Probes rendern:
bakery.RenderLightProbesButton(bool showMsgWindows)
Nur Reflection Probes rendern:
bakery.RenderReflectionProbesButton(bool showMsgWindows)
showMsgWindows gibt an, ob Dialogfelder/Bestätigungsfenster angezeigt werden können. Wird unterdrückt, wenn auf false gesetzt.
Überprüfen, ob gerade ein Backvorgang läuft:
ftRenderLightmap.bakeInProgress
Beispiele für die Verwendung finden Sie im Batch Scene Baker-Skript.
Zusätzliche functions
Kopiert alle Rendereinstellungen von einem ftLightmapsStorage in einen anderen:
ftLightmapsStorage.CopySettings(ftLightmapsStorage src, ftLightmapsStorage dest)
Ruft das globale (projektbezogene) Speicherobjekt ab:
ftGlobalStorage gstorage = ftLightmaps.GetGlobalStorage()
Kopiert alle Rendereinstellungen aus ftLightmapsStorage (pro Szene) nach ftGlobalStorage (pro Projekt):
ftLightmapsStorage.CopySettings(ftLightmapsStorage src, ftGlobalStorage dest)
Kopiert alle Rendereinstellungen aus ftLightmapsStorage (pro Projekt) nach ftGlobalStorage (pro Szene):
ftLightmapsStorage.CopySettings(ftGlobalStorage src, ftLightmapsStorage dest)
Ruft den Pfad zum Ordner, der die Binärdateien von Bakery enthält, ab:
ftLightmaps.GetEditorPath()
Zusätzliche Variablen
Ruft den aktuellen Pfad der temporären Dateien ab (es muss zuvor eine ftRenderLightmap-Instanz erstellt worden sein):
ftRenderLightmap.scenePath
Ruft die Datenkomprimierung des UVGBuffers ab bzw. legt sie fest (LZ4, falls aktiviert; DDS, falls nicht):
ftRenderLightmap.compressedGBuffer
Ruft die Ausgabe der Lightmap-Datenkomprimierung ab bzw. legt sie fest (LZ4, falls aktiviert; DDS, falls nicht):
ftRenderLightmap.compressedOutput
Events
Skripte können statische Ereignisse in der Klasse ftRenderLightmap abonnieren.
Wird aufgerufen, bevor ein vollständiger Rendervorgang gestartet wird:
EventHandler OnPreFullRender
Wird aufgerufen, bevor jede Light Probe im Legacy Light Probe-Modus gerendert wird. ProbeEventArgs ist eine Struktur, die das Feld pos mit der aktuellen Position der Light Probe enthält:
EventHandler<ProbeEventArgs> OnPreRenderProbe
Wird aufgerufen, nachdem Legacy Light Probes gerendert wurden:
EventHandler OnFinishedProbes
Wird aufgerufen, nachdem ein vollständiger Rendervorgang fertiggestellt wurde:
EventHandler OnFinishedFullRender
Wird aufgerufen, bevor Reflection Probes gerendert werden:
EventHandler OnPreReflectionProbeRender
Wird aufgerufen, nachdem Reflection Probes gerendert wurden:
EventHandler OnFinishedReflectionProbes








