Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Встроенные переменные шейдера

Встроенные включаемые файлы Unity содержат глобальные переменные для ваших шейдеровпрограммы, работающей на графическом процессоре. Подробнее
См. в Словарь
: такие вещи, как матрицы преобразования текущего объекта, параметры освещения, текущее время и так далее. Вы используете их в шейдерных программах, как и любые другие переменные, но если вы включаете соответствующий включаемый файл, вам не нужно их объявлять.

Дополнительную информацию о включаемых файлах см. в разделе Встроенные включаемые файлы.

Преобразования

Все эти матрицы относятся к типу float4x4 и имеют основной столбец.

Имя Значение
UNITY_MATRIX_MVP Текущая модель * вид * матрица проекции.
UNITY_MATRIX_MV Текущая модель * просмотреть матрицу.
UNITY_MATRIX_V Текущая матрица просмотра.
UNITY_MATRIX_P Текущая матрица проекций.
UNITY_MATRIX_VP Текущий вид * матрица проекции.
UNITY_MATRIX_T_MV Транспонировать модель * просмотреть матрицу.
UNITY_MATRIX_IT_MV Инверсное транспонирование модели * матрицы вида.
unity_ObjectToWorld Матрица текущей модели.
unity_WorldToObject Инверсия текущей мировой матрицы.

Камера и экран

Эти переменные будут соответствовать компоненту Camera, который создает изображение определенной точки обзора в вашей сцене. Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее
См. в Словарь
, который является рендерингПроцесс вывода графики на экран (или текстуры рендеринга). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
См. в Словарь
. Например, во время рендеринга карты теней они по-прежнему будут ссылаться на значения компонента «Камера», а не на «виртуальную камеру», которая используется для проекции карты теней.

Имя Тип Значение
_WorldSpaceCameraPos float3 Мировое космическое положение камеры.
_ProjectionParams float4 xравно 1,0 (или –1,0 при рендеринге с перевернутой матрицей проекции), y – это ближняя плоскость камеры, z — дальняя плоскость камеры, а w — 1/FarPlane.
_ScreenParams float4 x ширина целевой текстуры камеры в пикселяхнаименьшая единица компьютерного изображения. Размер пикселя зависит от разрешения вашего экрана. Пиксельное освещение рассчитывается для каждого пикселя экрана. Подробнее
См. в Словарь
, y — высота целевой текстуры камеры в пикселях, z – 1,0 + 1,0/ширина, а w – 1,0 + 1,0/ высота.
_ZBufferParams float4 Используется для линеаризации значений буфера Z. x (1-далеко/ближе), y (далее/ближе), z — это (x/far), а w — это (y/far).
unity_OrthoParams float4 x— ширина ортогональной камеры, y — высота ортогональной камеры, z не используется и w равно 1,0, если камера орфографическая, и 0,0, если перспектива.
unity_CameraProjection float4x4 Проекционная матрица камеры.
unity_CameraInvProjection float4x4 Обратная матрица проекции камеры.
unity_CameraWorldClipPlanes[6] float4 Усеченная камера, плоскость, мировое пространство, уравнения в таком порядке: слева, справа, снизу, сверху, рядом, далеко.

Время

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

Name Type Value
_Time float4 Время с момента загрузки уровня (t/20, t, t*2, t*3), используемое для анимации внутри шейдеров.
_SinTime float4 Синус времени: (t/8, t/4, t/2, t).
_CosTime float4 Косинус времени: (t/8, t/4, t/2, t).
unity_DeltaTime float4 Дельта времени: (dt, 1/dt, smoothDt, 1/smoothDt).

Освещение

Параметры освещения передаются шейдерам по-разному в зависимости от того, какой путь рендеринга Техника, которую Unity использует для рендеринга графики. Выбор другого пути влияет на производительность вашей игры и на то, как рассчитываются освещение и затенение. Некоторые пути больше подходят для разных платформ и оборудования, чем другие. Подробнее
См. в Словарь
используется, и какой LightMode Тег передачи используется в шейдере.

Прямой рендерингПуть рендеринга, который отображает каждый объект в одном или больше проходов, в зависимости от света, воздействующего на объект. Сами источники света также обрабатываются Forward Rendering по-разному, в зависимости от их настроек и интенсивности. Подробнее
См. в Словарь
(ForwardBase и типы проходов ForwardAdd):

