Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Verwenden der Lightmap-Global Illumination

Gebackene Lightmaps sind ein Workflow zum Hinzufügen indirekter (oder vollständig gebackener) Beleuchtung zu einer Szene. Im Gegensatz zu den Ansätzen VoxelGI und SDFGI funktionieren gebackene Lightmaps gut auf Low-End-PCs und mobilen Geräten, da sie zur Laufzeit fast keine Ressourcen verbrauchen. Im Gegensatz zu VoxelGI und SDFGI können gebackene Lightmaps optional auch zur Speicherung von direkter Beleuchtung verwendet werden, was zu einer weiteren Steigerung der Performance führt.

Im Gegensatz zu VoxelGI und SDFGI sind gebackene Lightmaps völlig statisch. Einmal gebacken, können sie nicht mehr verändert werden. Sie versehen die Szene auch nicht mit Reflexionen, so dass die Verwendung von Reflection-Probes zusammen mit ihr für Innenräume (oder die Verwendung eines Sky für Außenbereiche) eine Voraussetzung für gute Qualität ist.

Da sie gebacken werden, haben sie weniger Probleme mit Light Bleeding als VoxelGI und SDFGI, und indirektes Licht sieht oft besser aus. Der Nachteil ist, dass das Backen von Lightmaps im Vergleich zum Backen von VoxelGI länger dauert. Während das Backen von VoxelGI in wenigen Sekunden erledigt ist, kann das Backen von Lightmaps mehrere Minuten, wenn nicht sogar länger dauern. Dies kann die Iterationsgeschwindigkeit erheblich verlangsamen, weshalb empfohlen wird, Lightmaps nur dann zu backen, wenn Sie tatsächlich Änderungen in der Beleuchtung sehen müssen. Seit Godot 4.0 werden Lightmaps auf dem Grafikprozessor gebacken, was das Backen von Lightmaps beschleunigt, wenn Sie einen dedizierten Mittelklasse- oder High-End-Grafikprozessor haben.

Das Backen von Lightmaps reserviert auch den UV2-Slot von gebackenen Materialien, was bedeutet, dass Sie ihn nicht mehr für andere Zwecke in Materialien verwenden können (entweder im eingebauten Standardmaterial 3D und ORM-Material 3D oder in eigenen Shadern).

Trotz ihrer mangelnden Flexibilität bieten gebackene Lightmaps in der Regel gleichzeitig die beste Qualität und Performance in (meist) statischen Szenen. Deshalb sind Lightmaps in der Spieleentwicklung immer noch beliebt, obwohl sie die älteste Technik für Global Illumination in Videospielen sind.

Siehe auch

Sie sind nicht sicher, ob LightmapGI für Ihre Bedürfnisse geeignet ist? Siehe Welche Global Illumination-Technik sollte ich verwenden? für einen Vergleich der in Godot 4 verfügbaren GI-Techniken.

Visueller Vergleich

LightmapGI deaktiviert.

LightmapGI deaktiviert.

LightmapGI aktiviert (nur mit indirektem Licht gebacken).

LightmapGI aktiviert (nur mit indirektem Licht gebacken). Direktes Licht ist immer noch in Echtzeit, was subtile Änderungen während des Spielens ermöglicht.

LightmapGI aktiviert (mit direktem und indirektem Licht gebacken).

LightmapGI aktiviert (mit direktem und indirektem Licht gebacken). Beste Performance, aber schlechtere Bildqualität. Beachten Sie den unschärferen Sonnenschatten in der oberen rechten Ecke.

Visueller Vergleich

Hier sind einige Vergleiche, wie LightmapGI vs. VoxelGI aussehen. Beachten Sie, dass Lightmaps genauer sind, aber auch unter der Tatsache leiden, dass die Beleuchtung auf einer nicht gewrappten Textur erfolgt, so dass die Übergänge und die Auflösung möglicherweise nicht so gut sind. VoxelGI sieht weniger genau aus (da es sich um eine Annäherung handelt), ist aber insgesamt glatter.

../../../_images/lightmap_gi_comparison.png

Außerdem ist SDFGI im Vergleich zu LightmapGI weniger genau. Allerdings kann SDFGI große offene Welten unterstützen, ohne dass Backen erforderlich ist.

Einrichtung

