Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Використання глобального освітлення Lightmap

Baked lightmaps are a workflow for adding indirect (or fully baked) lighting to a scene. Unlike the VoxelGI and SDFGI approaches, baked lightmaps work fine on low-end PCs and mobile devices, as they consume almost no resources at runtime. Also unlike VoxelGI and SDFGI, baked lightmaps can optionally be used to store direct lighting, which provides even further performance gains.

На відміну від VoxelGI та SDFGI, запечені карти світла повністю статичні. Після випічки їх взагалі не можна змінювати. Вони також не забезпечують відображення сцени, тому використання Зонди відображень разом із ним на інтер’єрах (або використання Sky на екстер’єрах) є вимогою для отримання гарної якості.

Коли вони запікаються, вони мають менше проблем, ніж VoxelGI та SDFGI щодо легкої кровотечі, і непряме світло часто виглядає краще. Недоліком є те, що запікання карт світла займає більше часу порівняно з запіканням VoxelGI. Хоча запікання VoxelGI можна виконати за лічені секунди, запікання карт світла може зайняти кілька хвилин, якщо не більше. Це може значно сповільнити швидкість ітерації, тому рекомендується запікати карти освітлення лише тоді, коли вам дійсно потрібно побачити зміни в освітленні. Починаючи з Godot 4.0, світлові карти запікаються на графічному процесорі, що робить процес освітлення швидшим, якщо у вас є виділений графічний процесор середнього або високого рівня.

Карти освітлення для запікання також зарезервують слот UV2 для запечених матеріалів, що означає, що ви більше не зможете використовувати їх для інших цілей у матеріалах (у вбудованому Standard Material 3D і ORM Material 3D або в власних шейдерах).

Незважаючи на недостатню гнучкість, запечені карти освітлення зазвичай пропонують найкращу якість і продуктивність одночасно в (переважно) статичних сценах. Це робить світлові карти все ще популярними в розробці ігор, незважаючи на те, що світлові карти є найстарішою технікою глобального освітлення у відеоіграх.

Дивись також

Не впевнені, що LightmapGI відповідає вашим потребам? Перегляньте Яку техніку глобального освітлення слід використовувати? для порівняння методів GI, доступних у Godot 4.

Візуальне порівняння

LightmapGI вимкнено.

LightmapGI вимкнено.

LightmapGI увімкнуто (тільки з запіканням непрямого світла).

LightmapGI увімкнуто (тільки з запіканням непрямого світла). Пряме світло все ще працює в режимі реального часу, що дозволяє вносити незначні зміни під час гри.

LightmapGI увімкнено (із запіканням прямого та непрямого світла).

LightmapGI увімкнено (із запіканням прямого та непрямого світла). Найкраща продуктивність, але нижча якість зображення. Зверніть увагу на більш розмиту сонячну тінь у верхньому правому куті.

Ось кілька порівнянь того, як виглядають LightmapGI та VoxelGI. Зауважте, що карти освітлення точніші, але також страждають від того, що освітлення відбувається на незагорнутій текстурі, тому переходи та роздільна здатність можуть бути не такими хорошими. VoxelGI виглядає менш точним (оскільки це наближення), але в цілому більш плавним.

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

SDFGI також менш точний порівняно з LightmapGI. Однак SDFGI може підтримувати великі відкриті світи без необхідності випікання.

Налаштування

Попередження

Запікання світлових карт у Android і веб-редакторах не підтримується через обмеження графічного API на цих пристроях. На платформах Android і веб-платформах підтримується лише відтворення світлових карт, створених на настільному ПК.

Примітка

The LightmapGI node only bakes nodes that are on the same level as the LightmapGI node (siblings), or nodes that are children of the LightmapGI node. This allows you to use several LightmapGI nodes to bake different parts of the scene, independently from each other.

Перш за все, перед тим, як Lightmapper зможе щось зробити, об’єктам, які потрібно запікати, потрібен шар UV2 і розмір текстури. Шар UV2 — це набір координат вторинної текстури, який гарантує, що будь-яке обличчя в об’єкті має власне місце на UV-карті. Обличчя не повинні мати спільних пікселів у текстурі.

