Version: 5.3 (switch to 5.4b)
Синтаксис ShaderLab: туман
Синтаксис ShaderLab: UsePass

Синтаксис ShaderLab: BindChannels

Команда BindChannels позволяет определить, каким образом информация о вершинах моделей преобразуется в данные на графической карте.

BindChannels не несет никакой нагрузки в случае, если используются вершинные шейдеры, так как в этом случае весь процесс контролируется входными данными вершинных шейдеров.

По умолчанию, Unity определяет все преобразования за вас, но иногда требуется применять собственные решения.

Например, можно использовать первый UV сет для первой текстуры, а второй UV сет для второй текстурой; или сказать графической карте, что в шейдере будут использованы цвета вершин.

Синтаксис

BindChannels { Bind "source", target }

Определяет, что свойство вершины source соответствует свойству вершины target на графической карте.

Вместо Source может быть одно из слов:

  • Vertex: vertex position
  • Normal: vertex normal
  • Tangent: vertex tangent
  • Texcoord: координаты первичной UV
  • Texcoord1: координаты вторичной UV
  • Color: per-vertex color

Вместо Target может быть одно из слов:

  • Vertex: vertex position
  • Normal: vertex normal
  • Tangent: vertex tangent
  • Texcoord0, Texcoord1, …: UV координаты для соответствующей по номеру текстуре.
  • Texcoord: UV координаты для всех текстур
  • Color: vertex color

Детали

В Unity присутствуют некоторые ограничения относительно комбинаций преобразования различных source в различные target. Преобразовывать можно в любой комбинации между Vertex, Normal, Tangent и Color. UV координаты вершин модели (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
}
Синтаксис ShaderLab: туман
Синтаксис ShaderLab: UsePass