Benutzerhandbuch

From Bakery GPU Lightmapper: Wiki
Jump to navigation Jump to search
Bulbgraph.png Dieses Benutzerhandbuch wurde aus dem Englischen ins Deutsche übersetzt. Es kann unter Umständen veraltete Informationen enthalten, da Bakery stetig weiterentwickelt wird. Für eine aktuellere Version, lesen Sie bitte die englische Originalfassung.

(Translation by Mauri)

Contents

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.
Bulbgraph.png Die Systemanforderungen gelten nur für die Entwicklerumgebung, nicht für die anvisierte(n) Zielplattform(en). Mit Bakery gebackene Lightmaps können überall verwendet werden.

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:

Goahead.png

In diesem Fall können Sie einfach auf "Go Ahead" klicken.

Sie sollten jetzt den Menüeintrag von Bakery am oberen Bildschirmrand sehen:

Bmenu.jpg


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.


Staticmarked.jpg


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.

Bulbgraph.png Bakery und Unity nutzen jeweils separate Lichtquellen-Komponenten.


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.

Matching.jpg

Bulbgraph.png Die Direct Light-Komponente könnte eine Warnung anzeigen, dass das Projekt keine lineare Lichtintensität verwendet. Das Problem besteht darin, dass Unity standardmäßig die Gammakorrektur auf die Farben der Lichtquellen falsch anwendet. Der richtige Modus kann per Skript aktiviert werden, was mithilfe der Schaltfläche “Fix” geschiet. Wenn Sie bereits viele Lichtquellen im nicht-linearen Intensitätsmodus eingerichtet haben und diese nicht erneut ändern möchten, können Sie die Korrektur überspringen. Die Änderungen, die durch den “Fix” verursacht wurden, können jederzeit wieder rückgängig gemacht werden.


4. Um eine Umgebungsbeleuchtung mit Schatten zu erzielen, müssen Sie zuerst ein Skylight erstellen (Bakery->Create->Skylight).

Menusky.jpg


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.

Bulbgraph.png Das Anpassen der Skybox an das Bakery Skylight ist optional, aber für die Korrektheit sinnvoll. Damit wird sichergestellt, dass die sichtbare Umgebung und die Reflection Probes in der Engine mit der gebackenen Beleuchtung übereinstimmen. Derzeit funktioniert diese Einstellung nur in der Built-In Render Pipeline von Unity.


Skycomp.jpg


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.

Bakerywindow.jpg

Bulbgraph.png Bakery könnte sich darüber beschweren, dass Sie den veralteten Gamma-Modus verwenden, und Ihnen empfehlen, diesen zu ändern. Wenn Ihnen die Qualität der Beleuchtung wichtig ist, wird die Verwendung des linearen Modus dringend empfohlen. Sie können diese Warnung ignorieren, falls Sie bereits ein großes Projekt mit Gamma-Modus eingerichtet haben und es nicht nachträglich ändern möchten oder wenn Sie für mobile Endgeräte entwickeln, die den linearen Modus nicht unterstützen.

7. Klicken Sie auf die Schaltfläche Render.

8. Fertig! Sie sollten nun gebackene Beleuchtung sehen:

Bakedgi.jpg

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.

Bulbgraph.png Bei Unity Versionen vor 2017.3 müssen Sie, wenn Sie sowohl Unity- als auch Bakery-Komponenten auf demselben GameObject haben, die Unity-Komponente manuell deaktivieren, um eine doppelte Helligkeit zu vermeiden. In neueren Versionen von Unity werden Echtzeit-Lichteffekte für gebackene Lichter automatisch deaktiviert, so wie es auch bei den integrierten Lightmappern der Fall ist.
Indirect
Vergleich der verschiedenen Render-Modi, die von Unity unterstützt werden

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.

Indirectonly.jpg

Shadowmask
Links: vollständig gebackenes Licht. Mitte: dynamisches Licht mit gebackener Beleuchtung. Rechts: der Schatten der Capsule sowie die Unebenheiten (bump) und Spiegelungen (specular) von Oberflächen sind dynamisch, während der Schatten des Cube und die Beleuchtung gebacken sind.
Wenn die Kamera weit genug entfernt ist oder dynamische Schatten deaktiviert sind, sieht dieselbe Szene wie folgt aus

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.

Mehr Informationen

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.

Smask22.jpg

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.