Є кілька способів переконатися, що ваш об'єкт має унікальний шар UV2 і розмір текстури:

Розгортка всередині Godot

Попередження

Якщо ця операція меню Mesh використовується для імпортованої 3D-сцени, згенерований UV2 буде втрачено під час перезавантаження сцени.

Godot має опцію розгортання сіток і візуалізації УФ-каналів. Після вибору вузла MeshInstance3D його можна знайти в меню Mesh у верхній частині вікна перегляду 3D-редактора:

../../../_images/lightmap_gi_mesh_menu.webp

Це створить другий набір координат UV2, який можна використовувати для випічки. Він також автоматично встановить розмір текстури.

Розгорніть програмне забезпечення для 3D-моделювання

Останній варіант – зробити це з вашої улюбленої програми 3D. Цей підхід зазвичай не рекомендується, але він пояснюється, щоб ви знали, що він існує. Основна перевага полягає в тому, що на складних об’єктах, які вам часто захочеться повторно імпортувати, процес створення текстури може бути досить дорогим у Godot, тому розгортання її перед імпортом може бути швидшим.

Просто розгорніть розгортку на другому шарі UV2.

../../../_images/lightmap_gi_blender.webp

Потім імпортуйте 3D-сцену в звичайному режимі. Пам'ятайте, що вам потрібно буде встановити розмір текстури на меші після імпорту.

../../../_images/lightmap_gi_lmsize.webp

Якщо ви використовуєте зовнішні сітки під час імпорту, розмір буде збережено. Майте на увазі, що більшість розгортачів програмного забезпечення для 3D-моделювання не орієнтовані на якість, оскільки вони призначені для швидкої роботи. Здебільшого вам знадобиться використовувати шви або інші техніки, щоб краще розгортати.

Генерація UV2 для примітивних сіток

Примітка

Цей параметр доступний лише для примітивних сіток, таких як BoxMesh, CylinderMesh, PlaneMesh тощо.

Увімкнення UV2 на примітивних сітках дозволяє змусити їх отримувати освітлення та сприяти йому. Це можна використовувати в певних налаштуваннях освітлення. Наприклад, ви можете приховати тор, який має випромінювальний матеріал, після запікання карт світла, щоб створити область освітлення, яка повторює форму тора.

За замовчуванням у примітивних сітках UV2 не генерується для економії ресурсів (оскільки ці сіті можуть створюватися під час гри). Ви можете редагувати примітивну сітку в інспекторі та ввімкнути Додати UV2, щоб система процедурно генерувала UV2 для примітивної сітки. Значення за замовчуванням UV2 Padding налаштовано так, щоб уникнути більшості розливів карт освітлення, не витрачаючи надто багато місця на краях. Якщо ви помітили розмивання карти світла лише на певній примітивній сітці, можливо, вам доведеться збільшити UV2 Padding.

Підказка щодо розміру карти освітлення представляє розмір однієї сітки на текстурі карти освітлення, який змінюється залежно від властивостей розміру сітки та значення UV2 Padding. Підказку щодо розміру карти освітлення не слід змінювати вручну, оскільки будь-які зміни буде втрачено під час перезавантаження сцени.

Generating UV2 for CSG nodes

Since Godot 4.4, you can convert a CSG node and its children to a MeshInstance3D. This can be used to bake lightmaps on a CSG node by following these steps:

  • Select the root CSG node and choose CSG > Bake Mesh Instance at the top of the 3D editor viewport.

  • Hide the root CSG node that was just baked (it is not hidden automatically).

  • Select the newly created MeshInstance3D node and choose Mesh > Unwrap UV2 for Lightmap/AO.

  • Bake lightmaps.

Порада

Remember to keep the original CSG node in the scene tree, so that you can perform changes to the geometry later if needed. To make changes to the geometry, remove the MeshInstance3D node and make the root CSG node visible again.

Перевірка UV2

У згаданому вище меню Mesh можна візуалізувати координати текстури UV2. Якщо щось не вдається, ще раз перевірте, чи сітки мають такі координати UV2:

../../../_images/lightmap_gi_uvchannel.webp

Налаштування сцени

Перш ніж щось робити, до сцени потрібно додати вузол LightmapGI. Це увімкне легке випікання на всіх вузлах (і підвузлах) у цій сцені, навіть на сценах, створених екземплярами.

../../../_images/lightmap_gi_scene.webp

Підсцена може бути створена декілька разів, оскільки це підтримується бейкером. Кожному екземпляру буде призначено власну світлову карту. Щоб уникнути проблем з непослідовним масштабуванням текселів лайтмапи, переконайтеся, що ви дотримуєтеся правила масштабування сіті, згаданого вище.

Налаштування мешів (сіток)

Щоб вузол MeshInstance3D брав участь у процесі запікання, його режим запікання повинен бути встановлений на Статичний. Сітки, для яких режим запікання встановлений на Вимкнено або Динамічний, будуть проігноровані Lightmapper.

../../../_images/lightmap_gi_use.webp

При автоматичному створенні карт освітлення, ця властивість активується автоматично.

Налаштування світла

За замовчуванням освітлення освітлюється лише непрямим світлом. Це означає, що відображення тіней і освітлення все ще динамічні та впливають на рухомі об’єкти, але світло, що відбивається від цього світла, буде запікатися.

Світло можна відключити (не запікати), або запекти повністю (пряме і непряме). Цим можна керувати з меню Bake Mode (Режим запікання) на світлі:

../../../_images/lightmap_gi_bake_mode.webp

Основні режими:

Вимкнено

Під час запікання карт світла світло ігнорується. Цей режим використовується для динамічних світлових ефектів, таких як вибухи та ефекти зброї.

Попередження

Приховування світла не впливає на остаточне запікання карти освітлення. Це означає, що ви повинні використовувати вимкнений режим запікання замість того, щоб приховувати вузол Light, вимкнувши його властивість Visible.

Динамічний

Це режим за замовчуванням і є компромісом між продуктивністю та зручністю роботи в реальному часі. Запалюється лише непряме освітлення. Пряме світло й тіні залишаються в реальному часі, як і без LightmapGI.

Цей режим дозволяє виконувати тонкі зміни кольору, енергії та положення світла, і при цьому зберігати досить коректний вигляд. Наприклад, ви можете використовувати його для створення мерехтливих статичних факелів, і запекти їх непряме світло.

Depending on the value of Shadowmask Mode, it is possible to still get distant baked shadows for DirectionalLight3D. This allows shadows up close to be real-time and show dynamic objects, while allowing static objects in the distance to still cast shadows.

Статичний

Буде запікатися як непряме, так і пряме освітлення. Оскільки статичні поверхні можуть повністю пропускати обчислення освітлення та тіней, цей режим забезпечує найкращу продуктивність разом із плавними тінями, які ніколи не тьмяніють залежно від відстані. Світло в режимі реального часу більше не впливатиме на запечені поверхні, але воно все ще впливатиме на динамічні об’єкти. У разі використання режиму випікання Все на світлі динамічні об’єкти не відкидають тіні в реальному часі на запечені поверхні, тому вам потрібно використовувати інший підхід, наприклад тіні з крапками. Тіні крапки можна реалізувати за допомогою вузла Decal.

Світло взагалі не можна буде регулювати під час гри. Переміщення світла чи зміна його кольору (або енергії) не матиме жодного впливу на статичні поверхні.

Оскільки режими випічки можна регулювати для кожного світла, можна створювати гібридні налаштування світла для випікання. Одним із популярних варіантів є використання DirectionalLight у реальному часі з режимом запікання Dynamic і використання режиму запікання Static для OmniLights і SpotLights. Це забезпечує високу продуктивність, водночас дозволяючи динамічним об’єктам відкидати тіні в режимі реального часу на вулицях.

Повністю запечені світильники також можуть використовувати властивості Розмір (всесвітній/точковий) або Кутова відстань (спрямований) вузлів світла. Це дозволяє створювати тіні з реалістичною півтінню, яка збільшується в розмірі зі збільшенням відстані між заклинателем і тінню. Це також має нижчу вартість продуктивності порівняно з тінями PCSS у реальному часі, оскільки тіні в реальному часі відображаються лише на динамічних об’єктах.

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

