Шейдеры Spatial

Пространственные шейдеры используются для затенения 3D-объектов. Это самый сложный тип шейдеров, который предлагает Godot. Пространственные шейдеры очень хорошо настраиваются, в них можно использовать различные режимы рендеринга и различные опции рендеринга (например, Subsurface Scattering, Transmission, Ambient Occlusion, Rim lighting и т. д.). Пользователи могут писать функции вершинного, фрагментного и светового процессоров, чтобы влиять на отрисовку объектов.

Режимы визуализации

Визуальные примеры этих режимов рендеринга см. в разделе Standard Material 3D and ORM Material 3D.

Режим рендеринга

Описание

blеnd_mix

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

blеnd_add

Аддитивный режим наложения.

blеnd_sub

Режим наложения с вычитанием.

blеnd_mul

Режим наложения с умножением.

blеnd_premul_alpha

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

dеpth_draw_opaque

Прорисовка глубины только для непрозрачной геометрии.

dеpth_draw_always

Постоянная отрисовка глубины (непрозрачная и прозрачная).

dеpth_draw_never

Никогда не отрисовывать глубину.

depth_prepass_alpha

Выполнение предварительного прохождения непрозрачной глубины для прозрачной геометрии.

depth_test_disabled

Отключение проверки глубины.

sss_mode_skin

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

cull_baсk

Обрезка задних поверхностей (по-умолчанию).

cull_frоnt

Обрезка передних поверхностей.

cull_disablеd

Выключение обрезки (двойная сторона).

unshadеd

Результат — просто альбедо. Материал не подвергается воздействию света и тени, что ускоряет рендеринг.

wireframe

Геометрия рисуется с помощью линий (полезно для устранения неполадок).

debug_shadow_splits

Направленные тени рисуются с использованием разных цветов для каждого разделения (полезно для устранения неполадок).

diffuse_burleу

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

diffusе_lambert

Затенение Ламберта для диффузии.

diffusе_lambert_wrap

Затенение по методу Ламберта (зависящее от шероховатости) для диффузии.

diffuse_toоn

Toon-затенение для диффузного.

specular_schlick_ggх

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

spеcular_toon

Настройка зеркальных отражений прямого света.

speculаr_disabled

Отключить зеркальные лепестки прямого света. Не влияет на отражённый свет (вместо этого используйте SPECULAR = 0.0).

skіp_vertex_transform

VERTEX, NORMAL, TANGENT и BITANGENT необходимо преобразовать вручную в функции vertex().

wоrld_vertex_coords

VERTEX, NORMAL, TANGENT и BITANGENT модифицируются в мировом пространстве, а не в пространстве модели.

ensure_correct_normals

Используется, когда к сетке применен неравномерный масштаб (примечание: в настоящее время не реализовано).

shadows_disabled

Отключить расчёт теней в шейдере. Шейдер не будет получать тени, но сможет их отбрасывать.

Свет_окружения_отключен

Отключить влияние окружающего освещения и карты яркости.

Тень_непрозрачна

Освещение изменяет альфа-канал так, что затененные области становятся непрозрачными, а незатененные - прозрачными. Полезно для наложения теней на камеру в AR.

vеrtex_lighting

Используйте вершинное освещение вместо попиксельного.

particle_trails

Включает следы при использовании в геометрии частиц.

alpha_to_coverage

Режим альфа-сглаживания, более подробную информацию см. здесь.

alpha_to_coverage_and_one

Режим альфа-сглаживания, более подробную информацию см. здесь.

fog_disabled

Отключить получение глубинного или объёмного тумана. Полезно для материалов blend_add, таких как частицы.

Встроенные функции

Значения, отмеченные как in, доступны только для чтения. Значения, отмеченные как out, могут быть записаны и не обязательно содержат осмысленные значения. Значения, отмеченные как inout, предоставляют осмысленное значение по умолчанию и могут быть записаны. Сэмплеры не могут быть записаны, поэтому они не отмечены.

Не все встроенные функции доступны во всех функциях обработки. Для доступа к встроенной функции вершины из функции fragment() можно использовать varying. То же самое относится к доступу к встроенным функциям фрагментов из функции light().

Глобальные встроенные функции

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

Встроенный

Описание

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

в bool (логическом формате) OUTPUT_IS_SRGB

true, когда вывод осуществляется в цветовом пространстве sRGB (это true в модуле рендеринга совместимости, false в Forward+ и Mobile).