Bevor der Lightmapper irgendetwas tun kann, benötigen die zu backenden Objekte zunächst eine UV2-Ebene und eine Texturgröße. Eine UV2-Ebene ist ein Satz sekundärer Texturkoordinaten, die sicherstellen, dass jede Fläche des Objekts ihren eigenen Platz in der UV-Map hat. Die Flächen dürfen sich keine Pixel in der Textur teilen.

Es gibt mehrere Möglichkeiten, um sicherzustellen, dass Ihr Objekt eine eindeutige UV2-Ebene und Texturgröße hat:

Aus Godot heraus entpacken

Warnung

Wenn dieser Vorgang des Mesh-Menüs auf eine importierte 3D-Szene angewendet wird, geht die erzeugte UV2 verloren, wenn die Szene neu geladen wird.

Godot verfügt über eine Option zum Entpacken von Meshes und zur Visualisierung der UV-Kanäle. Nach der Auswahl eines MeshInstance3D-Nodes kann dieser im Mesh-Menü oben im 3D-Editor gefunden werden:

../../../_images/lightmap_gi_mesh_menu.png

Dadurch wird ein zweiter Satz von UV2-Koordinaten erzeugt, die zum Backen verwendet werden können. Es wird auch die Texturgröße automatisch eingestellt.

Entpacken aus Ihrer 3D-Modellierungssoftware

Die letzte Möglichkeit besteht darin, dies von Ihrer bevorzugten 3D-Anwendung aus zu tun. Dieser Ansatz wird im Allgemeinen nicht empfohlen, aber er wird erklärt, damit Sie wissen, dass es ihn gibt. Der Hauptvorteil besteht darin, dass bei komplexen Objekten, die Sie möglicherweise häufig wieder importieren möchten, der Prozess der Texturerzeugung in Godot recht kostspielig sein kann, so dass es schneller sein kann, sie vor dem Import zu entpacken.

Führen Sie einfach einen Entpackvorgang für die zweite UV2-Ebene durch.

../../../_images/lightmap_gi_blender.png

Dann importieren Sie die 3D-Szene ganz normal. Denken Sie daran, dass Sie nach dem Import die Texturgröße auf dem Mesh einstellen müssen.

../../../_images/lightmap_gi_lmsize.png

Wenn Sie beim Import externe Meshes verwenden, wird die Größe beibehalten. Beachten Sie, dass die meisten Unwrapper in 3D-Modellierungssoftware nicht qualitätsorientiert sind, da sie schnell arbeiten sollen. Meistens müssen Sie Nähte oder andere Techniken verwenden, um ein besseres Unwrapping zu erreichen.

Erzeugen von UV2 für primitive Meshes

Bemerkung

Diese Option ist nur für primitive Netze wie BoxMesh, CylinderMesh, PlaneMesh, etc. verfügbar.

Wenn Sie UV2 für primitive Meshes aktivieren, können Sie dafür sorgen, dass sie gebackene Beleuchtung erhalten und zu dieser beitragen. Dies kann in bestimmten Beleuchtungs-Setups verwendet werden. Sie können zum Beispiel einen Torus ausblenden, der nach dem Backen von Lichtkarten ein emittierendes Material hat, um ein Flächenlicht zu erzeugen, das der Form eines Torus folgt.

Standardmäßig wird bei primitiven Meshes kein UV2 erzeugt, um Ressourcen zu sparen (da diese Meshes während des Spiels erstellt werden können). Sie können ein primitives Mesh im Inspektor bearbeiten und UV2 hinzufügen aktivieren, damit die Engine prozedural UV2 für ein primitives Mesh generiert. Der Standardwert UV2-Padding ist so eingestellt, dass ein Bleeding der Lightmaps weitestgehend vermieden wird, ohne zu viel Platz an den Rändern zu verschwenden. Wenn Sie Lightmap-Bleeding nur bei einem bestimmten primitiven Mesh bemerken, müssen Sie möglicherweise UV2-Padding erhöhen.

Lightmap-Größenhinweis stellt die Größe dar, die ein einzelnes Mesh auf der Lightmap-Textur einnimmt. Sie variiert je nach den Eigenschaften der Mesh-Größe und dem Wert UV2-Padding. Lightmap-Größenhinweis sollte nicht manuell geändert werden, da alle Änderungen verloren gehen, wenn die Szene neu geladen wird.

