传统的 BindChannels

  bindchannels命令允许您指定顶点数据映射到图形硬件。

注:当使用顶点程序时,_bindchannels没有效果的,在这种情况下,绑定是由顶点着色器的输入控制。建议使用可编程着色器而不是固定功能顶点处理。

  默认情况下,Unity为你绘制绑定,但在某些情况下,你希望使用自定义绑定。


  例如,你可以在第一个纹理阶段和在第二个纹理阶段使用的二次UV集绘制主UV集,或者告诉硬件顶点颜色应该被考虑在内。

  语法:

        BindChannels { Bind "source", target }

  指定顶点数据源映射到硬件目标。

        Source can be one of:
                Vertex: vertex position
                Normal: vertex normal
                Tangent: vertex tangent
                Texcoord: primary UV coordinate
                Texcoord1: secondary UV coordinate
                Color: per-vertex color

        Target can be one of:
                Vertex: vertex position
                Normal: vertex normal
                Tangent: vertex tangent
                Texcoord0, Texcoord1, …: texture coordinates for corresponding texture stage
                Texcoord: texture coordinates for all texture stages
                Color: vertex color

  细节:

  Unity放置一些限制,哪些源可以映射到哪个目标。源和目标必须匹配顶点,法线,切线和颜色。纹理坐标网格(Texcoord和Texcoord1)可以映射到纹理坐标的目标(Texcoord所有纹理阶段,或texcoordn为一个特定的阶段)。

  BindChannels有两个典型的用例:

    Shaders that take vertex colors into account.
    Shaders that use two UV sets.

  Examples:

        // 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
        }

🔚