Просторові шейдери

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

Режими візуалізації

Для наочних прикладів цих режимів візуалізації див Standard Material 3D and ORM Material 3D.

Режим візуалізації

Опис

Blend_mix

Режим змішування (альфа — це прозорість), за замовчуванням.

Blend_add

Режим адитивного змішування.

Blend_sub

Режим субтрактивного змішування.

Blend_mul

Мультиплікативний режим змішування.

Blend_premul_alpha

Режим альфа-змішування з попереднім множенням (повністю прозорий = додати, повністю непрозорий = змішати).

Depth_draw_opaque

Намалюйте глибину лише для непрозорої геометрії (не прозорої).

Depth_draw_always

Завжди малюйте глибину (непрозору та прозору).

Depth_draw_never

Ніколи не малюйте глибину.

Depth_prepass_alpha

Виконайте попередній проход непрозорої глибини для прозорої геометрії.

Depth_test_disabled

Вимкнути перевірку глибини.

sss_mode_skin

Режим підповерхневого розсіювання для шкіри (оптимізує візуальні ефекти для шкіри людини, наприклад посилений червоний канал).

Cull_back

Вилучити зворотні грані (за замовчуванням).

Cull_front

Вибракуйте передні особи.

Cull_disabled

Вибракування вимкнено (двостороннє).

Unshaded

Результат - просто альбедо. У матеріалі не відбувається освітлення/затінення, що робить його рендеринг швидшим.

Wireframe

Геометрія малює за допомогою ліній (корисно для усунення несправностей).

debug_shadow_splits

Спрямовані тіні малюються різними кольорами для кожного розбиття (корисно для усунення несправностей).

Diffuse_burley

Burley (Disney PBS) для дифузного (за замовчуванням).

Diffuse_lambert

Штрихування Ламберта для дифузного.

Diffuse_lambert_wrap

Затінення Ламберта (залежно від шорсткості) для дифузного.

Diffuse_toon

Затінення мультфільмів для дифузного.

Specular_schlick_ggx

Schlick-GGX для дзеркальних пелюсток прямого світла (за замовчуванням).

Specular_toon

Мультфільм для прямого світла дзеркальних часток.

Specular_disabled

Вимкніть дзеркальні пелюстки прямого світла. Не впливає на відбите світло (замість цього використовуйте SPECULAR = 0.0).

Skip_vertex_transform

VERTEX, NORMAL, TANGENT і BITANGENT потрібно перетворити вручну у функції vertex().

World_vertex_coords

VERTEX, NORMAL, TANGENT і BITANGENT змінено у світовому просторі замість простору моделі.

Ensure_correct_normals

Використовуйте, коли до сітки застосовується нерівномірний масштаб (примітка: наразі не реалізовано).

Shadows_disabled

Вимкнути обчислення тіней у шейдері. Шейдер не отримуватиме тіні, але все одно зможе їх відкидати.

Ambient_light_disabled

Вимкнути внески з карти навколишнього освітлення та сяйва.

Shadow_to_opacity

Світло змінює альфа канал так щоби зробити видимою лише затінену частину об'єкта. Може знадобитись, якщо потрібно накласти тінь відео з камери в доповненій реальності.

Vertex_lighting

Використовуйте освітлення на основі вершин замість попіксельного освітлення.

Particle_trails

Вмикає сліди при використанні на геометрії частинок.

Alpha_to_coverage

Режим альфа-згладжування, докладніше див. тут.

Alpha_to_coverage_and_one

Режим альфа-згладжування, докладніше див. тут.

Fog_disabled

Вимкніть отримання глибинного або об'ємного туману. Корисно для матеріалів blend_add, таких як частинки.

Вбудовані

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

Не всі вбудовані функції доступні у всіх функціях обробки. Щоб отримати доступ до вбудованої вершини з функції fragment(), ви можете використовувати varying. Те саме стосується доступу до вбудованих фрагментів із функції light().

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

Глобальні вбудовані функції доступні скрізь, включаючи спеціальні функції.

Вбудований

Опис

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). Число Ейлера та основа натурального логарифма.

In bool OUTPUT_IS_SRGB

true, коли виводиться в просторі кольорів sRGB (це true у рендерері сумісності, false у Forward+ і Mobile).

у float CLIP_SPACE_FAR

Відсічене значення дальнього значення z. У програмах візуалізації Forward+ або Mobile це 0.0. У засобі відтворення сумісності це -1.0.

Вбудовані вершини

Дані вершин (VERTEX, NORMAL, TANGENT і BITANGENT) представлені в просторі моделі (також називається локальним простором). Якщо не записувати, ці значення не буде змінено та передано, як вони надійшли, а потім перетворено у простір перегляду для використання у fragment().