Запікання

Щоб почати процес запікання, натисніть кнопку Запікати карти світла у верхній частині вікна перегляду 3D-редактора під час вибору вузла LightmapGI:

../../../_images/lightmap_gi_bake.webp

Це може зайняти від кількох секунд до хвилин (а то й годин) залежно від розміру сцени, способу запікання та обраної якості.

Попередження

Запікання карт світла — це процес, який може вимагати багато відеопам’яті, особливо якщо отримана текстура велика. Через внутрішні обмеження механізм також може аварійно завершувати роботу, якщо розмір згенерованої текстури є завеликим (навіть у системах із великою кількістю відеопам’яті).

Щоб уникнути збоїв, переконайтеся, що розмір текселів карти освітлення в док-станції «Імпорт» має достатньо високе значення.

Коригування

  • Якість: Передбачено чотири режими якості випічки: низька, середня, висока та ультра. Вища якість займає більше часу, але в результаті отримується краща карта освітлення з меншим шумом. Різниця особливо помітна з емісійними матеріалами або областями, які практично не освітлюються прямо. Кожен режим якості випічки можна додатково налаштувати в налаштуваннях проекту.

  • Відскоки: кількість відскоків для непрямого освітлення. Значення за умовчанням (3) є хорошим компромісом між часом випікання та якістю. Вищі значення призведуть до того, що світло буде відбиватися більше разів, перш ніж зупинитися, що робить непряме освітлення більш плавним (але також, можливо, яскравішим залежно від матеріалів і геометрії).

  • Непряма енергія відскоку: Глобальний множник, який використовується під час запікання непрямої енергії вогнів. Це збільшує власне значення Непрямої енергії кожного світла. Значення, відмінні від 1.0, не є фізично точними, але їх можна використовувати для художнього ефекту.

  • Напрямок: якщо ввімкнено, зберігає інформацію про напрямок для карт освітлення. Це покращує зовнішній вигляд звичайних картованих матеріалів для запечених поверхонь, особливо з повністю запеченими світлами (оскільки вони також мають пряме запікання світлом). Недоліком є те, що направлені карти освітлення трохи дорожчі для візуалізації. Вони також вимагають більше часу для запікання, що призводить до більших розмірів файлів.

  • Shadowmask Mode: If set to a mode other than None, the first DirectionalLight3D in the scene with the Dynamic global illumination mode will have its static shadows baked to a separate texture called a shadowmask. This can be used to allow distant static objects to cast shadows onto other static objects regardless of the distance from the camera. See the section on shadowmasking for further details.

  • Інтер’єр: якщо ввімкнено, джерело освітлення навколишнього середовища не здійснюватиметься. Використовуйте це для сцен виключно в приміщенні, щоб уникнути витоку світла.

  • Використовувати текстуру для відскоків: якщо ввімкнути, буде створено текстуру з інформацією про освітлення, щоб прискорити створення непрямого освітлення ціною певної точності. У геометрії можуть спостерігатися додаткові артефакти витоку світла під час використання карт освітлення з низькою роздільною здатністю або UVs, які значно розтягують карту освітлення по поверхнях. Якщо ви не впевнені, залиште цю функцію ввімкненою.

  • Використовувати шумозаглушувач: якщо ввімкнено, використовується алгоритм зменшення шуму, щоб зробити карту освітлення значно менш шумною. Це збільшує час випікання та іноді може вводити артефакти, але результат часто того вартий. Перегляньте Усунення шуму для отримання додаткової інформації.

  • Інтенсивність усунення шуму: Інтенсивність кроку усунення шуму, застосованого до згенерованих карт освітлення. Вищі значення більш ефективні для видалення шуму, але можуть зменшити деталізацію статичних тіней. Ефективно, лише якщо ввімкнуто усунення шумів і метод усунення шумів JNLM (OIDN не має налаштування сили усунення шуму).

  • Зміщення: значення зміщення, яке використовується для тіней у 3D-об’єктах. Зазвичай вам не потрібно змінювати це значення, за винятком випадків, коли у вас виникли проблеми з легкими кровотечами або темними плямами на карті освітлення після запікання. Цей параметр не впливає на тіні в реальному часі, що відкидаються на запечених поверхнях (для світильників із Динамічним режимом запікання).

  • Максимальний розмір текстури: максимальний розмір текстури для створеного атласу текстури. Вищі значення призведуть до створення меншої кількості фрагментів, але можуть працювати не на всьому обладнанні через апаратні обмеження щодо розмірів текстури. Якщо не впевнені, залиште значення за замовчуванням 16384.

  • Середовище > Режим: контролює джерело освітлення середовища під час запікання карт освітлення. Значення за замовчуванням Сцена підходить для рівнів із видимими зовнішніми частинами. Для сцен виключно в приміщенні встановіть для цього параметра значення Вимкнено, щоб уникнути витоку світла та прискорити випікання. Для цього також можна встановити значення Власне небо або Власний колір, щоб використовувати освітлення середовища, яке відрізняється від реального неба навколишнього середовища сцени.

  • Gen Probes > Subdiv: Див. Динамічні об'єкти.

  • Дані > Світлові дані: Див. Дані карти освітлення.

