注意:此页面上的__ ShaderLab__Unity 用于定义着色器对象结构的语言。更多信息
See in Glossary 是旧版功能,仅用于向下兼容。如果您的着色器源文件包含 HLSL 代码,Unity 会完全忽略这些命令。如果您的着色器源文件不包含 HLSL 代码,Unity 会在导入时将这些命令编译为常规着色器程序。
| 功能名称 | 内置渲染管线 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP |
|---|---|---|---|---|
| 旧版顶点数据通道映射 | 是 | 否 | 否 | 否 |
BindChannels 命令用于指定顶点数据映射到图形硬件的方式。默认情况下,Unity 会为您计算绑定,但在某些情况下,您可能希望使用自定义绑定。
例如,您可能会映射要在第一个纹理阶段中使用的主 UV 集,并映射要在第二个纹理阶段中使用的辅助 UV 集;或者告知硬件应将顶点颜色考虑在内。
BindChannels { Bind "source", target }
指定顶点数据 source 映射到硬件 target。
Source 可以是下列值之一:
Target 可以是下列值之一:
Unity 对于哪些源 (source) 可以映射到哪些目标 (target) 设置了一些限制。Vertex、Normal、Tangent 和 Color 的源和目标必须匹配。网格中的纹理坐标(__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
}