Додатково їх можна представити у світовому просторі за допомогою режиму візуалізації world_vertex_coords.

Користувачі можуть вимкнути вбудоване перетворення представлення моделі (проекція все одно відбудеться пізніше) і зробити це вручну за допомогою такого коду:

shader_type spatial;
render_mode skip_vertex_transform;

void vertex() {
    VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz;
    NORMAL = normalize((MODELVIEW_MATRIX * vec4(NORMAL, 0.0)).xyz);
    BINORMAL = normalize((MODELVIEW_MATRIX * vec4(BINORMAL, 0.0)).xyz);
    TANGENT = normalize((MODELVIEW_MATRIX * vec4(TANGENT, 0.0)).xyz);
}

Інші вбудовані функції, такі як UV, UV2 і COLOR, також передаються до функції fragment(), якщо не змінено.

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

Для створення екземплярів змінна INSTANCE_CUSTOM містить користувацькі дані екземпляра. При використанні частинок ця інформація зазвичай така:

  • x: Кут повороту в радіанах.

  • y: Фаза протягом життя (0,0 до 1,0).

  • z: рамка анімації.

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

Вбудований

Опис

у vec2 VIEWPORT_SIZE

Розмір вікна перегляду (у пікселях).

in mat4 VIEW_MATRIX

Світовий простір для перегляду космічного перетворення.

in mat4 INV_VIEW_MATRIX

Перетворення простору погляду на світовий простір.

In mat4 MAIN_CAM_INV_VIEW_MATRIX

Перетворення простору перегляду у простір світу камери, яка використовується для малювання поточного вікна перегляду.

In mat4 INV_PROJECTION_MATRIX

Обрізайте простір, щоб переглянути трансформацію простору.

in vec3 NODE_POSITION_WORLD

Положення вузла, у світовому просторі.

in vec3 NODE_POSITION_VIEW

Положення вузла, у просторі огляду.

in vec3 CAMERA_POSITION_WORLD

Camera position, in world space. Represents the midpoint of the two eyes when in multiview/stereo rendering.

in vec3 CAMERA_DIRECTION_WORLD

Напрямок камери, у світовому просторі.

In uint CAMERA_VISIBLE_LAYERS

Вилучити шари камери, що рендерить поточний прохід.

In int INSTANCE_ID

Ідентифікатор екземпляра для створення екземпляра.

In vec4 INSTANCE_CUSTOM

Користувацькі дані екземпляра (переважно для частинок).

in int VIEW_INDEX

Вид, який ми представляємо. VIEW_MONO_LEFT (0) для моно (не мультиракурсу) або лівого ока, VIEW_RIGHT (1) для правого ока.

In int VIEW_MONO_LEFT

Константа для моно або лівого ока, завжди 0.

In int VIEW_RIGHT

Константа для правого ока, завжди 1.

In vec3 EYE_OFFSET

Position offset for the eye being rendered, in view space. Only applicable for multiview rendering.

Inout vec3 VERTEX

Положення вершини в просторі моделі. У світовому просторі, якщо використовується world_vertex_coords.

In int VERTEX_ID

Індекс поточної вершини в буфері вершин.

Inout vec3 NORMAL

Нормальний у модельному просторі. У світовому просторі, якщо використовується world_vertex_coords.

Inout vec3 TANGENT

Дотична в просторі моделі. У світовому просторі, якщо використовується world_vertex_coords.

Inout vec3 BINORMAL

Бінормаль у просторі моделі. У світовому просторі, якщо використовується world_vertex_coords.

Out vec4 POSITION

У разі запису, перевизначає кінцеву позицію вершини в просторі відсікання.

Inout vec2 UV

Основний УФ канал.

Inout vec2 UV2

УФ вторинний канал.

Inout vec4 COLOR

Колір з вершин.

Out float ROUGHNESS

Шорсткість для вершинного освітлення.

Inout float POINT_SIZE

Розмір точки для відтворення точки.

Inout mat4 MODELVIEW_MATRIX

Модель/локальний простір для перегляду трансформації простору (використовуйте, якщо можливо).

Inout mat3 MODELVIEW_NORMAL_MATRIX

In mat4 MODEL_MATRIX

Перетворення моделі/локального простору у світовий простір.

In mat3 MODEL_NORMAL_MATRIX

Inout mat4 PROJECTION_MATRIX

Перегляд простору для перетворення простору кліпу.

In uvec4 BONE_INDICES

In vec4 BONE_WEIGHTS

In vec4 CUSTOM0

Спеціальне значення з примітиву вершини. При використанні додаткових UV, xy є UV3 і zw є UV4.