Using shadowmasking for distant directional shadows

When using a DirectionalLight3D, the maximum distance at which it can draw real-time shadows is limited by its Shadow Max Distance property. This can be an issue in large scenes, as distant objects won't appear to have any shadows from the DirectionalLight3D. While this can be resolved by using the Static global illumination mode on the DirectionalLight3D, this has several downsides:

  • Since both direct and indirect light are baked, there is no way for dynamic objects to cast shadows onto static surfaces in a realistic manner. Godot skips shadow sampling entirely in this case to avoid "double lighting" artifacts.

  • Static shadows up close lack in detail, as they only rely on the lightmap texture and not on real-time shadow cascades.

We can avoid these downsides while still benefiting from distant shadows by using shadowmasking. While dynamic objects won't receive shadows from the shadowmask, it still greatly improves visuals since most scenes are primarily comprised of static objects.

Since the lightmap texture alone doesn't contain shadow information, we can bake this shadow information to a separate texture called a shadowmask.

Shadowmasking only affects the first DirectionalLight3D in the scene (determined by tree order) that has the Dynamic global illumination mode. It is not possible to use shadowmasking with the Static global illumination mode, as this mode skips shadow sampling on static objects entirely. This is because the Static global illumination mode bakes both direct and indirect light.

Three shadowmasking modes are available:

  • None (default): Don't bake a shadowmask texture. Directional shadows will not be visible outside the range specified by the DirectionalLight3D's Shadow Max Distance property.

  • Replace: Bakes a shadowmask texture, and uses it to draw directional shadows when outside the range specified by the DirectionalLight3D's Shadow Max Distance property. Shadows within this range remain fully real-time. This option generally makes the most sense for most scenes, as it can deal well with static objects that exhibit subtle motion (e.g. foliage shadows).

  • Overlay: Bakes a shadowmask texture, and uses it to draw directional shadows regardless of the distance from the camera. Shadows within the range of the DirectionalLight3D's Shadow Max Distance property will be overlaid with real-time shadows. This can make the transition between real-time and baked shadows less jarring, at the cost of a "smearing" effect present on static object shadows depending on lightmap texel density. Also, this mode can't deal as well with static objects that exhibit subtle motion (such as foliage), as the baked shadows can't be animated over time. Still, for scenes where the camera moves quickly, this may be a better choice than Replace.

Here's a visual comparison of the shadowmask modes with a scene where the Shadow Max Distance was set very low for comparison purposes. The blue boxes are dynamic objects, while the rest of the scene is a static object. There is only a single DirectionalLight3D in the scene with the Dynamic global illumination mode:

Comparison between shadowmask modes

Comparison between shadowmask modes

Примітка

It is possible to switch between the Replace and Overlay shadowmask modes without having to bake lightmaps again.

Балансування між часом запікання і якістю

