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...
Об'ємний туман і об'єми туману
Примітка
Об’ємний туман підтримується лише у засобах візуалізації Forward+, а не для мобільних і сумісних рендерів.
Як описано в Середовище та пост-обробка, Godot підтримує різні візуальні ефекти, включаючи два типи туману: традиційний (необ’ємний) туман і об’ємний туман. Традиційний туман впливає на всю сцену одночасно, і його не можна налаштувати за допомогою Туманні шейдери.
За бажання об’ємний туман можна використовувати одночасно з необ’ємним.
На цій сторінці ви дізнаєтеся:
Як налаштувати об'ємний туман в Godot.
Що таке об’єми туману і чим вони відрізняються від «глобального» об’ємного туману.
Дивись також
Ви можете побачити, як об’ємний туман працює в дії, використовуючи демонстраційний проект Volumetric Fog <https://github.com/godotengine/godot-demo-projects/tree/master/3d/volumetric_fog>`__.
Ось порівняння між традиційним туманом (який не взаємодіє з освітленням) і об’ємним туманом, який здатний взаємодіяти з освітленням:
Об'ємні властивості туману
Після ввімкнення об’ємного туману в ресурсі середовища вузла WorldEnvironment ви можете редагувати такі властивості:
Щільність: базова експоненціальна густина об’ємного туману. Встановіть найнижчу щільність, яку ви хочете мати в усьому світі. FogVolumes можна використовувати для додавання або віднімання цієї щільності в певних областях. Значення
0.0вимикає глобальний об’ємний туман, але дозволяє FogVolumes відображати об’ємний туман у певних областях. Відтворення туману є експоненціальним, як і в реальному житті.Альбедо: Колір об’ємного туману під час взаємодії з вогнями. Туман і туман мають альбедо, близьке до білого (
Color(1, 1, 1, 1)), тоді як дим має темніше альбедо.Випромінювання: світло, яке випромінює об’ємний туман. Навіть з випромінюванням, об'ємний туман не буде проливати світло на інші поверхні. Випромінювання корисне для встановлення навколишнього кольору. Оскільки ефект об’ємного туману використовує лише одноразове розсіювання, туману, як правило, потрібна невелика кількість випромінювання, щоб пом’якшити різкі тіні.
Енергія випромінювання: яскравість випромінюваного світла від об’ємного туману.
GI Inject: масштабує силу глобального освітлення, що використовується в кольорі альбедо об’ємного туману. Значення
0.0означає, що глобальне освітлення не впливатиме на об’ємний туман. Це має невелику вартість продуктивності, якщо встановлено вище0.0.Анізотропія: Напрямок розсіяного світла, коли воно проходить крізь об'ємний туман. Значення, близьке до
1,0, означає, що майже все світло розсіюється вперед. Значення, близьке до0,0, означає, що світло розсіюється однаково в усіх напрямках. Значення, близьке до-1,0, означає, що світло розсіюється переважно назад. Туман і імла трохи розсіюють світло вперед, тоді як дим розсіює світло однаково в усіх напрямках.Довжина: відстань, на якій обчислюється об’ємний туман. Збільште, щоб обчислити туман на більшій відстані, зменшіть, щоб додати більше деталей, коли велика відстань не потрібна. Для найкращої якості туману тримайте його якомога нижче.
Розширення деталей: Розподіл розміру по довжині буфера фрокселя. Більше значення стискає фрокселі ближче до камери та розміщує більше деталей ближче до камери.
Ambient Inject: масштабує силу навколишнього освітлення, що використовується в об’ємному тумані. Значення
0.0означає, що навколишнє освітлення не впливатиме на об’ємний туман. Це має невелику вартість продуктивності, якщо встановлено вище0.0.Вплив неба: контролює, скільки об’ємного туману має бути намальовано на фоні неба. Якщо встановлено значення
0.0, об’ємний туман взагалі не впливатиме на візуалізацію неба (включаючи FogVolumes).
Дві додаткові властивості пропонуються в розділі Тимчасова репроекція:
Часова репроекція > Увімкнено: Вмикає часову репроекцію в об'ємному тумані. Часова репроекція поєднує об'ємний туман поточного кадру з об'ємним туманом останнього кадру, щоб згладити нерівні краї. Втрата продуктивності мінімальна, проте це призводить до "привидів" переміщення FogVolumes та Light3D та залишення сліду за ними. Коли часова репроекція ввімкнена, намагайтеся уникати занадто швидкого переміщення FogVolumes або Light3D. Для короткочасних динамічних світлових ефектів слід встановити Енергію об'ємного туману на
0.0, щоб уникнути привидів.Тимчасова репроекція > Кількість: Величина, на яку змішується останній кадр із поточним кадром. Більше число призводить до більш гладкого об’ємного туману, але значно погіршує «ореоли». Менше значення зменшує ореоли, але може призвести до того, що часове тремтіння кадру стане видимим.
Примітка
На відміну від необ’ємного туману, об’ємний туман має кінцевий діапазон. Це означає, що об’ємний туман не може повністю покрити великий світ, оскільки з часом він перестане відтворюватися на відстані.
Якщо ви хочете приховати від гравця віддалені області, рекомендується одночасно ввімкнути необ’ємний і об’ємний туман і відповідно налаштувати їх щільність.
Взаємодія світла з об'ємним туманом
Щоб імітувати поведінку розсіювання туманного світла в реальному житті, усі типи світла взаємодіятимуть з об’ємним туманом. Наскільки кожне світло впливатиме на об’ємний туман, можна налаштувати за допомогою властивості Volumetric Fog Energy для кожного світла. Увімкнення тіней на світлі також зробить ці тіні видимими на об’ємному тумані.
Якщо взаємодія протитуманних фар небажана з художніх міркувань, це можна глобально вимкнути, встановивши для Volumetric Fog > Albedo чистий чорний колір у ресурсі Environment. Взаємодію протитуманних фар також можна вимкнути для певних вогнів, встановивши для параметра Volumetric Fog Energy значення 0. Це також трохи покращить продуктивність, виключивши світло з обчислень об’ємного туману.
Використання об'ємного туману як об'ємного освітлювального рішення
Хоча це фізично неточно, можна налаштувати параметри об’ємного туману, щоб він працював як об’ємне освітлювальне рішення. Це означає, що неосвітлені частини навколишнього середовища більше не будуть затемнені туманом, але світло все одно зможе зробити туман яскравішим у певних областях.
Цього можна досягти, встановивши об'ємну щільність туману на найнижче дозволене значення більше за нуль (0.0001), а потім збільшивши властивість Об'ємна енергія туману на ліхтарях до значно вищих значень, ніж значення за замовчуванням, для компенсації. Значення від 200.0 до 5000.0 зазвичай добре підходять для цього.
Баланс продуктивності та якості
Є кілька параметрів проекту, доступних для налаштування об’ємного туману та якості:
Візуалізація > Середовище > Об’ємний туман > Розмір об’єму: Базовий розмір, який використовується для визначення розміру буфера фрокселя на осі X та Y камери. Остаточний розмір масштабується за співвідношення сторін екрана, тому фактичні значення можуть відрізнятися від встановлених. Встановіть більший розмір для більш детального туману, встановіть менший розмір для кращої продуктивності.
Візуалізація > Середовище > Об’ємний туман > Глибина об’єму: Кількість фрагментів, які потрібно використовувати вздовж глибини буфера фрокселя для об’ємного туману. Менше число буде більш ефективним, але може призвести до появи артефактів під час руху камери.
Візуалізація > Середовище > Об’ємний туман > Використовувати фільтр: вмикає фільтрацію ефекту об’ємного туману перед інтеграцією. Це суттєво розмиває туман, що зменшує дрібні деталі, але також згладжує різкі краї та артефакти згладжування. Вимкніть, якщо потрібно більше деталей.
Примітка
Об’ємний туман може спричинити появу смуг у вікні перегляду, особливо при вищих рівнях щільності. Перегляньте Розшарування кольорів, щоб отримати вказівки щодо зменшення смуг.
Використання об’ємів туману для локального об’ємного туману
Іноді потрібно, щоб туман був обмежений певними областями. І навпаки, ви можете мати глобальний об’ємний туман, але туман слід виключити з певних областей. Обидва підходи можна використовувати за допомогою вузлів FogVolume.
Ось короткий посібник із використання FogVolumes:
Переконайтеся, що Volumetric Fog увімкнено у властивостях середовища. Якщо глобальний об’ємний туман небажаний, установіть його Щільність на
0.0.Створіть вузол FogVolume.
Призначте новий FogMaterial властивості Material вузла FogVolume.
У FogMaterial встановіть Density додатне значення, щоб збільшити щільність у межах FogVolume, або від’ємне значення, щоб відняти щільність від глобального об’ємного туману.
За потреби налаштуйте розміри та форму FogVolume.
Примітка
Тонкі об’єми туману можуть мерехтіти, коли камера рухається або обертається. Це можна пом’якшити, збільшивши параметр проекту Відтворення > Середовище > Об’ємний туман > Глибина об’єму (за ціною продуктивності) або зменшивши Довжину у властивостях об’ємного туману середовища (без витрат на продуктивність, але за вартість нижчого діапазону туману). Крім того, FogVolume можна зробити товщим і використовувати нижчу щільність у Матеріалі.
Властивості FogVolume
Обсяги: розмір FogVolume, коли Shape є Еліпсоїд, Конус, Циліндр або Коробка. Якщо Форма має значення Конус або Циліндр, конус/циліндр буде налаштовано відповідно до розмірів. Нерівномірне масштабування форм конуса/циліндра за допомогою властивості Extents не підтримується, але замість цього можна масштабувати вузол FogVolume.
Shape: Форма FogVolume. Це можна встановити як Еліпсоїд, Конус, Циліндр, Коробка або Світ (діє як глобальний об’ємний туман).
Матеріал: Матеріал, який використовує FogVolume. Може бути або вбудованим FogMaterial, або спеціальним ShaderMaterial (Туманні шейдери).
Після вибору New FogMaterial у властивості Material ви можете налаштувати наступні властивості у FogMaterial:
Щільність: Щільність FogVolume. Більш щільні об’єкти більш непрозорі, але можуть страждати від артефактів недостатньої вибірки, які виглядають як смуги. Від’ємні значення можна використовувати для віднімання туману від інших FogVolumes або глобального об’ємного туману.
Альбедо: Колір одноразового розсіювання FogVolume. Внутрішньо альбедо члена перетворюється на одиночне розсіювання, яке додатково поєднується з іншими об’ємами туману та альбедо глобального об’ємного туману.
Випромінювання: Колір світла, випромінюваного FogVolume. Випромінюване світло не відкидає світло чи тіні на інші об’єкти, але може бути корисним для модуляції кольору FogVolume незалежно від джерел світла.
Зменшення висоти: Швидкість, з якою густина туману на основі висоти зменшується зі збільшенням висоти у світовому просторі. Високий спад призведе до різкого переходу, тоді як низький спад призведе до більш плавного переходу. Значення
0.0призводить до рівномірної щільності туману. Порогове значення висоти визначається висотою пов’язаного FogVolume.Edge Fade: Жорсткість країв FogVolume. Більше значення призведе до більш м’яких країв, тоді як нижче значення призведе до жорсткіших країв.
Текстура густини: 3D-текстура, яка використовується для масштабування щільності елементів FogVolume. Це можна використовувати для зміни щільності туману в межах FogVolume з будь-яким статичним шаблоном. Для анімованих ефектів подумайте про використання спеціального fog shader. Ви можете імпортувати будь-яке зображення як 3D-текстуру, changing its import type in the Import dock.
Використання 3D текстур щільності шуму
Починаючи з Godot 4.1, існує ресурс NoiseTexture3D, який можна використовувати для процедурного генерування тривимірного шуму. Це добре підходить для текстур щільності FogMaterial, що може призвести до більш детальних ефектів туману:
Знімок екрана зроблено з параметром проекту Volume Size, встановленим на 192, щоб зробити високочастотні деталі більш помітними в тумані.
Для цього виберіть властивість Density Texture і виберіть New NoiseTexture3D. Відредагуйте цей NoiseTexture3D, клацнувши його, потім клацніть Noise у нижній частині властивостей NoiseTexture3D і виберіть New FastNoiseLite. Відрегулюйте ширину, висоту та глибину текстури шуму відповідно до розмірів об’єму туману.
Щоб підвищити продуктивність, рекомендується використовувати малі розміри текстур (64×64×64 або менше), оскільки високочастотні деталі важко помітити у FogVolume. Якщо ви бажаєте відобразити більш детальні варіації щільності, вам потрібно буде збільшити Відтворення > Середовище > Об’ємний туман > Розмір об’єму в налаштуваннях проекту, що має вартість продуктивності.
Примітка
Color Ramp у NoiseTexture3D впливає на текстури щільності FogMaterial, але оскільки відбирається лише червоний канал текстури, лише червоний канал кольору впливає на кінцеву щільність.
Однак використання кольорового нахилу не відтінить об’єм туману відповідно до текстури. Щоб досягти цього, вам знадобиться використовувати спеціальний шейдер, який читає Texture3D.
Спеціальні шейдери FogVolume
Ця сторінка охоплює лише вбудовані налаштування, які пропонує FogMaterial. Якщо вам потрібно налаштувати поведінку туману у вузлі FogVolume (наприклад, створити анімований туман), зовнішній вигляд вузлів FogVolume можна налаштувати за допомогою Туманні шейдери.
Підробка об'ємного туману за допомогою квадроциклів
У деяких випадках може бути краще використовувати спеціально налаштовані QuadMeshes як альтернативу об’ємному туману:
Квадроцикли працюють із будь-яким методом візуалізації, включаючи мобільний і сумісний.
Для плавного вигляду квадроциклів не потрібна часова репроекція, що робить їх придатними для швидкозмінних динамічних ефектів, таких як лазери. Вони також можуть відображати дрібні деталі, які об'ємний туман не може зробити ефективно.
Квадроцикли зазвичай мають нижчу вартість продуктивності, ніж об’ємні тумани.
Однак цей підхід має кілька недоліків:
Ефект туману має менш реалістичне падіння, особливо якщо камера потрапляє в туман.
Якщо спрайти накладаються, можуть виникнути проблеми з сортуванням прозорості.
Продуктивність не обов’язково буде кращою, ніж об’ємний туман, якщо поблизу камери багато спрайтів.
Щоб створити туманний спрайт на основі QuadMesh:
Створіть вузол MeshInstance3D із ресурсом QuadMesh у властивості Mesh. Встановіть розмір за бажанням.
Створіть новий StandardMaterial3D у властивості Material сітки.
У StandardMaterial3D встановіть Shading > Shading Mode на Unshaded, Billboard > Mode на Enabled, увімкніть Proximity Fade і встановіть Distance Fade на Pixel Alpha.
Встановіть Альбедо > Текстура на текстуру нижче (клацніть правою кнопкою миші та виберіть Зберегти як…):
Після встановлення текстури альбедо перейдіть до док-станції «Імпорт», виберіть текстуру та змініть її режим стиснення на Без втрат, щоб покращити якість.
Колір туману встановлюється за допомогою властивості Альбедо > Колір; його щільність встановлюється за допомогою альфа-каналу кольору. Щоб отримати найкращі результати, вам доведеться налаштувати Згасання наближення > Відстань і Згасання на відстані > Макс. відстань залежно від розміру вашого QuadMesh.
Додатково рекламний щит можна залишити вимкненим, якщо розташувати чотирикутник таким чином, щоб усі його кути були суцільною геометрією. Це може бути корисним для запотівання великих площин, у які камера не може потрапити, наприклад бездонних ям.