In vec4 CUSTOM1

Спеціальне значення з примітиву вершини. При використанні додаткових УФ, xy дорівнює UV5, а zw дорівнює UV6.

In vec4 CUSTOM2

Спеціальне значення з примітиву вершини. При використанні додаткових УФ, xy дорівнює UV7, а zw дорівнює UV8.

In vec4 CUSTOM3

Спеціальне значення з примітиву вершини.

Примітка

MODELVIEW_MATRIX поєднує як MODEL_MATRIX, так і VIEW_MATRIX і краще підходить, коли можуть виникнути проблеми з плаваючою комою. Наприклад, якщо об’єкт знаходиться дуже далеко від джерела світу, ви можете зіткнутися з проблемами з плаваючою комою під час використання розділених MODEL_MATRIX і VIEW_MATRIX.

Примітка

INV_VIEW_MATRIX — це матриця, яка використовується для відтворення об’єкта в цьому проході, на відміну від MAIN_CAM_INV_VIEW_MATRIX, яка є матрицею камери в сцені. У тіньовому проході вид INV_VIEW_MATRIX базується на камері, розташованій у місці світла.

Фрагмент вбудованих

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

Вбудований

Опис

у vec2 VIEWPORT_SIZE

Розмір вікна перегляду (у пікселях).

In vec4 FRAGCOORD

Координата центру пікселя в просторі екрана. xy вказує позицію у вікні. Початок ліворуч внизу. z визначає глибину фрагмента. Він також використовується як вихідне значення для глибини фрагмента, якщо не вказано DEPTH.

In bool FRONT_FACING

true, якщо поточне обличчя спрямоване спереду, false інакше.

In vec3 VIEW

Нормований вектор від положення фрагмента до камери (у просторі огляду). Це однаково як для перспективних, так і для ортогональних камер.

In vec2 UV

UV, що надходить із функції vertex().

In vec2 UV2

UV2, який походить від функції vertex().

In vec4 COLOR

COLOR, отриманий від функції vertex().

In vec2 POINT_COORD

Координата точки для малювання точок із POINT_SIZE.

In mat4 MODEL_MATRIX

Перетворення моделі/локального простору у світовий простір.

In mat3 MODEL_NORMAL_MATRIX

Перетворення моделі/локального простору у світовий простір для нормалей. Це те саме, що MODEL_MATRIX за замовчуванням, якщо об’єкт не масштабується нерівномірно, у цьому випадку це встановлено на transpose(inverse(mat3(MODEL_MATRIX))).

in mat4 VIEW_MATRIX

Світовий простір для перегляду космічного перетворення.

in mat4 INV_VIEW_MATRIX

Перетворення простору погляду на світовий простір.

In mat4 PROJECTION_MATRIX

Перегляд простору для перетворення простору кліпу.

In mat4 INV_PROJECTION_MATRIX

Обрізайте простір, щоб переглянути трансформацію простору.

in vec3 NODE_POSITION_WORLD

Положення вузла, у світовому просторі.

in vec3 NODE_POSITION_VIEW

Положення вузла, у просторі огляду.

in vec3 CAMERA_POSITION_WORLD

Camera position, in world space. Represents the midpoint of the two eyes when in multiview/stereo rendering.

in vec3 CAMERA_DIRECTION_WORLD

Напрямок камери, у світовому просторі.

In uint CAMERA_VISIBLE_LAYERS

Вилучити шари камери, що рендерить поточний прохід.

In vec3 VERTEX

Положення фрагмента (пікселя) у просторі огляду. Це значення VERTEX з vertex(), інтерпольоване між вершинами грані та перетворене у простір перегляду. Якщо skip_vertex_transform увімкнено, його може не бути в області перегляду.

Inout vec3 LIGHT_VERTEX

Записувана версія VERTEX, яку можна використовувати для зміни світла та тіней. Запис до цього не змінить положення фрагмента.

in int VIEW_INDEX

Вид, який ми представляємо. Використовується для розрізнення переглядів у багатопрозорому/стерео візуалізації. VIEW_MONO_LEFT (0) для моно (не мультиракурсу) або лівого ока, VIEW_RIGHT (1) для правого ока.

In int VIEW_MONO_LEFT

Константа для моно або лівого ока, завжди 0.

In int VIEW_RIGHT

Константа для правого ока, завжди 1.

In vec3 EYE_OFFSET

Position offset for the eye being rendered, in view space. Only applicable for multiview rendering.

Sampler2D SCREEN_TEXTURE

Видалено в Godot 4. Замість цього використовуйте sampler2D з hint_screen_texture.

