版本:Unity 6 (6000.0)
语言:英语
ShaderLab:旧版纹理组合
HLSL 预处理指令参考

ShaderLab:旧版顶点数据通道映射

注意:此页面上的ShaderLabUnity 用于定义着色器对象结构的语言。 更多信息
参见 术语表
功能已过时,仅出于向后兼容性目的进行记录。如果您的着色器在 GPU 上运行的程序。 更多信息
参见 术语表
源文件包含 HLSL 代码,则 Unity 会完全忽略这些命令。如果您的着色器源文件不包含 HLSL 代码,则 Unity 会在导入时将这些命令编译成常规着色器程序。

渲染管线兼容性

功能名称 内置渲染管线一系列操作,用于获取场景内容并在屏幕上显示。Unity 允许您选择预构建的渲染管线,或编写您自己的渲染管线。 更多信息
参见 术语表
通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定义 SRP
旧版顶点数据通道映射

概述

BindChannels 命令允许您指定顶点数据如何映射到图形硬件。默认情况下,Unity 会为您确定绑定,但在某些情况下,您可能希望使用自定义绑定。

例如,您可以将主要 UV 集映射到第一个纹理阶段中使用,将次要 UV 集映射到第二个纹理阶段中使用;或者告诉硬件应考虑顶点颜色。

语法

BindChannels { Bind "source", target }

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

可以是以下之一

  • Vertex:顶点位置
  • Normal网格表面垂直方向,由向量表示。Unity 使用法线确定对象方向并应用阴影。 更多信息
    参见 术语表
    :顶点法线
  • Tangent:顶点切线
  • Texcoord:主要 UV 坐标
  • Texcoord1:次要 UV 坐标
  • Color:每个顶点的颜色

目标可以是以下之一

  • Vertex:顶点位置
  • Normal:顶点法线
  • Tangent:顶点切线
  • Texcoord0Texcoord1、…:对应纹理阶段的纹理坐标
  • Texcoord:所有纹理阶段的纹理坐标
  • Color:顶点颜色

详情

Unity 对哪些源可以映射到哪些目标有一些限制。对于VertexNormalTangentColor,源和目标必须匹配。来自网格Unity 的主要图形基元。网格构成了 3D 世界的大部分内容。Unity 支持三角形或四边形多边形网格。NURBS、NURMS、细分曲面必须转换为多边形。 更多信息
参见 术语表
TexcoordTexcoord1)的纹理坐标可以映射到纹理坐标目标(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:旧版纹理组合
HLSL 预处理指令参考