文章

shader入门基础知识六

shader入门基础知识六
  • content

Cg 入门三 swizzle 操作

swizzle操作实例
swizzle操作实例 通过 swizzle 操作,可以将 float2,或者 float2 的分量重新组成其他的 float3,float4。 这个时候 float2 的 x,y 分别是 1,0 新组成的 float4 则是(1,0,0,1)因此是红色。

swizzle操作实例 swizzle操作实例

可以同时使用分量,顺序也是可以打乱的。这里我们使用 float2 的分量,并且 y 在前,x 在后,所以新的 float4 是(0,1,0,0),因此是绿色的。对于 swizzle 操作,向量的分量可以是 xyzw,也可以是 rgba,但是在一次操作中 是不允许使用 xyzw 和 rgba 的。

swizzle操作实例
swizzle操作实例

swizzle 操作也允许相同的分量多次使用,例如全部取 x。这时候对应的 float4 的值是(1,1,0,1) 红色+绿色是黄色,因此如图我们获取到的是黄色。

swizzle操作实例 swizzle操作实例

在矩阵中我们不能直接使用 xyzw,但是通过下标我们可以获取到对应的向量,这时候是可以使用 swizzle 操作的,如图我们使用的全是 x,因此对应的 向量值是(1,1,1,1)是白色。

swizzle操作实例
swizzle操作实例

如上图,数组也是不可以使用分量而是需要通过下标获取的。

本文由作者按照 CC BY 4.0 进行授权