In vec2 SCREEN_UV

УФ-координата екрана для поточного пікселя.

Sampler2D DEPTH_TEXTURE

Видалено в Godot 4. Замість цього використовуйте sampler2D з hint_depth_texture.

Out float DEPTH

Спеціальне значення глибини (діапазон [0.0, 1.0]). Якщо DEPTH записується в будь-якій гілці шейдера, тоді ви несете відповідальність за встановлення DEPTH для всіх інших гілок. Інакше графічний API залишить їх неініціалізованими.

Inout vec3 NORMAL

Звичайний, який походить від функції vertex(), у просторі перегляду. Якщо skip_vertex_transform увімкнено, його може не бути в області перегляду.

Inout vec3 TANGENT

Дотична, отримана від функції vertex(), у просторі перегляду. Якщо skip_vertex_transform увімкнено, його може бути не в області перегляду.

Inout vec3 BINORMAL

Бінормаль, що походить від функції vertex(), у просторі перегляду. Якщо ввімкнуто skip_vertex_transform, його може не бути в області перегляду.

Out vec3 NORMAL_MAP

Встановіть нормальний тут, якщо зчитування звичайного з текстури замість NORMAL.

Out float NORMAL_MAP_DEPTH

Глибина з NORMAL_MAP. За замовчуванням 1.0.

Out vec3 ALBEDO

Альбедо (за замовчуванням білий). Базовий колір.

Out float ALPHA

Альфа (діапазон [0.0, 1.0]). Якщо зчитувати або записувати, матеріал буде передано в прозорий конвеєр.

Out float ALPHA_SCISSOR_THRESHOLD

У разі запису значення, нижчі за певну кількість альфа, відкидаються.

Out float ALPHA_HASH_SCALE

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

Out float ALPHA_ANTIALIASING_EDGE

Порогове значення, нижче якого слід використовувати згладжування альфа-покриття. За замовчуванням 0.0. Потрібен режим візуалізації alpha_to_coverage. Для ефективності має бути встановлено значення, нижче за ALPHA_SCISSOR_THRESHOLD.

Out vec2 ALPHA_TEXTURE_COORDINATE

Координата текстури, яка використовується для згладжування альфа-покриття. Потрібен режим візуалізації alpha_to_coverage. Зазвичай встановлюється на UV * vec2(albedo_texture_size), де albedo_texture_size — це розмір текстури альбедо в пікселях.

вихідний float PREMUL_ALPHA_FACTOR

Попередньо помножений альфа-фактор. Ефективно, лише якщо використовується render_mode blend_premul_alpha;. Це слід записати, коли використовується затінений матеріал із попередньо помноженим альфа-змішуванням для взаємодії з освітленням. Це не потрібно для незаштрихованих матеріалів.

Out float METALLIC

Металевий (діапазон [0.0, 1.0]).

Out float SPECULAR

Specular (фізично не точний для зміни). За замовчуванням 0,5. 0.0 вимикає відображення.

Out float ROUGHNESS

Шорсткість (діапазон [0.0, 1.0]).

Out float RIM

Обріз (діапазон [0.0, 1.0]). Якщо використовується, Godot обчислює освітлення обода. Розмір обода залежить від ШОРСТОСТІ.

Out float RIM_TINT

Відтінок обода, діапазон від 0.0 (білий) до 1.0 (альбедо). Якщо використовується, Godot обчислює освітлення обода.

Out float CLEARCOAT

Маленька дзеркальна крапка додана поверх існуючої. Якщо використовується, Godot розраховує прозорий лак.

Out float CLEARCOAT_GLOSS

Блиск лаку. Якщо використовується, Godot розраховує прозорий лак.

Out float ANISOTROPY

Для спотворення дзеркальної краплі відповідно до дотичного простору.

Out vec2 ANISOTROPY_FLOW

Напрям спотворення, використовуйте з картами потоку.

Out float SSS_STRENGTH

Сила підповерхневого розсіювання. Якщо використовується, до об’єкта буде застосовано підповерхневе розсіювання.

Out vec4 SSS_TRANSMITTANCE_COLOR

Колір пропускання підповерхневого розсіювання. Якщо використовується, до об’єкта буде застосовано коефіцієнт пропускання підповерхневого розсіювання.

Out float SSS_TRANSMITTANCE_DEPTH

Глибина пропускання підповерхневого розсіювання. Вищі значення дозволяють ефекту проникати глибше в об’єкт.

Out float SSS_TRANSMITTANCE_BOOST

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

Inout vec3 BACKLIGHT

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

Out float AO

Сила амбієнтної оклюзії. Для використання з попередньо випеченим АО.

