Синтаксис ShaderLab: BindChannels
Команда BindChannels позволяет определить, каким образом информация о вершинах моделей преобразуется в данные на графической карте.
BindChannels не несет никакой нагрузки в случае, если используются вершинные шейдеры, так как в этом случае весь процесс контролируется входными данными вершинных шейдеров.
По умолчанию, Unity определяет все преобразования за вас, но иногда требуется применять собственные решения.
Например, можно использовать первый UV сет для первой текстуры, а второй UV сет для второй текстурой; или сказать графической карте, что в шейдере будут использованы цвета вершин.
BindChannels { Bind "source", target }
Определяет, что свойство вершины source соответствует свойству вершины target на графической карте.
Вместо Source может быть одно из слов:
Вместо Target может быть одно из слов:
В Unity присутствуют некоторые ограничения относительно комбинаций преобразования различных source в различные target. Преобразовывать можно в любой комбинации между Vertex, Normal, Tangent и Color. UV координаты вершин модели (Texcoord и Texcoord1) могут быть преобразованы в соответствующие координаты на графической карте (Texcoord для всех текстур, или TexcoordN для текстуры с определенным номером).
Чаще всего, BindChannels используется в двух случаях:
// 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
}