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.

Глобальне освітлення поля відстані зі знаком (SDFGI)

Глобальне освітлення зі знаком відстані (SDFGI) – це нова техніка, доступна в Godot. Вона забезпечує глобальне освітлення в напівреальному часі, яке масштабується до будь-якого розміру світу та працює з процедурно згенерованими рівнями.

SDFGI підтримує динамічне світло, але не динамічні оклюдери або динамічні емісійні поверхні. Таким чином, SDFGI забезпечує кращу здатність у реальному часі, ніж baked lightmaps, але гіршу здатність у реальному часі, ніж VoxelGI.

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

Важливо

SDFGI підтримується лише під час використання засобу візуалізації Forward+, а не для мобільного чи сумісного рендерера.

Дивись також

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

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

SDFGI відключено.

SDFGI відключено.

SDFGI увімкнено.

SDFGI увімкнено.

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

У Godot SDFGI — це техніка глобального освітлення з найменшою кількістю необхідних кроків, щоб увімкнути:

  1. Переконайтеся, що для ваших вузлів MeshInstance для властивості Global Illumination > Mode встановлено значення Static в інспекторі.

  • Для імпортованих 3D-сцен режим запікання можна налаштувати в док-станції «Імпорт» після вибору файлу 3D-сцени в док-станції FileSystem.

  1. Додайте вузол WorldEnvironment і створіть для нього ресурс Environment.

  2. Відредагуйте ресурс середовища, прокрутіть вниз до розділу SDFGI і розгорніть його.

  3. Увімкніть SDFGI > Увімкнуто. SDFGI автоматично слідуватиме за камерою, коли вона рухається, тому вам не потрібно налаштовувати екстенти (на відміну від VoxelGI).

Властивості середовища SDFGI

На ресурсі середовища є кілька властивостей, доступних для налаштування зовнішнього вигляду та якості SDFGI:

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

  • Read Sky Light: Якщо ввімкнено, навколишнє освітлення відображається в глобальному освітленні. Це має бути ввімкнено у сценах на відкритому повітрі та вимкнено у сценах, які повністю закриті.

  • Зворотній зв’язок: За замовчуванням непряме освітлення відбивається лише один раз під час використання SDFGI. Якщо встановити це значення вище 0.0, SDFGI буде відбиватися більше одного разу, що забезпечує більш реалістичне непряме освітлення за невеликих витрат на продуктивність. Розумні значення зазвичай знаходяться між 0,3 і 1,0 залежно від сцени. Зауважте, що в деяких сценах значення вище 0,5 можуть спричинити нескінченні цикли зворотного зв’язку, через що сцена стане надзвичайно яскравою за кілька секунд. Якщо ваше непряме освітлення виглядає "з плямами", спробуйте збільшити це значення вище 0.0, щоб отримати більш рівномірне освітлення. Якщо в результаті ваше освітлення виглядає занадто яскравим, зменшіть Енергію, щоб компенсувати це.

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

  • Мінальний розмір комірки: мінімальний розмір комірки SDFGI для найближчого, найдетальнішого каскаду. Менші значення призводять до більш точного непрямого освітлення та відбиття ціною нижчої продуктивності. Налаштування цього параметра також автоматично впливає на Cascade 0 Distance і Max Distance.

  • Відстань каскаду 0: відстань, на якій закінчується найближчий, найбільш детальний каскад. Більші значення роблять найближчий каскадний перехід менш помітним за рахунок зниження рівня деталізації в найближчому каскаді. Налаштування цього параметра також автоматично впливає на Мін. розмір комірки та Макс. відстань.

  • Максимальна відстань: контролює, наскільки далеко буде обчислюватися поле відстані зі знаком (для найменш детального каскаду). SDFGI не матиме жодного ефекту на цій відстані. Це значення завжди має бути нижчим від значення Camera's Far, оскільки обчислення SDFGI поза дистанцією перегляду не приносить користі. Налаштування цього параметра також автоматично впливає на Мінімальний розмір комірки та Каскадна відстань 0.

  • Шкала Y: контролює, наскільки вертикально розташовані зонди SDFGI один від одного. За замовчуванням вертикальне розповсюдження таке ж, як і горизонтальне. Однак, оскільки більшість ігрових сцен не дуже вертикальні, встановлення масштабу Y на 75% або навіть 50% може забезпечити кращу якість і зменшити витоки світла без впливу на продуктивність.

  • Енергія: Коефіцієнт яскравості для непрямого освітлення SDFGI.

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

  • Зміщення зонда: Зміщення, яке використовується для відскоку пробного променя SDFGI. Збільште це значення, якщо ви помітили артефакти в непрямому освітленні або відблисках.

Взаємодія SDFGI зі світлом і об'єктами

Кількість непрямої енергії, випромінюваної світлом, залежить від його кольору, енергії і властивостей непрямої енергії. Щоб певне джерело світла випромінювало більше або менше непрямої енергії, не впливаючи на кількість прямого світла, випромінюваного світлом, налаштуйте властивість Indirect Energy в інспекторі Light3D.

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