Bulbgraph.png Das Kontrollkästchen ist in Unity 5.6.x aufgrund fehlender Skript-API nicht sichtbar. Stattdessen können Sie die Einstellung unter Window->Lighting->Mixed Lighting->Lighting Mode ändern.
Bulbgraph.png In Versionen von Unity < 2017.3 werden aufgrund von API-Einschränkungen beim Rendern von Shadowmask-Lightmaps in der Szene platzierte Light Probes zurückgesetzt. Diese müssen nach dem Backvorgang erneut berechnet werden. In neueren Versionen sollte dies nicht mehr vorkommen.
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

Vergleich verschiedener Richtungsmodi

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
Größen/Qualitätsvergleich von Dominant Direction, SH und 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

1 vs 10 Texels pro Welteinheit

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.

Bulbgraph.png Objekte, bei denen Scale in Lightmap auf 0 gesetzt ist, werden nicht gebacken, werfen jedoch weiterhin Schatten und beeinflussen GI.

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

Beachten Sie, wie mehr Reflexionen zu mehr Licht in geschlossenen Räume führen.

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

Links: samples = 4, rechts: samples = 16. Zur Veranschaulichung wurde die Rauschunterdrückung (Denoising) deaktiviert.

Beeinflusst die Qualität von GI. Typische Werte liegen zwischen 16 und 32.

Bulbgraph.png Es ist möglich, eine beliebige Zahl einzugeben, die über dem maximalen Schiebereglerwert liegt. Beachten Sie jedoch, dass diese Zahl die Quadratwurzel der endgültigen Strahlanzahl darstellt - d. h. 32 entspricht 1024 Strahlen, 64 entspricht 4096 Strahlen usw.

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

Links: Denoising deaktiviert, rechts: Denoising aktiviert.

Wenn aktiviert, wird der Entrauschungsalgorithmus angewendet. Bakery verwendet NVIDIA’s AI-Denoiser (OptiX) oder Intel's Open Image Denoise (falls ausgewählt).


Fix Seams

Left: Übergänge, right: Übergänge sind geglättet.

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

Lochfüllung aus vs. ein.

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

Checker preview in Aktion

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.

Bulbgraph.png Checker preview zeigt derzeit keine korrekten Texel-Größen für Terrains an.

Atlas preview

Atlas preview in Aktion

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

Backface GI
Links: backface GI = 0, rechts: backface GI = 1. Beachten Sie, wie schattige Bereiche mehr grünes Licht erhalten.

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

Left: AO intensity = 0. Right: AO intensity = 1.

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.

Bulbgraph.png Terrain Optimization ist derzeit nicht mit Terrainlöchern kompatibel. Deaktivieren Sie die Einstellung, damit sie funktionieren.
Bulbgraph.png Terrain Optimization wird nur im Nicht-RTX-Modus unterstützt.

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.


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

Links: Nach der Rauschunterdrückung ist ein heller Rand sichtbar; Rechts: behoben.

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.
Transparenter Selbstschatten AUS vs. EIN: Beachten Sie, wie einige einseitige, aber nach hinten gerichtete Polygone nun korrekt beleuchtet werden

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.

Bulbgraph.png Beachten Sie, dass Shadowmasks von Prefabs aufgrund von API-Einschränkungen nur mit Unity 2017.4 oder neuer funktionieren.

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.
Anwenden des Prefabs

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.
Bulbgraph.png Lightmaps werden entweder nach der Szene, in der sie gebacken wurden, oder nach der Lightmap Group (falls vorhanden) benannt. Wenn Sie also verschiedene Prefabs in derselben Szene backen, stellen Sie bitte sicher, dass Sie entweder eine anders benannte Lightmap Group verwenden oder den Output Path ändern.
Bulbgraph.png Beim nacheinander Backen von mehreren Prefabs mit identischen Modellen wird empfohlen, die Einstellung Asset UV Processing auf Don't Change zu belassen, um eine Veränderung gemeinsam genutzter UVs zu verhindern.
Bulbgraph.png Bakery's Prefab-Workflow wurde implementiert, bevor Unity über die Ansichtsfunktion "Doppelklick auf Prefab" verfügte. Daher werden Lightmaps in der isolierten Prefab-Ansicht möglicherweise nicht korrekt angewendet und die Komponente zeigt möglicherweise die Meldung "This GameObject is not a prefab" an. Es sollte wie erwartet funktionieren, wenn Sie in einer normalen Szene arbeiten.
Bulbgraph.png Wenn Sie zuvor gebackene Prefabs entpacken und von vorhandenen Lightmaps trennen, sollten Sie sicherstellen, dass das BakeryPrefabLightmapData-Objekt, welches die Prefab-weiten Lightmap-/Renderer-Verbindungen enthält, entfernt wurde.