в float CLIP_SPACE_FAR

Значение z для отсечения пространства. В рендерах Forward+ и Mobile это 0.0. В рендере Compatibility это -1.0.

Вершинные встроенные константы

Данные вершин (VERTEX, NORMAL, TANGENT и BITANGENT) представлены в пространстве модели (также называемом локальным пространством). Если эти значения не записаны, они не изменяются и передаются в том виде, в котором были получены, а затем преобразуются в пространство представления для использования в fragment().

При желании их можно представить в мировом пространстве, используя режим рендеринга world_vertex_coords.

Пользователи могут отключить встроенное преобразование modelview (проекция всё равно произойдет позже) и сделать это вручную с помощью следующего кода:

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

Размер области просмотра (в пикселях).

в mat4 VIEW_MATRIX

Мировое пространство для просмотра трансформации пространства.

в mat4 INV_VIEW_MATRIX

Преобразование из пространства вида в мировое пространство.

в mat4 MAIN_CAM_INV_VIEW_MATRIX

Преобразование пространства вида в мировое пространство камеры, используемое для отрисовки текущего окна просмотра.

в mat4 INV_PROJECTION_MATRIX

Вырезать пространство, чтобы увидеть преобразование пространства.

в vec3 NODE_POSITION_WORLD

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

в vec3 NODE_POSITION_VIEW

Положение узла в пространстве обзора.

в vec3 CAMERA_POSITION_WORLD

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

в vec3 CAMERA_DIRECTION_WORLD

Направление камеры в мировом пространстве.

в uint CAMERA_VISIBLE_LAYERS

Отбрасывание слоев камеры, визуализирующей текущий проход.

в int INSTANCE_ID

Идентификатор экземпляра для создания экземпляра.

в vec4 INSTANCE_CUSTOM

Пользовательские данные экземпляра (в основном для частиц).

в int VIEW_INDEX

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

в int VIEW_MONO_LEFT

Постоянная для Mono или левого глаза, всегда 0.

в 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.

в 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

Основной UV-канал.

inout vec2 UV2

Вторичный UV-канал.

inout vec4 COLOR

Цвет из вершин.

out float ROUGHNESS

Шероховатость для вершинного освещения.

inout float POINT_SIZE

Размер точки для рендеринга точек.

inout mat4 MODELVIEW_MATRIX

Модель/локальное пространство для просмотра преобразования пространства (используйте, если возможно).

inout mat3 MODELVIEW_NORMAL_MATRIX

mat4 MODEL_MATRIX

Преобразование модельного/локального пространства в мировое пространство.

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

Пользовательское значение из примитива вершины. При использовании дополнительных UV-координат xy — это UV5, а zw — это UV6.

in vec4 CUSTOM2

Пользовательское значение из примитива вершины. При использовании дополнительных UV-координат 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

Размер области просмотра (в пикселях).

vec4 FRAGCOORD

Координаты центра пикселя в экранном пространстве. xy задаёт положение в окне. Начало координат находится внизу слева. z задаёт глубину фрагмента. Она также используется в качестве выходного значения глубины фрагмента, если не задано DEPTH.

bool FRONT_FACING

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

vec3 VIEW

Нормализованный вектор от положения фрагмента до камеры (в пространстве вида). Он одинаков как для перспективной, так и для ортогональной камеры.

vec2 UV

UV, полученный из функции vertex().

vec2 UV2

UV2, полученный из функции vertex().

vec4 COLOR

COLOR, который получается из функции vertex().

vec2 POINT_COORD

Координаты точки для рисования точек с помощью POINT_SIZE.

mat4 MODEL_MATRIX

Преобразование модельного/локального пространства в мировое пространство.

mat3 MODEL_NORMAL_MATRIX

Преобразование пространства модели/локального пространства в мировое для нормалей. По умолчанию это то же самое, что MODEL_MATRIX, если только объект не масштабирован неравномерно. В этом случае значение устанавливается как transpose(inverse(mat3(MODEL_MATRIX))).

в mat4 VIEW_MATRIX

Мировое пространство для просмотра трансформации пространства.

в mat4 INV_VIEW_MATRIX

Преобразование из пространства вида в мировое пространство.

mat4 PROJECTION_MATRIX

Преобразование пространства просмотра для обрезки пространства.

в mat4 INV_PROJECTION_MATRIX

Вырезать пространство, чтобы увидеть преобразование пространства.

