在alpha compositing wiki中,我看到混合方程式是这样的(没有预乘):
但是在this slides中,等式是这样的:
在第一个等式中,outRGB
除以outAlpha
。
这是什么意思?哪一个是正确的等式?
答案 0 :(得分:0)
分裂的第一个公式是正确的。第二个是错误的,或者是为了采用非预乘的颜色并产生预乘的颜色。
无论如何,从预乘的公式中导出非预乘的公式非常容易,这恰好非常简单直观:
blended = front + back * (1.0 - front.a);
直觉是:我们采用正面颜色并为其添加一些背面颜色,即我们可以通过正面颜色看到的颜色。
非预乘版本将是:
blended.a = front.a + back.a * (1.0 - front.a);
blended.rgb = (front.rgb * front.a + back.rgb * back.a * (1.0 - front.a)) / blended.a;
请注意,此公式以及您提供的公式假定alpha在[0,1]范围内,而不是[0,255]。