UV2 überprüfen

In dem bereits erwähnten Mesh-Menü können die UV2-Texturkoordinaten angezeigt werden. Wenn etwas nicht funktioniert, überprüfen Sie, ob die Meshes diese UV2-Koordinaten haben:

../../../_images/lightmap_gi_uvchannel.png

Die Szene einrichten

Bevor etwas getan wird, muss ein LightmapGI-Node zu einer Szene hinzugefügt werden. Dadurch wird das Backen von Licht auf allen Nodes (und Unter-Nodes) in dieser Szene aktiviert, auch in instanzierten Szenen.

../../../_images/lightmap_gi_scene.png

Eine Unter-Szene kann mehrfach instanziiert werden, da dies vom Back-Algorithmus unterstützt wird. Jeder Instanz wird eine eigene Lightmap zugewiesen. Um Probleme mit inkonsistenter Texel-Skalierung der Lightmap zu vermeiden, sollten Sie die zuvor erwähnte Regel zur Mesh-Skalierung beachten.

Meshes einrichten

Damit ein MeshInstance3D Node am Back-Prozess teilnehmen kann, muss sein Back-Modus auf Static eingestellt sein. Meshes, deren Back-Modus auf Deaktiviert oder Dynamisch eingestellt ist, werden vom Lightmapper ignoriert.

../../../_images/lightmap_gi_use.png

Wenn beim Szenenimport automatisch Lightmaps generiert werden, wird dies automatisch aktiviert.

Lichtquellen einrichten

Lichtquellen werden standardmäßig mit indirektem Licht gebacken. Dies bedeutet, dass Shadow Maps und Beleuchtung immer noch dynamisch sind und sich auf sich bewegende Objekte auswirken, Licht-Abprälle dieses Lichts werden aber gebacken.

Lichtquellen können deaktiviert (kein Backen) oder vollständig gebacken werden (direkt und indirekt). Dies kann über das Menü Back-Modus in den Lichtquellen gesteuert werden:

../../../_images/lightmap_gi_bake_mode.png

Die Modi sind:

Deaktiviert

Die Lichtquelle wird beim Backen von Lightmaps ignoriert. Dies ist der richtige Modus für dynamische Lichteffekte wie Explosionen und Waffeneffekte.

Warnung

Das Ausblenden einer Lichtquelle hat keinen Einfluss auf das Backen der Lightmap. Das bedeutet, dass Sie den Back-Modus "Deaktiviert" verwenden müssen, anstatt den Licht-Node durch Deaktivieren seiner Sichtbar-Property zu verstecken.

Dynamisch

Dies ist der Default-Modus, der einen Kompromiss zwischen Performance und Echtzeitfreundlichkeit darstellt. Es wird nur die indirekte Beleuchtung gebacken. Direktes Licht und Schatten sind immer noch in Echtzeit, wie sie es auch ohne LightmapGI wären.

Mit diesem Modus lassen sich subtile Änderungen an Farbe, Energie und Position einer Lichtquelle vornehmen, ohne dass die Darstellung leidet. Sie können damit zum Beispiel flackernde statische Fackeln erstellen, deren indirektes Licht gebacken wird.

Statisch

Sowohl indirekte als auch direkte Beleuchtung wird gebacken. Da statische Oberflächen Beleuchtungs- und Schattenberechnungen vollständig überspringen können, bietet dieser Modus die beste Performance und gleichmäßige Schatten, die nicht in der Entfernung verblassen. Die Echtzeit-Beleuchtung wirkt sich nicht mehr auf gebackene Oberflächen aus, aber sie wirkt immer noch auf dynamische Objekte. Wenn Sie den Back-Modus Alle für eine Lichtquelle verwenden, können dynamische Objekte keine Echtzeitschatten auf gebackene Flächen werfen, so dass Sie stattdessen einen anderen Ansatz wie Blob-Schatten verwenden müssen. Blob-Schatten können mit einem Decal-Node implementiert werden.

Die Lichtquelle ist während des Spiels nicht anpassbar. Das Bewegen der Lichtquelle oder das Ändern ihrer Farbe (oder Energie) hat keine Auswirkungen auf statische Oberflächen.

