Version: 2020.1
Синтаксис ShaderLab: туман
Синтаксис ShaderLab: UsePass

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

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

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

By default, Unity figures out the bindings for you, but in some cases you want custom ones to be used.

Например, можно использовать первый 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