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