Bakery Direct Light

Reines direktes Licht mit GI
Links: shadow spread = 0.01, rechts: 0.05. Beachten Sie, wie Schatten zunächst scharf sind und mit zunehmender Entfernung allmählich verschwimmen.

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.
Bulbgraph.png Physikalisch gesehen ist Bakery's "Intensity" für gerichtete Lichtquellen Lux geteilt durch Pi.

Bakery Sky Light

Reines Himmelslicht mit GI

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.
Bulbgraph.png Durch Drehen des GameObject wird die Beleuchtung aus der Cubemap entsprechend mitgedreht.
  • 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

Links: Samples Near = 0, Samples Far = 4096.
Mitte: Samples Near = 0, Samples Far = 128.
Rechts: Samples Near = 16, Samples Far = 128.
Beachten Sie, wie ähnlich das Erscheinungsbild der Beleuchtung ist, obwohl weniger kombinierte Samples verwendet werden.

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.

Bulbgraph.png
  • Light Meshes erhalten keine eigene Beleuchtung und werden auch nicht ge-lightmapped.
  • Ein Light Mesh mit vielen Polygonen kann schneller gebacken werden als viele einfache Light Meshes.
  • Versuchen Sie, den Wert von Samples Near auf 0 zu setzen, falls Sie unscharfe/verrauschte Ergebnisse erhalten. Dann wird nur der Virtual Point Lights-Algorithmus angewendet. Dieser ist auch nützlich bei der Nutzung sehr einfacher Lichter, wo Präzision nicht so wichtig ist (z. B. Fensterlichter an Gebäuden).
Ein gebogenes Light Mesh
  • 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

Links: Shadow Spread = 0.5, rechts: Shadow Spread = 1.

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.

Bulbgraph.png Spotlichter sind lediglich Punktlichter mit einer zusätzlichen Projektionsmaske.
  • 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.
Von links nach rechts: Omni, Cookie (default spot texture), Cubemap, IES.
  • 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.
Bulbgraph.png Physikalisch gesehen ist Bakery's "Intensity" für Punktlichter (Candela/Pi).

Bakery Volume

Eine bewegliche Schranktür wird durch ein Bakery Volume beleuchtet (GIF von NOTLonely)


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

Volume Gizmo

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:

SetMatrix("_VolumeMatrix", volume.GetMatrix())

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

Buntglas, wie es durch Bakery Real-Time Preview gesehen wird. Die gleichen Ergebnisse werden vom Bakery lightmapper gebacken.

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.


Bakery Shared LOD UV

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

Materialparameter in Cutout umgewandelt (Standard)
Halbtransparente Werte, die über die Option Dither Transparency hinzugefügt wurden
Auf rote Flächen angewendete Light Filter-Komponenten, die farbige Schatten erzeugen

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:
[HideInInspector] BAKERY_META_ALPHA_ENABLE ("Enable Bakery alpha meta pass", Float) = 1.0
  • 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

Erweiterte Lightmap-Parameter

Ä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

Links: standard bilineare Filterung. Rechts: bikubische Filterung.
Links: beide Schatten sind gebacken.
Mitte: der sphärische Schatten ist dynamisch, während der andere Schatten statisch ist. Zusammen wurden sie mit Multiplikation kombiniert.
Rechts: wie in der Mitte, jedoch kombiniert mit dem Standard-Minimum.

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:

Bulbgraph.png Möglicherweise müssen Sie den Unity Editor als Administrator ausführen, damit das patchen von CGIncludes funktioniert.
  • 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:

Bulbgraph.png Alle “Allow”-Umschaltflächen aktivieren einen bestimmten Code-Pfad im Shader. Aus Leistungsgründen wird empfohlen, in einem Material nur eine “Allow”-Option zu aktivieren.
  • 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.
Standard SH Light Probe vs. non-linear
SH Spiegelungseffekte
  • 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
Bulbgraph.png Mit Ausnahme von regulären color lightmaps erfordern alle anderen Optionen mindestens Shader Model 3.0.
Bulbgraph.png Vertex Lightmaps im SH-Modus erfordern aufgrund der Interpolatorbegrenzung mindestens Shader Model 4.0.
Bulbgraph.png Aktualisierte URP-Graphen mit Unterstützung für Spiegelungen (Specular) aus Dominant Direction können von der Haupt-Wiki-Seite heruntergeladen werden.


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