Для сіток доступні 3 режими глобального освітлення:

  • Вимкнено: Сітка не враховуватиметься під час генерації SDFGI. Сітка буде отримувати непряме освітлення зі сцени, але не сприятиме непрямому освітленню сцени.

  • Статичний (за замовчуванням): Сітка буде врахована під час генерації SDFGI. Сітка отримуватиме і сприятиме непрямому освітленню сцени. Якщо після створення SDFGI сітка будь-яким чином змінюється, камера має відійти від об’єкта, а потім повернутися до нього, щоб SDFGI відновився. Крім того, SDFGI можна вимкнути та знову ввімкнути. Якщо нічого не зробити, непряме освітлення виглядатиме неправильно.

  • Динамічний (не підтримується SDFGI): Сітка не враховуватиметься під час створення SDFGI. Сітка буде отримувати непряме освітлення зі сцени, але не сприятиме непрямому освітленню сцени. Це діє ідентично **Вимкненому* режиму запікання під час використання SDFGI.*

Крім того, для світильників доступні 3 режими запікання (DirectionalLight3D, OmniLight3D і SpotLight3D):

  • Вимкнено: світло не враховуватиметься для випічки SDFGI. Світло не буде сприяти непрямому освітленню сцени.

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

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

Примітка

Кількість непрямої енергії, яку випромінює світло, залежить від його кольору, енергії і властивостей непрямої енергії. Щоб певне джерело світла випромінювало більше або менше непрямої енергії, не впливаючи на кількість прямого світла, випромінюваного світлом, налаштуйте властивість Indirect Energy в інспекторі Light3D.

Дивись також

Перегляньте Який режим глобального освітлення слід використовувати для сіток і світильників? для загальних рекомендацій щодо використання.

Налаштування продуктивності та якості SDFGI

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

У розділі Візуалізація > Глобальне освітлення параметрів проекту якість SDFGI також можна налаштувати кількома способами:

  • Sdfgi > Probe Ray Count: Вищі значення забезпечують кращу якість за рахунок більшого використання GPU. Якщо це значення встановлено надто низьким, це може призвести до того, що на поверхнях з’являться видимі «плями» непрямого освітлення через дуже низьку кількість випромінюваних променів.

  • Sdfgi > Кадри для зближення: Вищі значення призводять до кращої якості, але для повного зближення GI знадобиться більше часу. Вплив цього налаштування особливо помітний під час першого завантаження сцени або коли освітлення з режимом випікання, відмінним від Вимкнено, рухається швидко. Якщо це значення встановлено занадто низьким, це може призвести до появи на поверхнях видимих «плям» непрямого освітлення через дуже низьку кількість променів, що відбиваються. Якщо освітлення вашої сцени не має швидкорухомих світильників, які сприяють GI, спробуйте встановити це значення на 30, щоб покращити якість без впливу на продуктивність.

  • Sdfgi > Frames To Update Light: Нижчі значення призводять до того, що світло, що рухається, відбивається швидше, ціною більшого використання GPU. Якщо освітлення вашої сцени не має вогні, що швидко рухаються, що сприяють GI, подумайте про встановлення значення 16, щоб покращити продуктивність.

  • Gi > Використовувати половинну роздільну здатність: якщо ввімкнено, SDFGI та VoxelGI матимуть відтворення буфера GI із роздільною здатністю вдвічі. Наприклад, під час візуалізації в 3840×2160 буфер GI обчислюватиметься з роздільною здатністю 1920×1080. Увімкнення цього параметра економить багато часу графічного процесора, але це може ввести видимі накладки навколо тонких деталей.

Продуктивність відтворення SDFGI також залежить від кількості каскадів і розміру комірки, вибраного в ресурсі середовища (див. вище).

Застереження SDFGI

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

Крім того, продуктивність погіршиться, якщо камера рухається надто швидко. Це можна виправити двома способами:

  • Переконайтеся, що камера не рухається надто швидко в будь-якій ситуації.

  • Тимчасове вимкнення SDFGI в ресурсі середовища, якщо камеру потрібно рухати з високою швидкістю, а потім увімкнення SDFGI, коли швидкість камери сповільнюється.

Коли SDFGI увімкнено, для повної конвергенції глобального освітлення також знадобиться деякий час (25 кадрів за замовчуванням). Це може створити помітний ефект переходу, поки GI все ще зближується. Щоб приховати це, ви можете використовувати вузол ColorRect, який охоплює все вікно перегляду та зникає під час перемикання сцен за допомогою вузла AnimationPlayer.

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

Різкі відблиски SDFGI помітні лише на непрозорих матеріалах. Прозорі матеріали використовуватимуть лише грубі відображення, навіть якщо шорсткість матеріалу нижча за 0,2.