Примечание. ShaderLabязык Unity для определения структуры объектов Shader. Подробнее
See in Словарь на этой странице является устаревшей и задокументирован только для обратной совместимости. Если ваш шейдерПрограмма, работающая на графическом процессоре. Подробнее
См. в Словарь исходный файл включает код HLSL, Unity полностью игнорирует эти команды. Если исходный файл шейдера не включает код HLSL, Unity компилирует эти команды в обычные программы шейдера при импорте.
Совместимость конвейера рендеринга
Название функции | Встроенный конвейер рендеринга | Универсальный конвейер рендеринга (URP) | Конвейер рендеринга высокого разрешения (HDRP) | Пользовательский SRP |
---|---|---|---|---|
Legacy vertex data channel mapping | Да | Нет | Нет | Нет |
Обзор
Команда BindChannels позволяет указать, как данные вершин сопоставляются с графическим оборудованием. По умолчанию Unity определяет привязки за вас, но в некоторых случаях вы хотите, чтобы использовались пользовательские.
Например, вы можете сопоставить первичный набор UV, который будет использоваться на первом этапе текстуры, и вторичный набор UV, который будет использоваться на втором этапе текстуры; или сообщите аппаратному обеспечению, что цвета вершин должны учитываться.
Синтаксис
BindChannels { Bind "source", target }
Указывает, что источник данных вершин сопоставляется с оборудованием цель.
Источник может быть одним из следующих:
- Вершина: положение вершины
- НормальныйНаправление, перпендикулярное поверхности сетки, представленное вектором. Unity использует нормали для определения ориентации объекта и применения затенения. Подробнее
См. в Словарь: vertex normal - Касательная: касательная к вершине
- Texcoord: первичная координата UV
- Texcoord1: дополнительная координата UV
- Цвет: цвет каждой вершины
Цель может быть одной из следующих:
- Вершина: положение вершины
- Обычный: вершина нормальная
- Касательная: касательная к вершине
- Texcoord0, Texcoord1, …: координаты текстуры для соответствующей стадии текстуры
- Texcoord: координаты текстуры для всех этапов текстуры.
- Цвет: цвет вершин
Подробнее
Unity накладывает некоторые ограничения на то, какие источники могут быть сопоставлены с какими целями. Источник и цель должны совпадать для Вершины, Нормального, Касательной и Цвета. Координаты текстуры из сеткиосновного графического примитива Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь (Texcoord и Texcoord1) можно сопоставить с целевыми координатами текстуры (Texcoord для всех этапов текстуры или TexcoordN для определенного этапа).
Есть два типичных варианта использования BindChannels:
- Шейдеры, учитывающие цвета вершин.
- Шейдеры, использующие два набора UV.
Примеры
// Maps the first UV set to the first texture stage
// and the second UV set to the second texture stage
BindChannels {
Bind "Vertex", vertex
Bind "texcoord", texcoord0
Bind "texcoord1", texcoord1
}
// Maps the first UV set to all texture stages
// and uses vertex colors
BindChannels {
Bind "Vertex", vertex
Bind "texcoord", texcoord
Bind "Color", color
}