例如,您可以使用着色器过滤器对 alpha 进行反乘。像这样说:
kernel unmultiply_alpha
< namespace : "Your Namespace";
vendor : "Your Vendor";
version : 1;
>
{
input image4 src;
output pixel4 dst;
void
evaluatePixel()
{
pixel4 samp = sampleNearest(src,outCoord());
if (samp.a>0.1) {
samp.r=samp.r/samp.a;
samp.g=samp.g/samp.a;
samp.b=samp.b/samp.a;
}
dst=samp;
}
}
只需在代码中为 alpha 设置正确的阈值。这里 alpha 在区间 0..1 中,所以使用适当的值。是的,要应用过滤器,首先在代码中导入着色器的 PBJ(要制作 PBJ,使用 Pixel Bender)作为 ByteArray,然后使用:
var shader:Shader=new Shader(new ImportedShader() as ByteArray);
var filter:ShaderFilter=new ShaderFilter(shader);
bitmapData.applyFilter(bitmapData,bitmapData.rect,new Point(),filter);