Premultiplied Alpha Blending
参考1:GPUs prefer premultiplication
参考2:Alpha Blending: To Pre or Not To Pre
参考3:WEBGL, BLENDING, AND WHY YOU’RE PROBABLY DOING IT WRONG
对于普通的rgba图片,rgb通道表示颜色,Alpha通道表示不透明度。比如一个半透明的红色像素,其颜色应该为(1,0,0,0.5)。在渲染中我们使用SrcAlpha OneMinusSrcAlpha的Blend Mode来实现半透明。
简单来说,Premultiplied Alpha Blending就是将半透明图片的RGB通道值预乘以alpha,即上述的像素将变为(0.5,0,0,0.5)。这个做法相当于将Blend Mode中SrcAlpha的系数乘法提前,且这个过程是对纹理数据进行的,发生在纹理采样之前。相应地,将Blend Mode从SrcAlpha OneMinusSrcAlpha改为One OneMinusSrcAlpha。
初看这似乎对颜色计算的结果并不会产生影响,只