Справка по встроенным переменным шейдера
Встроенные файлы включения Unity содержат глобальные переменные для ваших шейдеров: такие вещи, как матрицы трансформации текущего объекта, параметры освещения, текущее время и т.д. Вы используете их в шейдерных программах как любую другую переменную, но если вы включаете соответствующий файл включения, вам не нужно объявлять их.
Дополнительные сведения о файлах включения см. в Встроенные файлы включения.
Суффиксы встроенного семплера
При объявлении встроенного семплера SamplerState в коде HLSL добавьте следующие суффиксы, чтобы вручную установить режимы фильтрации текстуры и переплетения. Разделите несколько слов подчеркиванием (_). Например, чтобы установить семплер для использования линейной фильтрации и режима переплетения повторов, назовите его sampler_linear_repeat.
Примечание: Эти суффиксы семплеров работают только в том случае, если DX11, DX12, Metal или Vulkan графика API.
Необходимо включить один режим фильтрации и один режим оборачивания текстуры. Другие суффиксы необязательны.
| Суффикс | Описание |
|---|---|
point |
Включает фильтрацию ближайшей текстуры. |
linear |
Включает билинейную фильтрацию текстуры. |
trilinear |
Включает трилинейную фильтрацию текстуры. |
clamp |
Устанавливает режим оборачивания текстуры на clamp. |
repeat |
Устанавливает режим переворачивания текстуры на повторение. |
mirror |
Устанавливает зеркальный режим обвода текстуры. |
mirroronce |
Если вы нацелены на мобильную платформу, которая не поддерживает mirroronce, Unity возвращается к mirror. |
compare |
Дополнительные сведения см. в SampleCmp и SampleCmpLevelZero в документации Microsoft HLSL. |
aniso2, aniso4, aniso8, aniso16 |
Включает анизотропную фильтрацию с выборкой 2x, 4x, 8x или 16x. В зависимости от графики API и платформы, Unity может ограничить фильтрацию до более низкого значения или полностью отключить анизотропную фильтрацию. |
Добавьте U, V или W к режиму переплетения, чтобы установить режим переплетения только для этой оси. Например, sampler_clampu_point устанавливает ось U в режим зажима и оставляет оси V и W в их стандартном режиме переплетения.
Более подробную информацию см. по адресу:
Преобразования
Все эти матрицы имеют тип float4x4 и являются столбцовыми.
Примечание: Если вы используете Universal Render Pipeline (URP), вы также можете использовать переменные из Core.hlsl файл библиотеки. Дополнительные сведения см. в Transform позиции в обычной URP шейдер.
| Имя | Значение |
|---|---|
| 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 и экран
Эти переменные будут соответствовать Camera которая выполняет отрисовку. Например, при отрисовке карты теней они по-прежнему ссылаются на значения компонента Camera, а не на «виртуальную камеру», используемую для проекции карты теней.
Примечание: Если вы используете Universal Render Pipeline (URP), вы также можете использовать переменные из файла библиотеки Core.hlsl. Дополнительную информацию см. в Использование камеры в пользовательском URP шейдере.
| Имя | Тип | Значение |
|---|---|---|
| _WorldSpaceCameraPos | float3 (плавающий) | Всемирное космическое положение камеры. |
| _ProjectionParams | float4 (плавающий) | x является 1.0 (или -1.0 если в настоящее время отображается с перевернутая матрица проекции), y близкая плоскость камеры, z является дальней плоскостью камеры и w является1/FarPlane. |
| _ScreenParams | float4 (плавающий) | x — ширина текстуры камеры в пикселях, y — высота текстуры камеры в пикселях, z — 1.0 + 1.0/width и w — 1.0 + 1.0/height. |
| _ZBufferParams | float4 (плавающий) | Используется для линейизации значений Z-буфера.
|
| unity_OrthoParams | float4 (плавающий) | Следующие параметры:
|
| unity_CameraProjection | float4x4 | Матрица проекции Camera. |
| unity_CameraInvProjection | float4x4 | Инверсия проекционной матрицы камеры. |
| unity_CameraWorldClipPlanes[6] | float4 (плавающий) | Camera Мировые пространственные уравнения плоскости фрустума, в следующем порядке: слева, справа, снизу, сверху, близко, далеко. |
Время
Время измеряется в секундах и масштабируется по множителю времени в вашем Project’s Настройки времени. Нет встроенной переменной, которая обеспечивает доступ к немасштабированному времени.
Время соответствует Time.time, которое является временем с момента запуска приложения. Если вы используете Встроенный Render Pipeline, время соответствует Time.timeSinceLevelLoad вместо этого.
| Имя | Тип | Значение |
|---|---|---|
| _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_Lightmap | Texture2D | Содержит информацию о карте освещения. |
| unity_LightmapST | float4[8] | Масштабирует и переводит информацию UV в правильный диапазон для выборки текстуры lightmap. |
Туман и окружающий воздух
| Имя | Тип | Значение |
|---|---|---|
| unity_AmbientSky | fixed4 | Цвет окружающего освещения неба в случае градиентного окружающего освещения. |
| unity_AmbientEquator | fixed4 | Экватор цвета окружающего освещения в случае градиентного окружающего освещения. |
| unity_AmbientGround | fixed4 | Цвет фонового освещения земли в случае градиентного фонового освещения. |
| unity_IndirectSpecColor | fixed4 | Если вы используете skybox, это средний цвет skybox, который Unity рассчитывает с помощью DC компонента сферических гармоник данных в окружающей зонд. В противном случае это черный. |
| UNITY_LIGHTMODEL_AMBIENT | fixed4 | Цвет фонового освещения (цвет неба в случае градиентного фонового освещения). |
| unity_FogColor | fixed4 | Цвет тумана. |
| unity_FogParams | float4 (плавающий) | Параметры для расчета тумана: (плотность / sqrt(ln(2)), плотность / ln(2), –1/(конец-начало), конец/(конец-начало)). x полезны для режима тумана Exp2, и для режима Exp, z и w для линейного режима. |
Различные
| Имя | Тип | Значение |
|---|---|---|
| unity_LODFade | float4 (плавающий) | Уровень детализации затухает при использовании LODGroup. x затухает (0..1), y затухает квантовано до 16 уровней, z и w не используются. |
| _TextureSampleAdd | float4 (плавающий) | Автоматически устанавливается Unity для UI только в зависимости от того, используется текстура в формате Alpha8 (значение установлено на (1,1,1,0)) или нет (значение установлено на (0,0,0,0)). |