Da die Back-Modi für jede einzelne Lichtquelle eingestellt werden können, ist es möglich, hybrid gebackene Licht-Setups zu erstellen. Eine beliebte Option ist die Verwendung eines Echtzeit-DirectionalLights, dessen Back-Modus auf Dynamisch eingestellt ist, und die Verwendung des Back-Modus Statisch für OmniLights und SpotLights. Dies bietet eine gute Performance und ermöglicht gleichzeitig, dass dynamische Objekte in Außenbereichen Echtzeitschatten werfen.

Vollständig gebackene Lichter können auch die Propertys Größe (Omni/Spot) oder Winkelabstand (gerichtet) der Nodes nutzen. Dies ermöglicht Schatten mit realistischem Halbschatten, der mit zunehmender Entfernung zwischen dem Schattenwerfer und dem Schatten an Größe zunimmt. Dies hat auch geringere Performance-Kosten im Vergleich zu PCSS-Echtzeitschatten, da nur für dynamische Objekte Echtzeitschatten gerendert werden.

../../../_images/lightmap_gi_omnilight_size.png

Backen

Um den Backvorgang zu starten, klicken Sie auf den Lightmaps backen-Buton oben im 3D-Editor, wenn Sie den LightmapGI-Node auswählen:

../../../_images/lightmap_gi_bake.png

Dies kann je nach Szenengröße, Back-Methode und gewählter Qualität zwischen Sekunden und Minuten (oder Stunden) dauern.

Warnung

Das Backen von Lightmaps ist ein Prozess, der eine Menge Videospeicher benötigen kann, insbesondere wenn die resultierende Textur groß ist. Aufgrund interner Beschränkungen kann die Engine auch abstürzen, wenn die generierte Texturgröße zu groß ist (selbst auf Systemen mit viel Videospeicher).

Um Abstürze zu vermeiden, vergewissern Sie sich, dass die Texelgröße der Lichtkarte im Import-Dock auf einen ausreichend hohen Wert eingestellt ist.