Оскільки високоякісні запікання можуть тривати дуже довго (до десятків хвилин для великих складних сцен), спочатку рекомендується використовувати нижчі налаштування якості. Потім, коли ви впевнені в налаштуваннях освітлення сцени, підвищте параметри якості та виконайте «останнє» запікання перед експортом вашого проекту.

Зменшення роздільної здатності карти освітлення за рахунок збільшення Розміру текселів карти освітлення на імпортованих 3D-сценах також значно пришвидшить запікання. Однак для цього вам потрібно буде повторно імпортувати всі 3D-сцени зі світловими картами, перш ніж ви зможете знову запікати карти освітлення.

Усунення шуму

Оскільки запікання карт освітлення покладається на трасування променів, у «сирій» запеченій карті освітлення завжди буде видимий шум. Шум особливо помітний у місцях, важкодоступних для відбитого світла, наприклад у приміщеннях із невеликими отворами, куди проникає сонячне світло. Шум можна зменшити, підвищивши якість випікання, але це значно збільшить час випікання.

Порівняння між увімкненим і вимкненим шумозаглушенням

Порівняння між увімкненим і вимкненим шумозаглушенням (із засобом зменшення шуму JNLM за замовчуванням).

Щоб боротися з шумом, не надто збільшуючи час випікання, можна використовувати деноайзер. Зменшувач шуму — це алгоритм, який працює на остаточній запеченій карті освітлення, виявляє шаблони шуму та пом’якшує їх, намагаючись якнайкраще зберегти деталі. Годо пропонує два алгоритми усунення шуму:

JNLM (нелокальні засоби зі спільною фільтрацією)

JNLM є стандартним методом усунення шумів і включений у Godot. Він використовує простий, але ефективний алгоритм усунення шумів, відомий як нелокальні засоби. JNLM працює на графічному процесорі за допомогою обчислювального шейдера та сумісний з будь-яким графічним процесором, який може запускати методи візуалізації Godot 4 на основі Vulkan. Додаткове налаштування не потрібно.

Усунення шуму JNLM можна налаштувати за допомогою властивості Denoiser Strength, яка відображається, коли ввімкнено Use Denoiser. Вищі значення можуть бути більш ефективними для видалення шуму, ціною придушення деталей тіні для статичних тіней.

Порівняння значень сили шумозаглушувача JNLM

Порівняння значень сили шумозаглушувача JNLM. Вищі значення можуть зменшити деталізацію.

OIDN (усунення шуму відкритого зображення)

На відміну від JNLM, OIDN використовує підхід машинного навчання для зменшення шуму на картах освітлення. Він містить модель, спеціально навчену видаляти шум із карт освітлення, зберігаючи при цьому більше деталей тіні в більшості сцен порівняно з JNLM.

OIDN може працювати на GPU, якщо налаштовано апаратне прискорення. Завдяки сучасному графічному процесору високого класу це може забезпечити прискорення більш ніж у 50 разів порівняно з усуненням шумів на основі ЦП:

  • На графічних процесорах AMD потрібно встановити та налаштувати HIP.

  • На графічних процесорах NVIDIA необхідно встановити та налаштувати CUDA. Це може автоматично зробити інсталятор NVIDIA, але в Linux бібліотеки CUDA можуть не встановлюватися за замовчуванням. Ще раз перевірте, чи встановлено пакети CUDA з вашого дистрибутива Linux.

  • На графічних процесорах Intel необхідно встановити та налаштувати SYCL.

Якщо апаратне прискорення недоступне, OIDN повернеться до багатопотокового усунення шумів на основі ЦП. Щоб перевірити, чи працює усунення шумів на основі графічного процесора, скористайтеся монітором використання графічного процесора під час запікання світлових карт і подивіться на відсоток використання графічного процесора та використання відеопам’яті, коли етап усунення шуму відображається в редакторі Godot. Для цього може бути корисним інструмент командного рядка nvidia-smi.

