premultiplyAlpha
premultiplyAlpha
将一个直接Alpha(Straight Alpha)格式的颜色转换为预乘Alpha格式,以确保在渲染中获得正确的混合效果。
核心优势
它的核心价值是确保半透明物体与背景混合时在物理上是正确的,避免了因Alpha格式不匹配而产生的常见边缘瑕疵(如黑边)。
常见用途
渲染带透明通道的纹理(如PNG)
实现自定义的颜色混合或后期处理
将结果输出到要求预乘格式的渲染目标
如何调整
这是一个纯函数,其行为由输入颜色的Alpha值决定。当Alpha为1时,输出不变;当Alpha为0.5时,输出的RGB值会减半;当Alpha为0时,输出的RGB值会变为0。
代码示例
1// 组合成一个直接Alpha格式的颜色
2const straightAlphaColor = vec4( textureNode.rgb, textureNode.a.mul( opacityNode ) );
3
4// 使用 premultiplyAlpha 节点进行转换
5const premultipliedColor = premultiplyAlpha( straightAlphaColor );