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.

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

VoxelGI — це форма глобального освітлення в реальному часі, яка призначена для використання в 3D-сценах малого/середнього масштабу. VoxelGI досить вимогливий до графічного процесора, тому його найкраще використовувати, якщо орієнтуватися на виділені відеокарти.

Важливо

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

Дивись також

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

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

VoxelGI вимкнено.

VoxelGI вимкнено.

VoxelGI увімкнено.

VoxelGI увімкнено.

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

  1. Переконайтеся, що вашу геометрію статичного рівня імпортовано з опцією Light Baking, встановленою на Static або Static Lightmaps у док-станції Import. Для доданих вручну вузлів MeshInstance3D переконайтеся, що для властивості Global Illumination > Mode в інспекторі встановлено значення Static.

  2. Створіть вузол VoxelGI у доці дерева сцени.

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

  4. Виберіть вузол VoxelGI та натисніть Запекти у верхній частині вікна перегляду 3D-редактора. Це займе принаймні кілька секунд (залежно від кількості підрозділів VoxelGI та складності сцени).

Якщо принаймні одна сітка, що міститься в екстентах VoxelGI, має режим глобального освітлення Статичний, ви повинні побачити непряме освітлення в сцені.

Примітка

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

Властивості вузла VoxelGI

Наступні властивості можна налаштувати в інспекторі вузлів VoxelGI перед запіканням:

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

  • Обсяги: вказує на розмір коробки, у якій має бути запечене непряме освітлення. Екстенти зосереджені навколо початку вузла VoxelGI.

У ресурсі VoxelGIData, який міститься у вузлі VoxelGI після його запікання, можна налаштувати такі властивості:

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

  • Енергія: Загальна енергія непрямого освітлення. Це також впливає на енергію прямого освітлення, що випромінюється сітками з емісійними матеріалами.

  • Зміщення: Необов’язкове зміщення, додане до пошуку в буфері вокселів під час виконання. Це допомагає уникнути артефактів самоокклюзії.

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

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

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

  • Інтер’єр: якщо ввімкнено, VoxelGI не враховуватиме освітлення неба. Це слід увімкнути в сценах у приміщенні, щоб уникнути витоку світла з навколишнього середовища.

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

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

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

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

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

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

Примітка

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

Для BaseMaterial3D деякі властивості наразі ігноруються під час випікання. Це може вплинути на візуальні ефекти, якщо текстура альбедо або випромінювання матеріалу була розроблена з використанням певних UV-відображень.:

  • UV1 > Зсув

  • UV1 > Масштаб

  • UV1 > Триплощинний

  • Випромінювання > Увімкнено UV2

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

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

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

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

Примітка

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

Дивись також

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

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

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

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

  • Voxel Gi > Quality: Якщо встановлено значення Low замість High, для відстеження воксельного конуса використовуватимуться лише 4 натискання замість 6. Це пришвидшує візуалізацію за рахунок менш вираженої оклюзії навколишнього середовища.

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

Зауважте, що перемикач Додатково має бути ввімкнено в діалоговому вікні налаштувань проекту, щоб наведені вище налаштування були видимими.

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

Зменшення витоків світла та артефактів VoxelGI

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

  • Як для витоку світла, так і для артефактів спробуйте перемістити або повернути вузол VoxelGI, а потім запекти його знову.

  • Щоб загалом боротися з витоком світла, переконайтеся, що геометрія рівня повністю герметична. Найкраще це зробити в програмному забезпеченні 3D-моделювання, яке використовується для проектування рівня, але також можна використовувати примітивні вузли MeshInstance3D з режимом глобального освітлення, встановленим на Static.

  • Щоб боротися з витоком світла з тонкою геометрією, рекомендується зробити цю геометрію товщою. Якщо це неможливо, додайте примітивний вузол MeshInstance3D з глобальним режимом освітлення, встановленим на Static. Знову запікайте VoxelGI, а потім сховайте примітивний вузол MeshInstance3D (його все одно враховуватиме VoxelGI). Для досягнення оптимальних результатів MeshInstance3D має мати матеріал, колір якого відповідає вихідній тонкій геометрії.

  • Щоб боротися з артефактами, які можуть з’являтися на відбиваючих поверхнях, спробуйте збільшити Зміщення та/або Звичайне зміщення на ресурсі VoxelGIData, як описано вище. Не збільшуйте ці значення занадто високо, інакше витік світла стане більш помітним.

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

Крім того, з міркувань продуктивності Godot може змішувати лише 2 вузли VoxelGI в певному пікселі на екрані. Якщо у вас більше 2 вузлів VoxelGI, що перекриваються, глобальне освітлення може мерехтіти під час руху або обертання камери.