我正在尝试实现预乘 alpha 混合。在此页面上:什么是颜色混合?,它们确实解释了标准 alpha 混合,但不解释预乘值。
Alpha 混合 : (source × Blend.SourceAlpha) + (destination × Blend.InvSourceAlpha)
根据公式,它转化为:
a = ((srcA * srcA) >> 8) + ((tgtA * (255 - srcA)) >> 8);
r = ((srcR * srcA) >> 8) + ((tgtR * (255 - srcA)) >> 8);
g = ((srcG * srcA) >> 8) + ((tgtG * (255 - srcA)) >> 8);
b = ((srcB * srcA) >> 8) + ((tgtB * (255 - srcA)) >> 8);
Run Code Online (Sandbox Code Playgroud)
它有效,显然......
现在如何将其转换为处理预乘值? …