Optimierungen

  • Qualität: Es stehen vier Backqualitätsmodi zur Verfügung: Niedrig, Mittel, Hoch und Ultra. Eine höhere Qualität erfordert mehr Zeit, führt aber zu einer besser aussehenden Lightmap mit weniger Rauschen. Der Unterschied macht sich besonders bei emittierenden Materialien oder Bereichen bemerkbar, die wenig oder gar nicht direkt beleuchtet werden. Jeder Modus für die Backqualität kann in den Projekteinstellungen weiter angepasst werden.

  • Abprälle: Die Anzahl der Abprälle, die für die indirekte Beleuchtung verwendet werden. Der Standardwert (3) ist ein guter Kompromiss zwischen Backzeit und Qualität. Höhere Werte sorgen dafür, dass das Licht öfter abprallt, bevor es aufhört. Dadurch wirkt die indirekte Beleuchtung weicher (aber je nach Material und Geometrie möglicherweise auch heller).

  • Indirekte Energie abprallen: Der globale Multiplikator, der beim Backen der indirekten Energie der Lichter verwendet wird. Dieser Wert multipliziert den eigenen Indirekten Energie-Wert jedes Lichts. Werte, die von 1.0 abweichen, sind physikalisch nicht genau, können aber für künstlerische Effekte verwendet werden.

  • Direktional: Wenn diese Option aktiviert ist, werden Richtungsinformationen für Lightmaps gespeichert. Dies verbessert das Erscheinungsbild von Normal-Mapping-Materialien für gebackene Oberflächen, insbesondere bei vollständig gebackenen Lichtquellen (da sie auch direktes Licht gebacken haben). Der Nachteil ist, dass direktionale Lightmaps etwas teurer zu rendern sind. Sie benötigen auch mehr Zeit zum Backen und führen zu einer größeren Dateigröße.

  • Innenbereich: Wenn diese Option aktiviert ist, wird die Umgebungsbeleuchtung nicht verwendet. Verwenden Sie dies für reine Innenraumszenen, um Lichtlecks zu vermeiden.

  • Textur für Abprälle verwenden: Wenn diese Option aktiviert ist, wird eine Textur mit den Beleuchtungsinformationen generiert, um die Generierung der indirekten Beleuchtung zu Lasten der Genauigkeit zu beschleunigen. Die Geometrie kann zusätzliche Lichtleck-Artefakte aufweisen, wenn Lightmaps mit niedriger Auflösung oder UVs verwendet werden, die Lightmaps deutlich über Oberflächen strecken. Lassen Sie diese Option aktiviert, wenn Sie unsicher sind.

  • Rauschunterdrückung verwenden: Wenn diese Option aktiviert ist, wird ein Rauschunterdrückungsalgorithmus verwendet, um das Rauschen der Lightmap deutlich zu reduzieren. Dies erhöht die Backzeiten und kann gelegentlich Artefakte verursachen, aber das Ergebnis ist es oft wert. Siehe Rauschunterdrückung für weitere Informationen.

  • Stärke der Rauschunterdrückung: Die Stärke der Rauschunterdrückung, die auf die erzeugten Lightmaps angewendet wird. Höhere Werte sind effektiver bei der Entfernung von Rauschen, können aber die Schattendetails für statische Schatten reduzieren. Nur wirksam, wenn die Rauschunterdrückung aktiviert ist und die Rauschunterdrückungsmethode JNLM ist (OIDN hat keine Einstellung für die Stärke der Rauschunterdrückung).

  • Bias: Der Offset-Wert, der für Schatten in 3D-Einheiten verwendet wird. Im Allgemeinen müssen Sie diesen Wert nicht ändern, es sei denn, Sie haben nach dem Backen Probleme mit Light Bleeding oder dunklen Flecken in Ihrer Lightmap. Diese Einstellung wirkt sich nicht auf Echtzeitschatten aus, die auf gebackene Oberflächen geworfen werden (für Lichtquellen mit dem Back-Modus Dynamisch).

  • Max Texturgröße: Die maximale Texturgröße für den generierten Textur-Atlas. Höhere Werte führen dazu, dass weniger Slices generiert werden, aber es kann sein, dass sie aufgrund von Hardwarebeschränkungen für Texturgrößen nicht auf jeder Hardware funktionieren. Belassen Sie dies auf dem Default-Wert von 16384, wenn Sie unsicher sind.

  • Environment > Modus: Legt fest, wie die Umgebungsbeleuchtung beim Backen von Lightmaps erzeugt wird. Der Default-Wert Szene eignet sich für Level mit sichtbaren Außenarealen. Für reine Innenraumszenen setzen Sie diesen Wert auf Disabled, um Lichtlecks zu vermeiden und das Backen zu beschleunigen. Dieser Wert kann auch auf Benutzerdefinierter Himmel oder Benutzerdefinierte Farbe gesetzt werden, um eine Umgebungsbeleuchtung zu verwenden, die sich vom tatsächlichen Umgebungshimmel der Szene unterscheidet.

  • Gen.-Probes > Unterteilung: Siehe Dynamische Objekte.

  • Daten > Lichtdaten: Siehe Lightmap-Daten.

Backzeiten und Qualität in Einklang bringen

Da das Backen in hoher Qualität sehr lange dauern kann (bis zu Dutzenden von Minuten bei großen, komplexen Szenen), empfiehlt es sich, zunächst niedrigere Qualitätseinstellungen zu verwenden. Sobald Sie mit dem Beleuchtungs-Setup Ihrer Szene zufrieden sind, erhöhen Sie die Qualitätseinstellungen und führen einen "finalen" Backvorgang durch, bevor Sie Ihr Projekt exportieren.

Das Verringern der Lightmap-Auflösung durch Erhöhen der Lightmap-Texel-Größe in den importierten 3D-Szenen wird das Backen ebenfalls erheblich beschleunigen. Dies erfordert jedoch, dass Sie alle mit Lichtkarten versehenen 3D-Szenen erneut importieren, bevor Sie erneut Lichtkarten backen können.

Rauschunterdrückung

Da das Backen von Lightmaps auf Raytracing beruht, wird in der "rohen" gebackenen Lightmap immer sichtbares Rauschen vorhanden sein. Das Rauschen ist vor allem in Bereichen sichtbar, die nur schwer von gebündeltem Licht erreicht werden können, z.B. in Innenräumen mit kleinen Öffnungen, durch die das Sonnenlicht eindringen kann. Das Rauschen kann durch Erhöhen der Backqualität reduziert werden, allerdings verlängert sich dadurch die Backzeit erheblich.

Vergleich zwischen deaktivierter und aktivierter Rauschunterdrückung

Vergleich zwischen deaktivierter und aktivierter Rauschunterdrückung (mit dem Default-JNLM-Denoiser).

