ShaderLab: Legacy BindChannels

25 篇文章 0 订阅
25 篇文章 0 订阅

ShaderLab: Legacy BindChannels

BindChannels 命令允许你定义顶点数据如何映射到显卡。

Note*: 当使用 vertex programs 时, _BindChannels 不会生效, 在这种情况下 bindings 被 vertex shader 输入控制。如今使用可编程 shader 代替固定管线过程是明智的。*

默认情况,Unity 会处理 bingdings,但是在某些情况,你会希望自定义一个。

例如你可以映射主UV被设置用在第一个 texture 阶段,第二级UV被用在第二个 texture 阶段;或告诉硬件顶点颜色应该被考虑。

Syntax

BindChannels { Bind "source", target }

制定顶点数据 source 映射给硬件 target.

Source 可以是其中一个:

  • Vertex: vertex position
  • Normal: vertex normal
  • Tangent: vertex tangent
  • Texcoord: primary UV coordinate
  • Texcoord1: secondary UV coordinate
  • Color: per-vertex color

Target 可以是其中一个:

  • Vertex: vertex position
  • Normal: vertex normal
  • Tangent: vertex tangent
  • Texcoord0, Texcoord1, …: texture coordinates for corresponding texture stage
  • Texcoord: texture coordinates for all texture stages
  • Color: vertex color

Details

Unity对哪些资源可以映射到哪些目标进行了一些限制。Source 和 target 必须匹配 Vertex, Normal, TangentColor。来自 mesh 的 Texture 坐标 (Texcoord and Texcoord1) 可以被映射进纹理坐标 target (Texcoord for all texture stages, or TexcoordN for a specific stage).

这里有 BindChannels 的两个典型用例:

  • Shaders that take vertex colors into account.
  • Shaders that use two UV sets.

Examples

// 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
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值