包含此页的版本:
不含此页的版本:
注意:该ShaderLabUnity 用于定义 Shader 对象结构的语言。更多信息
请参阅术语表此页面上的功能是旧版的,仅用于向后兼容性。如果您的着色器在 GPU 上运行的程序。更多信息
请参阅术语表源文件包含 HLSL 代码,Unity 会完全忽略这些命令。如果您的着色器源文件不包含 HLSL 代码,Unity 会在导入时将这些命令编译为常规着色器程序。
| 功能名称 | 内置渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息 请参阅术语表 |
通用渲染管线(URP) | 高清渲染管线 (HDRP) | 定制 SRP |
|---|---|---|---|---|
| 旧顶点数据通道映射 | 是的 | 不 | 不 | 不 |
BindChannels 命令允许您指定顶点数据映射到图形硬件的方式。默认情况下,Unity 会为您确定绑定,但在某些情况下,您希望使用自定义绑定。
例如,您可以映射要在第一个纹理阶段中使用的主 UV 集和要在第二个纹理阶段中使用的辅助 UV 集;或者告诉硬件应考虑顶点颜色。
BindChannels { Bind "source", target }
指定顶点数据源映射到硬件目标。
源可以是以下之一:
目标可以是以下之一:
Unity 对哪些源可以映射到哪些目标施加了一些限制。源和目标必须匹配顶点、法线、切线和颜色。纹理坐标来自meshUnity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表 (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
}