Um das Rauschen zu verringern, ohne die Backzeiten zu sehr zu verlängern, kann ein Denoiser verwendet werden. Ein Denoiser ist ein Algorithmus, der auf der endgültigen gebackenen Lightmap läuft, Rauschmuster erkennt und sie abschwächt, während er versucht, die Details bestmöglich zu erhalten. Godot bietet zwei Rauschunterdrückungsalgorithmen:

JNLM (Non-Local Means mit Joint Filtering)

JNLM ist die Default-Rauschunterdrückungsmethode und ist in Godot enthalten. Sie verwendet einen einfachen, aber effizienten Rauschunterdrückungsalgorithmus, der als non-local means bekannt ist. JNLM wird auf der GPU unter Verwendung eines Compute-Shaders ausgeführt und ist mit jeder GPU kompatibel, die mit den Vulkan-basierten Rendering-Methoden von Godot 4 umgehen kann. Es ist keine zusätzliche Einrichtung erforderlich.

Die Rauschunterdrückung von JNLM kann mit der Property Rauschunterdrückungs-Stärke angepasst werden, die sichtbar ist, wenn Rauschunterdrückung verwenden aktiviert ist. Höhere Werte können bei der Entfernung von Rauschen effektiver sein, allerdings auf Kosten der Unterdrückung von Schattendetails bei statischen Schatten.

Vergleich verschiedener Werte der Rauschunterdrückungs-Stärke bei JNLM

Vergleich verschiedener Werte der Rauschunterdrückungs-Stärke für JNLM. Höhere Werte können Details reduzieren.

OIDN (Open Image Denoise)

Im Gegensatz zu JNLM verwendet OIDN einen Ansatz des maschinellen Lernens zur Rauschunterdrückung von Lightmaps. Es verfügt über ein speziell trainiertes Modell zur Entfernung von Rauschen aus Lightmaps, wobei im Vergleich zu JNLM in den meisten Szenen mehr Schattendetails erhalten bleiben.

OIDN kann auf der GPU ausgeführt werden, wenn die Hardware-Beschleunigung konfiguriert ist. Mit einem modernen High-End-Grafikprozessor kann dies einen Geschwindigkeitszuwachs von mehr als dem 50-fachen der CPU-basierten Rauschunterdrückung ermöglichen:

  • Auf AMD-GPUs muss HIP installiert und konfiguriert werden.

  • Auf NVIDIA-GPUs muss CUDA installiert und konfiguriert werden. Dies kann automatisch durch das NVIDIA-Installationsprogramm erfolgen, aber unter Linux werden die CUDA-Bibliotheken möglicherweise nicht standardmäßig installiert. Vergewissern Sie sich, dass die CUDA-Pakete aus Ihrer Linux-Distribution installiert sind.

  • Auf Intel-GPUs muss SYCL installiert und konfiguriert werden.

Wenn keine Hardware-Beschleunigung verfügbar ist, greift OIDN auf die CPU-basierte Rauschunterdrückung mit Multithreading zurück. Um zu überprüfen, ob die GPU-basierte Rauschunterdrückung funktioniert, verwenden Sie einen GPU-Auslastungsmonitor, während Sie Lightmaps backen, und beobachten Sie die prozentuale GPU-Auslastung und die VRAM-Auslastung, während der Rauschunterdrückungsschritt im Godot-Editor angezeigt wird. Das Kommandozeilen-Tool nvidia-smi kann hierfür nützlich sein.

OIDN ist aufgrund seiner relativ großen Downloadgröße nicht im Lieferumfang von Godot enthalten. Sie können vorkompilierte OIDN-Binärpakete von der Website herunterladen. Entpacken Sie das Paket an einen Ort auf Ihrem PC und geben Sie dann den Pfad zur ausführbaren Datei oidnDenoise in den Editoreinstellungen an (Dateisystem > Tools > Oidn> Pfad Oidn Rauschunterdrückung). Diese ausführbare Datei befindet sich im Ordner bin des entpackten Binärpakets.

Nachdem Sie den Pfad zur ausführbaren OIDN-Rauschunterdrückung angegeben haben, ändern Sie die Rauschunterdrückungsmethode in den Projekteinstellungen, indem Sie Rendern > Lightmapping > Rauschunterdrückung auf OIDN setzen. Dies wirkt sich auf alle Lightmap-Backvorgänge in diesem Projekt aus, nachdem die Einstellung geändert wurde.