Out float AO_LIGHT_AFFECT

Наскільки навколишня оклюзія впливає на пряме світло (діапазон [0.0, 1.0], за умовчанням 0.0).

Out vec3 EMISSION

Колір випромінювання (може перевищувати (1.0, 1.0, 1.0) для HDR).

Out vec4 FOG

У разі запису змішує кінцевий колір пікселя з FOG.rgb на основі FOG.a.

Out vec4 RADIANCE

Якщо написати, поєднує випромінювання карти середовища з RADIANCE.rgb на основі RADIANCE.a.

Out vec4 IRRADIANCE

Якщо написати, поєднує освітленість карти середовища з IRRADIANCE.rgb на основі IRRADIANCE.a.

Примітка

Шейдери, що проходять через прозорий конвеєр, коли записується ALPHA, можуть виявляти проблеми з сортуванням прозорості. Прочитайте розділ transparency sorting section in the 3D rendering limitations page, щоб дізнатися більше та як уникнути проблем.

Легкі вбудовані

Написання функцій легкого процесора абсолютно необов'язкове. Ви можете пропустити функцію light(), використовуючи режим візуалізації unshaded. Якщо функція освітлення не написана, Godot використовуватиме властивості матеріалу, записані у функції fragment(), щоб обчислити освітлення для вас (залежно від режиму візуалізації).

Функція light() викликається для кожного світла в кожному пікселі. Він викликається в циклі для кожного типу світла.

Нижче наведено приклад спеціальної функції light() з використанням моделі освітлення Ламберта:

void light() {
    DIFFUSE_LIGHT += clamp(dot(NORMAL, LIGHT), 0.0, 1.0) * ATTENUATION * LIGHT_COLOR / PI;
}

Якщо ви хочете, щоб світло складалося разом, додайте внесок світла в DIFFUSE_LIGHT за допомогою +=, а не перезаписуйте його.

Попередження

Функція light() не запускатиметься, якщо ввімкнено режим візуалізації vertex_lighting або якщо Rendering > Quality > Shading > Force Vertex Shading увімкнено в налаштуваннях проекту. (Це ввімкнено за замовчуванням на мобільних платформах.)

Вбудований

Опис

у vec2 VIEWPORT_SIZE

Розмір вікна перегляду (у пікселях).

In vec4 FRAGCOORD

Координата центру пікселя в просторі екрана. xy вказує позицію у вікні, z визначає глибину фрагмента, якщо DEPTH не використовується. Початок нижній лівий.

In mat4 MODEL_MATRIX

Перетворення моделі/локального простору у світовий простір.

in mat4 INV_VIEW_MATRIX

Перетворення простору погляду на світовий простір.

in mat4 VIEW_MATRIX

Світовий простір для перегляду космічного перетворення.

In mat4 PROJECTION_MATRIX

Перегляд простору для перетворення простору кліпу.

In mat4 INV_PROJECTION_MATRIX

Обрізайте простір, щоб переглянути трансформацію простору.

In vec3 NORMAL

Нормальний вектор, у просторі перегляду.

In vec2 SCREEN_UV

УФ-координата екрана для поточного пікселя.

In vec2 UV

UV, що надходить із функції vertex().

In vec2 UV2

UV2, який походить від функції vertex().

In vec3 VIEW

Переглянути вектор, у просторі перегляду.

In vec3 LIGHT

Світло вектор, у просторі подання.

In vec3 LIGHT_COLOR

Light color, помножений на light energy, помножену на PI. Множення PI присутнє, оскільки фізичні моделі освітлення включають ділення на PI.

In float SPECULAR_AMOUNT

Для OmniLight3D і SpotLight3D, 2.0, помножене на light_specular. Для DirectionalLight3D, 1.0.

In bool LIGHT_IS_DIRECTIONAL

true, якщо цей пропуск є a DirectionalLight3D.

In float ATTENUATION

Затухання на основі відстані або тіні.

In vec3 ALBEDO

Базове альбедо.

In vec3 BACKLIGHT

In float METALLIC

Металік.

In float ROUGHNESS

Шорсткість.

Out vec3 DIFFUSE_LIGHT

Результат розсіяного світла.

Out vec3 SPECULAR_LIGHT

Результат дзеркального світла.

Out float ALPHA

Альфа (діапазон [0.0, 1.0]). У разі запису матеріал потрапляє в прозорий конвеєр.

Примітка

Шейдери, що проходять через прозорий конвеєр, коли записується ALPHA, можуть виявляти проблеми з сортуванням прозорості. Прочитайте розділ transparency sorting section in the 3D rendering limitations page, щоб дізнатися більше та як уникнути проблем.

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