1

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

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

我不知道如何在 AGAL 中写这个。以下不这样做:

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

我怎样才能得到我想要的结果?

4

1 回答 1

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

资料来源:我为 AGAL 编译器编写了 Minko 的 ActionScript 3。

于 2013-04-10T19:14:46.633 回答