Bemerkung

Die Methode der Rauschunterdrückung wird in den Projekteinstellungen und nicht in den Editoreinstellungen konfiguriert. Auf diese Weise wird sichergestellt, dass verschiedene Teammitglieder, die an demselben Projekt arbeiten, dieselbe Rauschunterdrückungsmethode verwenden, um konsistente Ergebnisse zu erzielen.

Vergleich zwischen JNLM- und OIDN-Rauschunterdrückung

Vergleich zwischen den JNLM und OIDN-Denoisern. Beachten Sie, dass OIDN Details besser bewahrt und Nahtstellen zwischen verschiedenen Objekten reduziert.

Dynamische Objekte

Im Gegensatz zu VoxelGI und SDFGI erhalten dynamische Objekte eine andere indirekte Beleuchtung als statische Objekte. Dies liegt daran, dass Lightmapping nur bei statischen Objekten durchgeführt wird.

Um indirekte Beleuchtung auf dynamischen Objekten darzustellen, wird ein 3D-Probe-System verwendet, bei dem die Light-Probes über die gesamte Szene verteilt sind. Beim Backen von Lightmaps berechnet der Lightmapper die Menge des indirekten Lichts, das von der Probe empfangen wird. Direktes Licht wird nicht in Light-Probes gespeichert, auch nicht für Lichter, deren Backmodus auf Statisch eingestellt ist (da dynamische Objekte weiterhin in Echtzeit beleuchtet werden).

Es gibt 2 Möglichkeiten, Light-Probes zu einer Szene hinzuzufügen:

  • Automatisch: Setzen Sie Gen.-Probes > Unterteilung auf einen anderen Wert als Deaktiviert, und backen Sie dann die Lightmaps. Der Standardwert ist 8, aber Sie können einen höheren Wert wählen, um die Präzision auf Kosten längerer Backzeiten und größerer Ausgabedateien zu verbessern.

  • Manuell: Zusätzlich oder alternativ zur automatischen Erzeugung von Probes können Sie Lightprobes manuell hinzufügen, indem Sie LightmapProbe Nodes in die Szene einfügen. Dies kann verwendet werden, um die Beleuchtungsdetails in Bereichen zu verbessern, die häufig von dynamischen Objekten durchlaufen werden. Nachdem Sie LightmapProbe-Nodes in der Szene platziert haben, müssen Sie die Lightmaps erneut backen, damit sie wirksam werden.

Bemerkung

Nach dem Backen von Lightmaps werden Sie in der 3D-Szene weiße Kugeln sehen, die darstellen, wie sich die gebackene Beleuchtung auf dynamische Objekte auswirkt. Diese Kugeln erscheinen nicht im laufenden Projekt.

Wenn Sie diese Kugeln im Editor ausblenden möchten, schalten Sie Ansicht > Gizmos > LightmapGI oben im 3D-Editor ein (das "geschlossenes Auge"-Symbol zeigt an, dass das Gizmo ausgeblendet ist).

Lightmap-Daten

Die Daten > Lichtdaten-Property im LightmapGI-Node enthält die Lightmap-Daten nach dem Backen. Texturen werden auf der Festplatte gespeichert, aber dies enthält auch die Erfassungsdaten für dynamische Objekte, die sehr speicherintensiv sein können. Wenn Sie eine Szene im .tscn-Format verwenden, sollten Sie diese Ressource in einer externen binären .lmbake-Datei speichern, um zu vermeiden, dass die .tscn-Szene mit in Base64 kodierten Binärdaten aufgebläht wird.

Tipp

Die erzeugte EXR-Datei kann mit einem Bildbearbeitungsprogramm angezeigt und sogar bearbeitet werden, um bei Bedarf Nachbearbeitungen durchzuführen. Beachten Sie jedoch, dass Änderungen an der EXR-Datei beim erneuten Backen von Lightmaps verloren gehen.

Reducing LightmapGI artifacts

If you notice LightmapGI nodes popping in and out of existence as the camera moves, this is most likely because the engine is rendering too many LightmapGI instances at once. Godot is limited to rendering 8 LightmapGI nodes at once, which means up to 8 instances can be in the camera view before some of them will start flickering.