Имя Тип Значение
_LightColor0 (declared in UnityLightingCommon.cginc) fixed4 Light color.
_WorldSpaceLightPos0 float4 Направленные огни: (направление мирового пространства, 0). Другие огни: (мировое космическое положение, 1).
unity_WorldToLight (declared in AutoLight.cginc) float4x4 Матрица мира к свету. Используется для выборки текстур cookie и затухания.
unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0 float4 (только проход ForwardBase) позиции в мировом пространстве первых четырех неважных точечных источников света.
unity_4LightAtten0 float4 (только проход ForwardBase) коэффициенты затухания первых четырех неважных точечных источников света.
unity_LightColor half4[4] (только проход ForwardBase) цвета первых четырех неважных точечных источников света.
unity_WorldToShadow float4x4[4] Матрицы мира-тени. Одна матрица для прожекторов, до четырех для каскадов направленного света.

Отложенное затенение и отложенное освещение, используемые в шейдере передачи освещения (все объявлено в UnityDeferredLibrary.cginc):

Имя Тип Значение
_LightColor float4 Светлый цвет.
unity_WorldToLight float4x4 Матрица мира к свету. Используется для выборки текстур cookie и затухания.
unity_WorldToShadow float4x4[4] Матрицы мира-тени. Одна матрица для прожекторов, до четырех для каскадов направленного света.

Коэффициенты сферических гармоник (используемые датчиками окружающей среды и освещенности) настроены для ForwardBase, PrePassFinal и Отложено типы пропусков. Они содержат SH 3-го порядка для оценки по нормали мирового пространства (см. ShadeSH9 из UnityCG.cginc). Все переменные имеют тип half4, unity_SHAr и похожие имена.

Вершинный рендеринг (тип прохода Vertex):

Для прохода типа Vertex настраивается до 8 источников света; всегда сортируются, начиная с самого яркого. Поэтому, если вы хотите визуализировать объекты, на которые воздействуют два источника света одновременно, вы можете просто взять первые две записи в массивах. Если на объект влияет меньше источников света, чем 8, остальные будут иметь черный цвет.

Имя Тип Значение
unity_LightColor half4[8] Light colors.
unity_LightPosition float4[8] Позиции света в пространстве обзора. (-direction,0) для направленных огней; (позиция, 1) для точечных или точечных источников света.
unity_LightAtten half4[8] Факторы ослабления света. x равно cos(spotAngle/2) или –1 для не точечных источников света; y равно 1/cos(spotAngle/4) или 1 для не точечных источников света; z — квадратичное затухание; w — дальность света в квадрате.
unity_SpotDirection float4[8] Позиции Spot Lights в пространстве обзора; (0,0,1,0) для не точечных источников света.

Карты освещения

Имя Тип Значение
unity_Lightmap Texture2D Содержит карту освещенияпредварительно обработанную текстуру, которая содержит эффекты источников света на статических объектах сцены. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
См. информацию в разделе Словарь
.
unity_LightmapST float4[8] Масштабирует и переводит информацию UV в правильный диапазон для выборки текстуры карты освещения.

Туман и фон

Имя Тип Значение
unity_AmbientSky fixed4 Цвет окружающего освещения неба в случае градиентного окружающего освещения.
unity_AmbientEquator fixed4 Цвет окружающего освещения на экваторе в случае градиентного окружающего освещения.
unity_AmbientGround fixed4 Цвет фонового окружающего освещения в случае градиентного окружающего освещения.
UNITY_LIGHTMODEL_AMBIENT fixed4 Цвет окружающего освещения (цвет неба в градиентном окружении). Устаревшая переменная.
unity_FogColor fixed4 Цвет тумана.
unity_FogParams float4 Параметры для расчета тумана: (плотность / sqrt(ln(2)), плотность / ln(2), –1/(конец-начало), конец/(конец-начало)). x используется для режима тумана Exp2, y для режима Exp, z и w для линейного режима.

Various

Имя Тип Значение
unity_LODFade float4 Уровень детализации исчезает при использовании LODGroup. x — затухание (0..1), y — затухание, квантованное до 16 уровней, z и w не используются .
_TextureSampleAdd float4 Устанавливается Unity автоматически для UI(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
Смотреть только в Словарь
в зависимости от того, является ли используемая текстура в формате Alpha8 (значение установлено в (1,1,1,0)) или нет (значение установлено в (0,0,0,0)).
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3