0

我尝试为 Starling 制作一个着色器,它将反转 Starling sprite 的 alpha(一种蒙版):

var fragmentProgramCode:String =
// Get texture
"tex ft1, v0, fs0 <2d,linear,nomip>" + "\n" +
// make 1 - pixel alpha
"sub ft1.w, fc0, ft1.w" + "\n" +
// Send result
"mov oc, ft1"

此代码适用于 fc0 = 1,但我真的不明白为什么,因为当我使用 fc0 并将其放入 0.5 时,没有区别。我哪里错了?如何正确执行 1 像素 alpha ?

4

1 回答 1

0

正确的代码是:"sub ft1.w, fc0.x, ft1.w" + "\n" +

我必须使用 fc0.x,因为 alpha 量通过第一个条目传递给片段着色器(fc0 有 4 个分量,xyz 和 w)。

您将在此处找到最终过滤器:https ://gist.github.com/simsoft/5169715

阿尔法逆变器滤波器

于 2013-03-15T13:03:27.290 回答