仅将红色分量写入AGAL像素着色器输出

时间:2013-03-05 15:24:55

标签: fragment-shader pixel-shader agal

我想要一个像素着色器om AGAL,而不是简单地将从顶点着色器传递给它的颜色复制到输出,只复制传递颜色中的红色分量并将绿色和蓝色分量设置为零。在伪代码中:

temp = 0
temp.red = in.red
temp.alpha = in.alpha
out = temp

我无法弄清楚如何在AGAL中写这个。以下不这样做:

mov ft0.ra, v0.ra
mov oc, ft0

如何获得我想要的结果?

1 个答案:

答案 0 :(得分:1)

你必须记住

  • 使用目标寄存器右侧的“.something”表示您正在使用掩码
  • 使用源寄存器右侧的“.something”意味着您正在使用swizzles。

假设

  • fc0在第一个组件中包含零
  • v0包含要从中提取红色成分的颜色

所以这是你的片段着色器:

// shader.
mov ft0, fc0.xxxx     // fill ft0 with zeros
mov ft0.xw, v0.xxxw   // fill ft0.x with v0.x and ft0.w with v0.w
mov oc, ft0

来源:我将Minko的ActionScript 3写入AGAL编译器。