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.
Checking the stable version of the documentation...
Використання глобального освітлення Lightmap
Запечені карти освітлення — це робочий процес для додавання непрямого (або повністю запеченого) освітлення до сцени. На відміну від підходів VoxelGI і SDFGI, запечені карти освітлення чудово працюють на недорогих ПК і мобільних пристроях, оскільки вони майже не споживають ресурсів під час виконання. Крім того, на відміну від VoxelGI та SDFGI, запечені карти освітлення можна додатково використовувати для зберігання прямого освітлення, що забезпечує ще більше підвищення продуктивності.
На відміну від VoxelGI та SDFGI, запечені карти світла повністю статичні. Після випічки їх взагалі не можна змінювати. Вони також не забезпечують відображення сцени, тому використання Зонди відображень разом із ним на інтер’єрах (або використання Sky на екстер’єрах) є вимогою для отримання гарної якості.
Оскільки вони запікаються, у них менше проблем щодо розсіювання світла, ніж у VoxelGI та SDFGI, а непряме світло часто виглядає краще. Недоліком є те, що запікання карт світла займає більше часу порівняно із запіканням VoxelGI. У той час як запікання VoxelGI можна виконати за лічені секунди, запікання карт світла може зайняти кілька хвилин, якщо не більше. Це може значно уповільнити швидкість ітерації, тому рекомендується запікати карти світла лише тоді, коли вам дійсно потрібно побачити зміни в освітленні. Карти світла запікаються на графічному процесорі, що пришвидшує запікання світла, якщо у вас є виділений графічний процесор середнього або високого класу.
Карти освітлення для запікання також зарезервують слот UV2 для запечених матеріалів, що означає, що ви більше не зможете використовувати їх для інших цілей у матеріалах (у вбудованому Standard Material 3D і ORM Material 3D або в власних шейдерах).
Незважаючи на недостатню гнучкість, запечені карти освітлення зазвичай пропонують найкращу якість і продуктивність одночасно в (переважно) статичних сценах. Це робить світлові карти все ще популярними в розробці ігор, незважаючи на те, що світлові карти є найстарішою технікою глобального освітлення у відеоіграх.
Дивись також
Не впевнені, що LightmapGI відповідає вашим потребам? Перегляньте Яку техніку глобального освітлення слід використовувати? для порівняння методів GI, доступних у Godot 4.
Візуальне порівняння
LightmapGI вимкнено.
LightmapGI увімкнуто (тільки з запіканням непрямого світла). Пряме світло все ще працює в режимі реального часу, що дозволяє вносити незначні зміни під час гри.
LightmapGI увімкнено (із запіканням прямого та непрямого світла). Найкраща продуктивність, але нижча якість зображення. Зверніть увагу на більш розмиту сонячну тінь у верхньому правому куті.
Ось кілька порівнянь того, як виглядають LightmapGI та VoxelGI. Зауважте, що карти освітлення точніші, але також страждають від того, що освітлення відбувається на незагорнутій текстурі, тому переходи та роздільна здатність можуть бути не такими хорошими. VoxelGI виглядає менш точним (оскільки це наближення), але в цілому більш плавним.
SDFGI також менш точний порівняно з LightmapGI. Однак SDFGI може підтримувати великі відкриті світи без необхідності випікання.
Налаштування
Попередження
Запікання карт світла у веб-редакторах не підтримується через обмеження графічного API. На веб-платформі підтримується лише рендеринг карт світла, які були запечені на іншій платформі.
Примітка
Вузол LightmapGI запікає лише ті вузли, які знаходяться на тому ж рівні, що й вузол LightmapGI (побратими), або вузли, які є дочірніми вузлами вузла LightmapGI. Це дозволяє використовувати кілька вузлів LightmapGI для запікання різних частин сцени незалежно одна від одної.
Перш за все, перед тим, як Lightmapper зможе щось зробити, об’єктам, які потрібно запікати, потрібен шар UV2 і розмір текстури. Шар UV2 — це набір координат вторинної текстури, який гарантує, що будь-яке обличчя в об’єкті має власне місце на UV-карті. Обличчя не повинні мати спільних пікселів у текстурі.
Є кілька способів переконатися, що ваш об'єкт має унікальний шар UV2 і розмір текстури:
Розгорнути під час імпорту сцени (рекомендовано)
У більшості випадків це найкращий підхід для використання. Єдиним недоліком є те, що на великих моделях розгортання може зайняти деякий час під час імпорту. Незважаючи на це, Godot кешуватиме UV2 під час повторного імпорту, тому його буде відновлено лише за потреби.
Виберіть імпортовану сцену на панелі Файлової системи, а потім перейдіть до панелі Імпорт. Там можна змінити наступні опції:
Для параметра Сітки > Випікання світла має бути встановлено значення Статичні карти освітлення (VoxelGI/SDFGI/LightmapGI):
Під час розгортання під час імпорту ви можете налаштувати розмір текстури за допомогою параметра Сітки > Розмір текселів світлової карти. Нижчі значення призведуть до отримання детальніших карт освітлення, що, можливо, призведе до вищої якості зображення за рахунок довшого часу запікання та збільшення розміру файлу карти освітлення. Стандартне значення 0,2 підходить для малих/середніх сцен, але ви можете збільшити його до 0,5 або навіть більше для більших сцен. Це особливо актуально, якщо ви випікаєте лише непряме освітлення, оскільки непряме світло – це низькочастотні дані (це означає, що для точного представлення текстури з високою роздільною здатністю не потрібні).
Ефект налаштування цього параметра полягає в тому, що всі меші в межах сцени матимуть свої карти UV2 згенеровані належним чином.
Попередження
Під час повторного використання сітки в сцені майте на увазі, що UV буде згенеровано для першого знайденого екземпляра. Якщо сітку повторно використовувати з різними масштабами (а масштаби сильно відрізняються, більш ніж наполовину або вдвічі), це призведе до неефективних карт освітлення. Щоб уникнути цього, налаштуйте властивість Lightmap Scale у розділі GeometryInstance3D вузла MeshInstance3D. Це дозволяє підвищити рівень деталізації карти освітлення для конкретних вузлів MeshInstance3D (але не зменшити його).
Крім того, файли *.unwrap_cache не слід ігнорувати в елементі керування версіями, оскільки ці файли гарантують, що повторні імпортування UV2 узгоджені на різних платформах і версіях рушія.
Розгортка всередині Godot
Попередження
Якщо ця операція меню Mesh використовується для імпортованої 3D-сцени, згенерований UV2 буде втрачено під час перезавантаження сцени.
Godot має опцію розгортання сіток і візуалізації УФ-каналів. Після вибору вузла MeshInstance3D його можна знайти в меню Mesh у верхній частині вікна перегляду 3D-редактора:
Це створить другий набір координат UV2, який можна використовувати для випічки. Він також автоматично встановить розмір текстури.
Розгорніть програмне забезпечення для 3D-моделювання
Останній варіант – зробити це з вашої улюбленої програми 3D. Цей підхід зазвичай не рекомендується, але він пояснюється, щоб ви знали, що він існує. Основна перевага полягає в тому, що на складних об’єктах, які вам часто захочеться повторно імпортувати, процес створення текстури може бути досить дорогим у Godot, тому розгортання її перед імпортом може бути швидшим.
Просто розгорніть розгортку на другому шарі UV2.
Потім імпортуйте 3D-сцену в звичайному режимі. Пам'ятайте, що вам потрібно буде встановити розмір текстури на меші після імпорту.
Якщо ви використовуєте зовнішні сітки під час імпорту, розмір буде збережено. Майте на увазі, що більшість розгортачів програмного забезпечення для 3D-моделювання не орієнтовані на якість, оскільки вони призначені для швидкої роботи. Здебільшого вам знадобиться використовувати шви або інші техніки, щоб краще розгортати.
Генерація UV2 для примітивних сіток
Примітка
Цей параметр доступний лише для примітивних сіток, таких як BoxMesh, CylinderMesh, class_PlaneMesh тощо.
Увімкнення UV2 на примітивних сітках дозволяє змусити їх отримувати освітлення та сприяти йому. Це можна використовувати в певних налаштуваннях освітлення. Наприклад, ви можете приховати тор, який має випромінювальний матеріал, після запікання карт світла, щоб створити область освітлення, яка повторює форму тора.
За замовчуванням у примітивних сітках UV2 не генерується для економії ресурсів (оскільки ці сіті можуть створюватися під час гри). Ви можете редагувати примітивну сітку в інспекторі та ввімкнути Додати UV2, щоб система процедурно генерувала UV2 для примітивної сітки. Значення за замовчуванням UV2 Padding налаштовано так, щоб уникнути більшості розливів карт освітлення, не витрачаючи надто багато місця на краях. Якщо ви помітили розмивання карти світла лише на певній примітивній сітці, можливо, вам доведеться збільшити UV2 Padding.
Підказка щодо розміру карти освітлення представляє розмір однієї сітки на текстурі карти освітлення, який змінюється залежно від властивостей розміру сітки та значення UV2 Padding. Підказку щодо розміру карти освітлення не слід змінювати вручну, оскільки будь-які зміни буде втрачено під час перезавантаження сцени.
Генерація UV2 для вузлів CSG
Починаючи з Godot 4.4, ви можете convert a CSG node and its children to a MeshInstance3D. Це можна використовувати для запікання карт освітлення на вузлі CSG, виконавши такі дії:
Виберіть кореневий вузол CSG і виберіть CSG > Запікати екземпляр сітки у верхній частині вікна перегляду 3D-редактора.
Приховати щойно запечений кореневий вузол CSG (він не прихований автоматично).
Виберіть щойно створений вузол MeshInstance3D і виберіть Mesh > Unwrap UV2 for Lightmap/AO.
Запекти карти світла.
Порада
Не забувайте зберігати вихідний вузол CSG у дереві сцени, щоб у разі потреби пізніше можна було внести зміни до геометрії. Щоб внести зміни в геометрію, видаліть вузол MeshInstance3D і знову зробіть кореневий вузол CSG видимим.
Перевірка UV2
У згаданому вище меню Mesh можна візуалізувати координати текстури UV2. Якщо щось не вдається, ще раз перевірте, чи сітки мають такі координати UV2:
Налаштування сцени
Перш ніж щось робити, до сцени потрібно додати вузол LightmapGI. Це увімкне легке випікання на всіх вузлах (і підвузлах) у цій сцені, навіть на сценах, створених екземплярами.
Підсцена може бути створена декілька разів, оскільки це підтримується бейкером. Кожному екземпляру буде призначено власну світлову карту. Щоб уникнути проблем з непослідовним масштабуванням текселів лайтмапи, переконайтеся, що ви дотримуєтеся правила масштабування сіті, згаданого вище.
Налаштування мешів (сіток)
Щоб вузол MeshInstance3D брав участь у процесі запікання, його режим запікання повинен бути встановлений на Статичний. Сітки, для яких режим запікання встановлений на Вимкнено або Динамічний, будуть проігноровані Lightmapper.
При автоматичному створенні карт освітлення, ця властивість активується автоматично.
Налаштування світла
За замовчуванням освітлення освітлюється лише непрямим світлом. Це означає, що відображення тіней і освітлення все ще динамічні та впливають на рухомі об’єкти, але світло, що відбивається від цього світла, буде запікатися.
Підсвічування можна вимкнути (без випікання) або повністю випікати (пряме та непряме). Цим можна керувати з меню Режим випікання у розділі «Підсвічування»:
Основні режими:
Вимкнено
Під час запікання карт світла світло ігнорується. Цей режим використовується для динамічних світлових ефектів, таких як вибухи та ефекти зброї.
Попередження
Приховування світла не впливає на остаточне запікання карти освітлення. Це означає, що ви повинні використовувати вимкнений режим запікання замість того, щоб приховувати вузол Light, вимкнувши його властивість Visible.
Динамічний
Це режим за замовчуванням і є компромісом між продуктивністю та зручністю роботи в реальному часі. Запалюється лише непряме освітлення. Пряме світло й тіні залишаються в реальному часі, як і без LightmapGI.
Цей режим дозволяє виконувати тонкі зміни кольору, енергії та положення світла, і при цьому зберігати досить коректний вигляд. Наприклад, ви можете використовувати його для створення мерехтливих статичних факелів, і запекти їх непряме світло.
Залежно від значення Shadowmask Mode можна отримати віддалені запечені тіні для DirectionalLight3D. Завдяки цьому тіні зблизька відтворюються в реальному часі та відображають динамічні об’єкти, а статичні об’єкти на відстані відкидають тіні.
Статичний
Буде запікатися як непряме, так і пряме освітлення. Оскільки статичні поверхні можуть повністю пропускати обчислення освітлення та тіней, цей режим забезпечує найкращу продуктивність разом із плавними тінями, які ніколи не тьмяніють залежно від відстані. Світло в режимі реального часу більше не впливатиме на запечені поверхні, але воно все ще впливатиме на динамічні об’єкти. У разі використання режиму випікання Все на світлі динамічні об’єкти не відкидають тіні в реальному часі на запечені поверхні, тому вам потрібно використовувати інший підхід, наприклад тіні з крапками. Тіні крапки можна реалізувати за допомогою вузла Decal.
Світло взагалі не можна буде регулювати під час гри. Переміщення світла чи зміна його кольору (або енергії) не матиме жодного впливу на статичні поверхні.
Оскільки режими випічки можна регулювати для кожного світла, можна створювати гібридні налаштування світла для випікання. Одним із популярних варіантів є використання DirectionalLight у реальному часі з режимом запікання Dynamic і використання режиму запікання Static для OmniLights і SpotLights. Це забезпечує високу продуктивність, водночас дозволяючи динамічним об’єктам відкидати тіні в режимі реального часу на вулицях.
Повністю запечені світильники також можуть використовувати властивості Розмір (всесвітній/точковий) або Кутова відстань (спрямований) вузлів світла. Це дозволяє створювати тіні з реалістичною півтінню, яка збільшується в розмірі зі збільшенням відстані між заклинателем і тінню. Це також має нижчу вартість продуктивності порівняно з тінями PCSS у реальному часі, оскільки тіні в реальному часі відображаються лише на динамічних об’єктах.
Запікання
Щоб почати процес запікання, натисніть кнопку Запікати карти світла у верхній частині вікна перегляду 3D-редактора під час вибору вузла LightmapGI:
Це може зайняти від кількох секунд до хвилин (а то й годин) залежно від розміру сцени, способу запікання та обраної якості.
Попередження
Запікання карт світла — це процес, який може вимагати багато відеопам’яті, особливо якщо отримана текстура велика. Через внутрішні обмеження механізм також може аварійно завершувати роботу, якщо розмір згенерованої текстури є завеликим (навіть у системах із великою кількістю відеопам’яті).
Щоб уникнути збоїв, переконайтеся, що розмір текселів карти освітлення в док-станції «Імпорт» має достатньо високе значення.
Коригування
Якість: Передбачено чотири режими якості випічки: низька, середня, висока та ультра. Вища якість займає більше часу, але в результаті отримується краща карта освітлення з меншим шумом. Різниця особливо помітна з емісійними матеріалами або областями, які практично не освітлюються прямо. Кожен режим якості випічки можна додатково налаштувати в налаштуваннях проекту.
Суперсемплінг: Цей параметр створює карту освітлення з вищою роздільною здатністю, а потім знижує її роздільну здатність. Це зменшує шум і витік світла, а також створює кращі тіні з дрібними деталями. Однак його використання збільшить час випікання та використання пам'яті під час випікання карти освітлення. Коефіцієнт суперсемплінгу змінює розмір, з яким рендериться карта освітлення перед зниженням роздільної здатності.
Відскоки: кількість відскоків для непрямого освітлення. Значення за умовчанням (
3) є хорошим компромісом між часом випікання та якістю. Вищі значення призведуть до того, що світло буде відбиватися більше разів, перш ніж зупинитися, що робить непряме освітлення більш плавним (але також, можливо, яскравішим залежно від матеріалів і геометрії).Непряма енергія відскоку: Глобальний множник, який використовується під час запікання непрямої енергії вогнів. Це збільшує власне значення Непрямої енергії кожного світла. Значення, відмінні від
1.0, не є фізично точними, але їх можна використовувати для художнього ефекту.Напрямок: якщо ввімкнено, зберігає інформацію про напрямок для карт освітлення. Це покращує зовнішній вигляд звичайних картованих матеріалів для запечених поверхонь, особливо з повністю запеченими світлами (оскільки вони також мають пряме запікання світлом). Недоліком є те, що направлені карти освітлення трохи дорожчі для візуалізації. Вони також вимагають більше часу для запікання, що призводить до більших розмірів файлів.
Режим тіньової маски: якщо встановлено режим, відмінний від Немає, перший DirectionalLight3D у сцені з Динамічним режимом глобального освітлення матиме свої статичні тіні, запечені в окрему текстуру, яка називається маска тіні. Це можна використовувати, щоб дозволити віддаленим статичним об’єктам відкидати тіні на інші статичні об’єкти незалежно від відстані від камери. Перегляньте section on shadowmasking для отримання додаткової інформації.
Інтер’єр: якщо ввімкнено, джерело освітлення навколишнього середовища не здійснюватиметься. Використовуйте це для сцен виключно в приміщенні, щоб уникнути витоку світла.
Використовувати текстуру для відскоків: якщо ввімкнути, буде створено текстуру з інформацією про освітлення, щоб прискорити створення непрямого освітлення ціною певної точності. У геометрії можуть спостерігатися додаткові артефакти витоку світла під час використання карт освітлення з низькою роздільною здатністю або UVs, які значно розтягують карту освітлення по поверхнях. Якщо ви не впевнені, залиште цю функцію ввімкненою.
Використовувати шумозаглушувач: якщо ввімкнено, використовується алгоритм зменшення шуму, щоб зробити карту освітлення значно менш шумною. Це збільшує час випікання та іноді може вводити артефакти, але результат часто того вартий. Перегляньте Усунення шуму для отримання додаткової інформації.
Інтенсивність усунення шуму: Інтенсивність кроку усунення шуму, застосованого до згенерованих карт освітлення. Вищі значення більш ефективні для видалення шуму, але можуть зменшити деталізацію статичних тіней. Ефективно, лише якщо ввімкнуто усунення шумів і метод усунення шумів JNLM (OIDN не має налаштування сили усунення шуму).
Зміщення: значення зміщення, яке використовується для тіней у 3D-об’єктах. Зазвичай вам не потрібно змінювати це значення, за винятком випадків, коли у вас виникли проблеми з легкими кровотечами або темними плямами на карті освітлення після запікання. Цей параметр не впливає на тіні в реальному часі, що відкидаються на запечених поверхнях (для світильників із Динамічним режимом запікання).
Максимальний розмір текстури: максимальний розмір текстури для створеного атласу текстури. Вищі значення призведуть до створення меншої кількості фрагментів, але можуть працювати не на всьому обладнанні через апаратні обмеження щодо розмірів текстури. Якщо не впевнені, залиште значення за замовчуванням
16384.Середовище > Режим: контролює джерело освітлення середовища під час запікання карт освітлення. Значення за замовчуванням Сцена підходить для рівнів із видимими зовнішніми частинами. Для сцен виключно в приміщенні встановіть для цього параметра значення Вимкнено, щоб уникнути витоку світла та прискорити випікання. Для цього також можна встановити значення Власне небо або Власний колір, щоб використовувати освітлення середовища, яке відрізняється від реального неба навколишнього середовища сцени.
Gen Probes > Subdiv: Див. Динамічні об'єкти.
Дані > Світлові дані: Див. Дані карти освітлення.
Використання тіньового маскування для віддалених спрямованих тіней
Під час використання DirectionalLight3D максимальна відстань, на якій він може малювати тіні в реальному часі, обмежена властивістю Shadow Max Distance. Це може бути проблемою у великих сценах, оскільки віддалені об’єкти не матимуть жодних тіней від DirectionalLight3D. Хоча цю проблему можна вирішити за допомогою режиму глобального освітлення Static на DirectionalLight3D, це має кілька недоліків:
Оскільки як пряме, так і непряме світло запікаються, динамічні об’єкти не можуть реалістично відкидати тіні на статичні поверхні. У цьому випадку Godot повністю пропускає вибірку тіней, щоб уникнути артефактів «подвійного освітлення».
Статичним тіням зблизька бракує деталей, оскільки вони покладаються лише на текстуру карти освітлення, а не на каскади тіней у реальному часі.
Ми можемо уникнути цих недоліків, але все ще мати переваги від далеких тіней, використовуючи shadowmasking. Хоча динамічні об’єкти не отримають тіні від тіньової маски, вона все одно значно покращує візуальні ефекти, оскільки більшість сцен переважно складаються зі статичних об’єктів.
Оскільки текстура карти освітлення сама по собі не містить інформації про тінь, ми можемо записати цю інформацію про тіні в окрему текстуру, яка називається маска тіні.
Маскування тіней впливає лише на перший DirectionalLight3D у сцені (визначений у порядку дерева), який має режим глобального освітлення Dynamic. Неможливо використовувати тіньове маскування з режимом глобального освітлення Static, оскільки цей режим повністю пропускає вибірку тіні на статичних об’єктах. Це пов’язано з тим, що режим статичного глобального освітлення виділяє як пряме, так і непряме світло.
Доступні три режими маскування тіней:
Немає (за замовчуванням): Не випікати текстуру тіньової маски. Спрямовані тіні не будуть видимі за межами діапазону, визначеного властивістю DirectionalLight3D Shadow Max Distance.
Замінити: створює текстуру тіньової маски та використовує її для малювання спрямованих тіней, коли вони виходять за межі діапазону, визначеного властивістю Shadow Max Distance DirectionalLight3D. Тіні в межах цього діапазону залишаються повністю реальними. Цей параметр, як правило, є найбільш доцільним для більшості сцен, оскільки він добре працює зі статичними об’єктами, які демонструють ледь помітний рух (наприклад, тіні листя).
Накладання: створює текстуру тіньової маски та використовує її для малювання спрямованих тіней незалежно від відстані від камери. Тіні в діапазоні властивості DirectionalLight3D Shadow Max Distance будуть накладені тінями в реальному часі. Це може зробити перехід між тінями в реальному часі та запеченими тінями менш різкими, ціною ефекту «змазування», наявного на тінях статичних об’єктів залежно від щільності текселів карти освітлення. Крім того, цей режим не може добре працювати зі статичними об’єктами, які виявляють тонкий рух (наприклад, листя), оскільки запечені тіні не можна анімувати з часом. Тим не менш, для сцен, де камера рухається швидко, це може бути кращим вибором, ніж Замінити.
Ось візуальне порівняння режимів тіньової маски зі сценою, де Максимальна відстань до тіні була встановлена дуже низькою для порівняння. Сині прямокутники є динамічними об’єктами, тоді як решта сцени є статичними об’єктами. У сцені з режимом динамічного глобального освітлення лише один DirectionalLight3D:
Порівняння між режимами тіньової маски
Примітка
Можна перемикатися між режимами тіньової маски Замінити та Накладати без необхідності повторного запікання карт освітлення.
Балансування між часом запікання і якістю
Оскільки високоякісні запікання можуть тривати дуже довго (до десятків хвилин для великих складних сцен), спочатку рекомендується використовувати нижчі налаштування якості. Потім, коли ви впевнені в налаштуваннях освітлення сцени, підвищте параметри якості та виконайте «останнє» запікання перед експортом вашого проекту.
Зменшення роздільної здатності карти освітлення за рахунок збільшення Розміру текселів карти освітлення на імпортованих 3D-сценах також значно пришвидшить запікання. Однак для цього вам потрібно буде повторно імпортувати всі 3D-сцени зі світловими картами, перш ніж ви зможете знову запікати карти освітлення.
Усунення шуму
Оскільки запікання карт освітлення покладається на трасування променів, у «сирій» запеченій карті освітлення завжди буде видимий шум. Шум особливо помітний у місцях, важкодоступних для відбитого світла, наприклад у приміщеннях із невеликими отворами, куди проникає сонячне світло. Шум можна зменшити, підвищивши якість випікання, але це значно збільшить час випікання.
Порівняння між увімкненим і вимкненим шумозаглушенням (із засобом зменшення шуму JNLM за замовчуванням).
Щоб боротися з шумом, не надто збільшуючи час випікання, можна використовувати деноайзер. Зменшувач шуму — це алгоритм, який працює на остаточній запеченій карті освітлення, виявляє шаблони шуму та пом’якшує їх, намагаючись якнайкраще зберегти деталі. Godot пропонує два алгоритми усунення шуму:
JNLM (нелокальні засоби зі спільною фільтрацією)
JNLM – це метод шумозаглушення за замовчуванням, який включено до Godot. Він використовує простий, але ефективний алгоритм шумозаглушення, відомий як нелокальні засоби. JNLM працює на графічному процесорі за допомогою обчислювального шейдера та сумісний з будь-яким графічним процесором, який може запускати рендерери на основі RenderingDevice від Godot 4. Додаткове налаштування не потрібне.
Усунення шуму JNLM можна налаштувати за допомогою властивості Denoiser Strength, яка відображається, коли ввімкнено Use Denoiser. Вищі значення можуть бути більш ефективними для видалення шуму, ціною придушення деталей тіні для статичних тіней.
Порівняння значень сили шумозаглушувача 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. Зверніть увагу, як 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 екземплярів, перш ніж деякі з них почнуть мерехтіти.