たとえば、シェーダー フィルターを使用して、アルファの乗算を解除できます。次のように言います。
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;
}
}
コードでアルファの正しいしきい値を設定するだけです。ここでアルファは間隔 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);