в vec3 NODE_POSITION_WORLD

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

в vec3 NODE_POSITION_VIEW

Положение узла в пространстве обзора.

в vec3 CAMERA_POSITION_WORLD

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

в vec3 CAMERA_DIRECTION_WORLD

Направление камеры в мировом пространстве.

в uint CAMERA_VISIBLE_LAYERS

Отбрасывание слоев камеры, визуализирующей текущий проход.

vec3 VERTEX

Положение фрагмента (пикселя) в пространстве вида. Это значение VERTEX из vertex(), интерполированное между вершинами грани и преобразованное в пространство вида. Если включен параметр skip_vertex_transform, фрагмент может не находиться в пространстве вида.

inout vec3 LIGHT_VERTEX

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

в int VIEW_INDEX

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

в int VIEW_MONO_LEFT

Постоянная для Mono или левого глаза, всегда 0.

в 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.

vec2 SCREEN_UV

Экранная 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, если считываете значение normal из текстуры вместо 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 — размер текстуры альбедо в пикселях.

out float PREMUL_ALPHA_FACTOR

Предварительно умноженный альфа-фактор. Действует только при использовании render_mode blend_premul_alpha;. Этот параметр следует записывать при использовании затенённого материала с предварительным альфа-смешением для взаимодействия с освещением. Для незатенённых материалов это не требуется.

out float METALLIC

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

out float SPECULAR

Зеркальный (физически некорректно изменять). Значение по умолчанию: 0.5. 0.0 отключает отражения.

out float ROUGHNESS

Шероховатость (диапазон [0.0, 1.0]).

out float RIM

Обод (диапазон [0.0, 1.0]). При использовании Godot рассчитывает освещённость обода. Размер обода зависит от параметра ROUGHNESS.

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

Направление искажения, используйте с flowmaps.

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, могут иметь проблемы с сортировкой прозрачности. Прочитайте раздел сортировка прозрачности на странице ограничений 3D-рендеринга для получения дополнительной информации и способов избежать проблем.

Встроенные константы шейдеров света

Написание функций светового процессора совершенно необязательно. Вы можете пропустить функцию 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

Размер области просмотра (в пикселях).

vec4 FRAGCOORD

Координата центра пикселя в пространстве экрана. xy задаёт позицию в окне, z задает глубину фрагмента, если DEPTH не используется. Ориентир - левый нижний угол.

mat4 MODEL_MATRIX

Преобразование модельного/локального пространства в мировое пространство.

в mat4 INV_VIEW_MATRIX

Преобразование из пространства вида в мировое пространство.

в mat4 VIEW_MATRIX

Мировое пространство для просмотра трансформации пространства.

mat4 PROJECTION_MATRIX

Преобразование пространства просмотра для обрезки пространства.

в mat4 INV_PROJECTION_MATRIX

Вырезать пространство, чтобы увидеть преобразование пространства.

in vec3 NORMAL

Нормальный вектор в пространстве вида.

vec2 SCREEN_UV

Экранная UV-координата для текущего пикселя.

vec2 UV

UV, полученный из функции vertex().

vec2 UV2

UV2, полученный из функции vertex().

vec3 VIEW

Вид вектора в пространстве вида.

in vec3 LIGHT

Вектор света в пространстве зрения.

in vec3 LIGHT_COLOR

Цвет света умножается на Энергия света умножается на ПИ. Умножение на ПИ присутствует, поскольку физические модели освещения включают деление на ПИ.

in float SPECULAR_AMOUNT

Для OmniLight3D и SpotLight3D, 2.0 умножается на light_specular. Для DirectionalLight3D, 1.0.

in bool LIGHT_IS_DIRECTIONAL

true, если этот проход является 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]). При записи материал будет передан в прозрачный pipeline.

Примечание

Шейдеры, проходящие через конвейер прозрачности при записи ALPHA, могут иметь проблемы с сортировкой прозрачности. Прочитайте раздел сортировка прозрачности на странице ограничений 3D-рендеринга для получения дополнительной информации и способов избежать проблем.

Прозрачные материалы также не могут отбрасывать тени или появляться в uniform-переменных hint_screen_texture и hint_depth_texture. Это, в свою очередь, не позволяет этим материалам появляться в отражениях или преломлениях в экранном пространстве. SDFGI резкие отражения не видны на прозрачных материалах (на прозрачных материалах видны только грубые отражения).