返回介绍

ShaderLab语法:绑定通道(BindChannels)

发布于 2021-06-20 00:15:04 字数 1440 浏览 945 评论 0 收藏 0

绑定通道 (BindChannels) 命令让您可以指定顶点数据如何绘制到图形硬件中。

使用可编程的顶点着色器时,绑定通道无效,因为这种情况下,捆绑由顶点着色器输入控制。

默认情况下,Unity 为您进行绑定,但是在有些情况下,您需要自定义使用的绑定。

例如:您可以绘制在第一个纹理阶段使用的主要 UV 集和第二个纹理阶段使用的辅助 UV 集;或者通知硬件要考虑顶点颜色。

语法

BindChannels { Bind "source", target }
指定顶点数据源 (source) 映射到硬件目标 (target)

源 (Source) 可以是:

  • 顶点 (Vertex):顶点位置
  • 法线 (Normal):顶点法线
  • 切线 (Tangent):顶点切线
  • 纹理坐标 (Texcoord):主要 UV 坐标
  • 纹理坐标 1 (Texcoord1):次要 UV 坐标
  • 颜色 (Color):逐顶点颜色

目标 (Target) 可以是:

  • 顶点 (Vertex):顶点位置
  • 法线 (Normal:顶点法线
  • 切线 (Tangent):顶点切线
  • Texcoord0, Texcoord1, ...:相应纹理阶段的纹理坐标
  • 纹理坐标 (Texcoord):所有纹理阶段的纹理坐标
  • 颜色 (Color):顶点颜色

详细信息

Unity 在哪些源可绘制到哪些目标上有一些限制。源和目标在 顶点 (Vertex)、法线 (Normal)、切线 (Tangent) 和 颜色 (Color) 上必须是相匹配的。网格的纹理坐标(Texcoord 和 Texcoord1)可绘制到纹理坐标目标(对于所有的纹理阶段为 Texcoord 或者对于特定阶段为 TexcoordN)。

BindChannels 的两个经典使用案例:

  • 考虑顶点颜色的着色器。
  • 使用两个 UV 集的着色器。

示例

// 将第一个 UV 集绘制到第一个纹理阶段
// 并将第二个 UV 集绘制到第二个纹理阶段
BindChannels {
   Bind "Vertex", vertex
   Bind "texcoord", texcoord0
   Bind "texcoord1", texcoord1
} 
// 将第一个 UV 集绘制到所有纹理阶段
// 并使用顶点颜色
BindChannels {
   Bind "Vertex", vertex
   Bind "texcoord", texcoord
   Bind "Color", color
} 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文