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...
Просторові шейдери
Просторові шейдери використовуються для затінення 3D-об'єктів. Вони є найскладнішим типом шейдерів, які пропонує 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 |
Вимкнути перевірку глибини. |
depth_test_default |
Тест глибини відкидає піксель, якщо він знаходиться позаду інших пікселів. Тільки у Forward+ піксель також відкидається, якщо він знаходиться на тій самій глибині, що й інший піксель. |
depth_test_inverted |
Тест глибини відкидає піксель, якщо він знаходиться перед іншими пікселями. Корисно для трафаретних ефектів. |
sss_mode_skin |
Режим підповерхневого розсіювання для шкіри (оптимізує візуальні ефекти для шкіри людини, наприклад посилений червоний канал). |
Cull_back |
Вилучити зворотні грані (за замовчуванням). |
Cull_front |
Вибракуйте передні особи. |
Cull_disabled |
Вибракування вимкнено (двостороннє). |
Unshaded |
Результат - просто альбедо. У матеріалі не відбувається освітлення/затінення, що робить його рендеринг швидшим. |
Wireframe |
Geometry draws using lines (useful for troubleshooting).
When using the Compatibility renderer, you must call
|
debug_shadow_splits |
Спрямовані тіні малюються різними кольорами для кожного розбиття (корисно для усунення несправностей). |
Diffuse_burley |
Burley (Disney PBS) для дифузного (за замовчуванням). |
Diffuse_lambert |
Штрихування Ламберта для дифузного. |
Diffuse_lambert_wrap |
Затінення Ламберта (залежно від шорсткості) для дифузного. |
Diffuse_toon |
Затінення мультфільмів для дифузного. |
Specular_schlick_ggx |
Schlick-GGX для дзеркальних пелюсток прямого світла (за замовчуванням). |
Specular_toon |
Мультфільм для прямого світла дзеркальних часток. |
Specular_disabled |
Вимкніть дзеркальні пелюстки прямого світла. Не впливає на відбите світло (замість цього використовуйте |
Skip_vertex_transform |
|
World_vertex_coords |
|
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 |
Вимкніть отримання глибинного або об'ємного туману. Корисно для матеріалів |
Режими трафаретів
Примітка
Підтримка трафаретів є експериментальною, використовуйте її на свій страх і ризик. Ми намагатимемося максимально не порушувати сумісність, але якщо в API будуть виявлені суттєві недоліки, це може змінитися в наступній мінорній версії.
Трафаретні операції – це набір операцій, які дозволяють записувати дані в ефективний буфер з апаратним прискоренням. Зазвичай це використовується для маскування частин сцени.
Деякі з найвідоміших застосувань:
Контури: Замаскуйте внутрішню сітку, яка обводиться контуром, щоб уникнути внутрішніх контурів.
Рентген: Відображення сітки позаду інших об'єктів.
Портали: Малювання геометрії, яка зазвичай є «неможливою» (неевклідовою), шляхом маскування об'єктів.
Примітка
Ви можете читати лише з буфера трафарету в прозорому проході. Будь-яка спроба читати в непрозорому проході буде невдалою, оскільки ця поведінка наразі не підтримується.
Зверніть увагу, що для ефектів композитора буфер трафарету основного рендерера не можна скопіювати до власної текстури.
Режим трафарету |
Опис |
|---|---|
read |
Зчитування з буфера трафарету. |
write |
Записати значення посилання в буфер трафарету. |
write_if_depth_fail |
Записати опорне значення до буфера трафарету, якщо перевірка глибини не пройшла. |
compare_always |
Завжди проходьте тест трафарету. |
compare_equal |
Пройти перевірку трафарету, якщо опорне значення дорівнює значенню буфера трафарету. |
compare_not_equal |
Пройти перевірку трафарету, якщо опорне значення не дорівнює значенню буфера трафарету. |
compare_less |
Пройти перевірку трафарету, якщо опорне значення менше за значення буфера трафарету. |
compare_less_or_equal |
Пройти перевірку трафарету, якщо опорне значення менше або дорівнює значенню буфера трафарету. |
compare_greater |
Пройти перевірку трафарету, якщо опорне значення більше, ніж значення буфера трафарету. |
compare_greater_or_equal |
Пройти перевірку трафарету, якщо опорне значення більше або дорівнює значенню буфера трафарету. |
Вбудовані
Значення, позначені як in, доступні лише для читання. Значення, помічені як out, можуть бути записані за бажанням і не обов’язково міститимуть розумні значення. Значення, помічені як inout, забезпечують розумне значення за замовчуванням і, за бажанням, можуть бути записані. До семплерів не можна писати, тому вони не позначені.
Не всі вбудовані функції доступні у всіх функціях обробки. Щоб отримати доступ до вбудованої вершини з функції fragment(), ви можете використовувати varying. Те саме стосується доступу до вбудованих фрагментів із функції light().
Глобальні вбудовані функції
Глобальні вбудовані функції доступні скрізь, включаючи спеціальні функції.
Вбудований |
Опис |
|---|---|
In float TIME |
Глобальний час з моменту запуску двигуна, у секундах. Повторюється кожні |
у float PI |
Константа типу |
у float TAU |
Константа типу |
у float E |
Константа |
In bool OUTPUT_IS_SRGB |
|
у float CLIP_SPACE_FAR |
Відсічене значення дальнього значення |
in bool IS_MULTIVIEW |
|
in bool IN_SHADOW_PASS |
|
Вбудовані вершини
Дані вершин (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 |
Положення камери у світовому просторі. Відображає середню точку двох очей у режимі багатовидового/стереорендерингу. |
in vec3 CAMERA_DIRECTION_WORLD |
Напрямок камери, у світовому просторі. |
In uint CAMERA_VISIBLE_LAYERS |
Вилучити шари камери, що рендерить поточний прохід. |
In int INSTANCE_ID |
Ідентифікатор екземпляра для створення екземпляра. |
In vec4 INSTANCE_CUSTOM |
Користувацькі дані екземпляра (переважно для частинок). |
in int VIEW_INDEX |
Вид, який ми представляємо. |
In int VIEW_MONO_LEFT |
Константа для моно або лівого ока, завжди |
In int VIEW_RIGHT |
Константа для правого ока, завжди |
In vec3 EYE_OFFSET |
Зсув позиції для ока, що рендериться, у просторі перегляду. Застосовується лише для багатовидового рендерингу. |
Inout vec3 VERTEX |
Положення вершини в просторі моделі. У світовому просторі, якщо використовується |
In int VERTEX_ID |
Індекс поточної вершини в буфері вершин. |
Inout vec3 NORMAL |
Нормальний у модельному просторі. У світовому просторі, якщо використовується |
Inout vec3 TANGENT |
Дотична в просторі моделі. У світовому просторі, якщо використовується |
Inout vec3 BINORMAL |
Бінормаль у просторі моделі. У світовому просторі, якщо використовується |
Out vec4 POSITION |
If written to on any branch, overrides final vertex position in clip space. |
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, |
In vec4 CUSTOM1 |
Спеціальне значення з примітиву вершини. При використанні додаткових УФ, |
In vec4 CUSTOM2 |
Спеціальне значення з примітиву вершини. При використанні додаткових УФ, |
In vec4 CUSTOM3 |
Спеціальне значення з примітиву вершини. |
out float Z_CLIP_SCALE |
If written to on any branch, scales the vertex towards
the camera to avoid clipping into things like walls.
Lighting and shadows will continue to work correctly
when this is written to, but screen-space effects like
SSAO and SSR may break with lower scales. Try to keep
this value as close to |
Примітка
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 |
Coordinate of pixel center in screen space. |
In bool FRONT_FACING |
|
In vec3 VIEW |
Нормований вектор від положення фрагмента до камери (у просторі огляду). Це однаково як для перспективних, так і для ортогональних камер. |
In vec2 UV |
UV, що надходить із функції |
In vec2 UV2 |
UV2, який походить від функції |
In vec4 COLOR |
COLOR, отриманий від функції |
In vec2 POINT_COORD |
Координата точки для малювання точок із |
In mat4 MODEL_MATRIX |
Перетворення моделі/локального простору у світовий простір. |
In mat3 MODEL_NORMAL_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 |
Положення камери у світовому просторі. Відображає середню точку двох очей у режимі багатовидового/стереорендерингу. |
in vec3 CAMERA_DIRECTION_WORLD |
Напрямок камери, у світовому просторі. |
In uint CAMERA_VISIBLE_LAYERS |
Вилучити шари камери, що рендерить поточний прохід. |
In vec3 VERTEX |
Положення фрагмента (пікселя) у просторі огляду. Це значення |
Inout vec3 LIGHT_VERTEX |
Записувана версія |
in int VIEW_INDEX |
Вид, який ми представляємо. Використовується для розрізнення переглядів у багатопрозорому/стерео візуалізації. |
In int VIEW_MONO_LEFT |
Константа для моно або лівого ока, завжди |
In int VIEW_RIGHT |
Константа для правого ока, завжди |
In vec3 EYE_OFFSET |
Зсув позиції для ока, що рендериться, у просторі перегляду. Застосовується лише для багатовидового рендерингу. |
Sampler2D SCREEN_TEXTURE |
Видалено в Godot 4. Замість цього використовуйте |
In vec2 SCREEN_UV |
UV-координата екрану для поточного пікселя. |
Sampler2D DEPTH_TEXTURE |
Видалено в Godot 4. Замість цього використовуйте |
Out float DEPTH |
Власне значення глибини (діапазон |
Inout vec3 NORMAL |
Звичайний, який походить від функції |
Inout vec3 TANGENT |
Дотична, отримана від функції |
Inout vec3 BINORMAL |
Бінормаль, що походить від функції |
Out vec3 NORMAL_MAP |
Set normal here in tangent space if reading normal from a texture instead of |
Out float NORMAL_MAP_DEPTH |
Глибина з |
out vec3 BENT_NORMAL_MAP |
Set bent normal map here in tangent space to enable bent normals. This is used to improve specular occlusion, and requires a specially authored bent normal map. The blue channel is ignored, as it's reconstructed in the engine instead. This allows bent normal maps with RGTC compression to work. |
Out vec3 ALBEDO |
Альбедо (за замовчуванням білий). Базовий колір. |
Out float ALPHA |
Альфа (діапазон |
Out float ALPHA_SCISSOR_THRESHOLD |
If written to on any branch, values below a certain amount of alpha are discarded. |
Out float ALPHA_HASH_SCALE |
Альфа-хеш-шкала під час використання режиму прозорості альфа-хешів. За замовчуванням |
Out float ALPHA_ANTIALIASING_EDGE |
Порогове значення, нижче якого слід використовувати згладжування альфа-покриття. За замовчуванням |
Out vec2 ALPHA_TEXTURE_COORDINATE |
Координата текстури, яка використовується для згладжування альфа-покриття. Потрібен режим візуалізації |
вихідний float PREMUL_ALPHA_FACTOR |
Попередньо помножений альфа-фактор. Ефективно, лише якщо використовується |
Out float METALLIC |
Металевий (діапазон |
Out float SPECULAR |
Specular (фізично не точний для зміни). За замовчуванням |
Out float ROUGHNESS |
Шорсткість (діапазон |
Out float RIM |
Обід (діапазон |
Out float RIM_TINT |
Відтінок обідка, діапазон від |
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 |
Збільшує пропускну здатність підповерхневого розсіювання, якщо встановлено вище |
Inout vec3 BACKLIGHT |
Колір підсвічування (працює як пряме світло, але сприймається, навіть якщо нормаль трохи повернена від світла). Якщо використовується, до об’єкта буде застосовано підсвічування. Може використовуватися як дешевше наближення підповерхневого розсіювання. |
Out float AO |
Сила амбієнтної оклюзії. Для використання з попередньо випеченим АО. |
Out float AO_LIGHT_AFFECT |
Наскільки навколишня оклюзія впливає на пряме світло (діапазон |
Out vec3 EMISSION |
Колір випромінювання (може перевищувати |
Out vec4 FOG |
If written to on any branch, blends final pixel color with |
Out vec4 RADIANCE |
If written to on any branch, blends environment map radiance with |
Out vec4 IRRADIANCE |
If written to on any branch, blends environment map irradiance with |
Примітка
Шейдери, що проходять через прозорий конвеєр, коли записується ALPHA, можуть виявляти проблеми з сортуванням прозорості. Прочитайте розділ transparency sorting section in the 3D rendering limitations page, щоб дізнатися більше та як уникнути проблем.
Легкі вбудовані
Написання функцій легкого процесора абсолютно необов'язкове. Ви можете пропустити функцію light(), використовуючи режим візуалізації unshaded. Якщо функція освітлення не написана, Godot використовуватиме властивості матеріалу, записані у функції fragment(), щоб обчислити освітлення для вас (залежно від режиму візуалізації).
Функція light() викликається для кожного світла в кожному пікселі. Він викликається в циклі для кожного типу світла.
Нижче наведено приклад спеціальної функції light() з використанням моделі освітлення Ламберта:
void light() {
if (LIGHT_IS_AREA) {
// Area light GGX shading.
DIFFUSE_LIGHT += LIGHT_AREA_DIFFUSE_MULTIPLIER * ATTENUATION * LIGHT_COLOR;
SPECULAR_LIGHT += LIGHT_AREA_SPECULAR_MULTIPLIER * ATTENUATION * LIGHT_COLOR * SPECULAR_AMOUNT;
} else {
// Used for all other light types (directional, omni, spot).
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 |
Coordinate of pixel center in screen space. |
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 |
UV-координата екрану для поточного пікселя. |
In vec2 UV |
UV, що надходить із функції |
In vec2 UV2 |
UV2, який походить від функції |
In vec3 VIEW |
Переглянути вектор, у просторі перегляду. |
In vec3 LIGHT |
Світло вектор, у просторі подання. |
In vec3 LIGHT_COLOR |
Light color, помножений на light energy, помножену на |
In float SPECULAR_AMOUNT |
Для class_OmniLight3D і class_SpotLight3D, |
In bool LIGHT_IS_DIRECTIONAL |
|
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 |
Alpha (range |
Примітка
Шейдери, що проходять через прозорий конвеєр, коли записується ALPHA, можуть виявляти проблеми з сортуванням прозорості. Прочитайте розділ transparency sorting section in the 3D rendering limitations page, щоб дізнатися більше та як уникнути проблем.
Прозорі матеріали також не можуть відкидати тіні або з’являтися в уніформі hint_screen_texture і hint_depth_texture. Це, у свою чергу, запобігає появі цих матеріалів у віддзеркаленнях або заломленні в екранному просторі. SDFGI різкі відблиски не видно на прозорих матеріалах (на прозорих матеріалах видно лише грубі відблиски).