OIDN не включено до Godot через його відносно великий розмір завантаження. Ви можете завантажити попередньо скомпільовані бінарні пакунки OIDN з веб-сайту. Розпакуйте пакет у розташування на вашому комп’ютері, а потім укажіть шлях до виконуваного файлу oidnDenoise у налаштуваннях редактора (Файлова система > Інструменти > OIDN > OIDN Denoise Path). Цей виконуваний файл знаходиться в папці bin бінарного пакета, який ви роздобули.

Після вказівки шляху до виконуваного файлу усунення шуму OIDN змініть метод усунення шуму в налаштуваннях проекту, встановивши для Відображення > Відображення світла > Усунення шуму значення OIDN. Це вплине на всі запікання карт освітлення в цьому проекті після зміни налаштувань.

Примітка

Метод усунення шумів налаштовується в налаштуваннях проекту замість налаштувань редактора. Це робиться для того, щоб різні учасники команди, які працюють над одним проектом, могли використовувати один і той самий метод усунення шумів для досягнення стабільних результатів.

Порівняння засобів усунення шуму JNLM і OIDN

Порівняння засобів усунення шуму JNLM і OIDN. Зверніть увагу, як OIDN краще зберігає деталі та зменшує шви між різними об’єктами.

Динамічні об'єкти

На відміну від VoxelGI та SDFGI, динамічні об’єкти отримують непряме освітлення інакше, ніж статичні об’єкти. Це пояснюється тим, що відображення світла виконується лише на статичних об’єктах.

Для відображення непрямого освітлення на динамічних об’єктах використовується система 3D-зондів із світловими зондами, розподіленими по всій сцені. Під час запікання світлових карт, Lightmapper обчислить кількість непрямого світла, яке отримує зонд. Пряме світло не зберігається в світлових зондах, навіть для світильників, для яких режим запікання встановлено на Статичний (оскільки динамічні об’єкти продовжують освітлюватися в режимі реального часу).

Є 2 способи додати світлові зонди до сцени:

  • Автоматично: встановіть для Gen Probes > Subdiv значення, відмінне від Disabled, а потім запікайте карти освітлення. Типовим значенням є 8, але ви можете вибрати більше значення, щоб покращити точність ціною довшого часу запікання та більшого розміру вихідного файлу.

  • Вручну: На додаток або як альтернатива автоматичному створенню зондів, ви можете додавати світлові зонди вручну, додаючи вузли LightmapProbe до сцени. Це можна використовувати для покращення деталізації освітлення в місцях, де часто подорожують динамічні об’єкти. Після розміщення вузлів LightmapProbe на сцені ви повинні знову запекти карти освітлення, щоб вони були ефективними.

Примітка

Після запікання карт освітлення ви помітите білі сфери в 3D-сцені, які показують, як запечене освітлення впливатиме на динамічні об’єкти. Ці сфери не відображаються у запущеному проекті.

Якщо ви хочете приховати ці сфери в редакторі, перемкніть Перегляд > Gizmos > LightmapGI у верхній частині 3D-редактора (піктограма «закрите око» вказує на те, що гізмо приховано).

Дані карти освітлення

Властивість Data > Light Data у вузлі LightmapGI містить дані карти освітлення після запікання. Текстури зберігаються на диску, але він також містить дані захоплення динамічних об’єктів, які можуть бути важкими. Якщо ви використовуєте сцену у форматі .tscn, вам слід зберегти цей ресурс у зовнішньому двійковому файлі .lmbake, щоб уникнути роздуття сцени .tscn двійковими даними, закодованими в Base64.

Порада

За необхідності згенерований файл EXR можна переглядати і навіть редагувати за допомогою редактора зображень для виконання пост-обробки. Однак майте на увазі, що зміни у файлі EXR будуть втрачені при повторному запіканні карт освітлення.

Зменшення артефактів LightmapGI

Якщо ви помічаєте, що вузли LightmapGI з’являються та зникають під час руху камери, це, швидше за все, тому, що механізм відображає занадто багато екземплярів LightmapGI одночасно. Godot обмежується рендерингом 8 вузлів LightmapGI одночасно, що означає, що в поданні камери може бути до 8 екземплярів, перш ніж деякі з них почнуть мерехтіти.