Version: 6000.3
语言: 中文
ShaderLab:传统纹理组合
HLSL 编译指示参考

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

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

渲染管线兼容性

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

概述

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

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

语法

BindChannels { Bind "source", target }

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

可以是以下之一:

  • 顶点:顶点位置
  • 法线垂直网格表面的方向,由 向量(Vector) 表示。Unity 使用法线来确定对象方向并应用着色。更多信息
    请参阅术语表
    :顶点法线
  • 切线:顶点切线
  • Texcoord:主 UV 坐标
  • Texcoord1:辅助 UV 坐标
  • 颜色:每个顶点颜色

目标可以是以下之一:

  • 顶点:顶点位置
  • 法线:顶点法线
  • 切线:顶点切线
  • Texcoord0Texcoord1, ...: 相应纹理阶段的纹理坐标
  • Texcoord:所有纹理阶段的纹理坐标
  • 颜色:顶点颜色

Unity 对哪些源可以映射到哪些目标施加了一些限制。源和目标必须匹配顶法线切线颜色。纹理坐标来自meshUnity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表
(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 编译指示参考