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.

Туманні шейдери

Шейдери туману використовуються для визначення того, як туман додається (або віднімається) до сцени в заданій області. Шейдери туману завжди використовуються разом з FogVolumes та об'ємним туманом. Шейдери туману мають лише одну функцію обробки, функцію fog().

Роздільна здатність шейдерів туману залежить від роздільної здатності фроксельної сітки об’ємного туману. Відповідно, рівень деталізації, який може додати туманний шейдер, залежить від того, наскільки близько FogVolume знаходиться до камери.

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

Вбудовані

Значення, позначені як in, доступні лише для читання. Значення, помічені як out, можуть бути записані за бажанням і не обов’язково міститимуть розумні значення. До семплерів не можна писати, тому вони не позначені.

Глобальні вбудовані функції

Глобальні вбудовані засоби доступні скрізь, у тому числі в користувацьких функціях.

Вбудований

Опис

In float TIME

Глобальний час з моменту запуску двигуна, у секундах. Повторюється кожні 3600 секунд (що можна змінити за допомогою налаштування rollover). На нього впливає time_scale, але не пауза. Якщо вам потрібна змінна TIME, на яку не впливає шкала часу, додайте власну global shader uniform та оновлюйте її кожного кадру.

у float PI

Константа типу PI (3,141592). Відношення довжини кола до його діаметра та кількість радіан за півоберту.

у float TAU

Константа типу TAU (6.283185). Еквівалентна PI * 2 та кількості радіан у повному оберті.

у float E

Константа E (2.718281). Число Ейлера, основа натурального логарифма.

Вбудовані протитуманки

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

Вбудований

Опис

In vec3 WORLD_POSITION

Положення сучасної клітини фрокселя у світовому просторі.

In vec3 OBJECT_POSITION

Положення центру поточного FogVolume у світовому просторі.

In vec3 UVW

3-вимірний UV, який використовується для відображення 3D-текстури в поточному FogVolume.

In vec3 SIZE

Розмір поточного FogVolume, коли його shape має розмір.

In vec3 SDF

Поле відстані зі знаком до поверхні FogVolume. Негативний, якщо внутрішній об’єм, позитивний – інакше.

Out vec3 ALBEDO

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

Out float DENSITY

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

Out vec3 EMISSION

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