premult
premult
将一个颜色从“直接 Alpha”格式转换为“预乘 Alpha”格式,这是正确处理半透明混合的关键步骤。
核心优势
通过执行 `output.rgb = input.rgb * input.a` 的转换,确保在使用 Alpha 混合时能正确渲染火焰、玻璃等半透明效果,从根本上避免了纹理边缘常见的黑边或色晕问题,并保证了与现代渲染管线的兼容性。
常见用途
在任何自定义透明材质的最后,格式化最终颜色输出以供 GPU 正确混合。
在后期处理中,对需要叠加的图层进行归一化,以简化并正确地进行图层合成。
在着色器中对“直接 Alpha”纹理进行模糊等处理前,先进行转换以避免插值错误。
如何调整
此节点没有可调参数,它执行一个固定的数学转换。其效果完全由输入颜色的 Alpha 通道决定:Alpha 为 1.0 时,RGB 值不变;Alpha 为 0.5 时,RGB 值减半;Alpha 为 0.0 时,RGB 值变为 0(黑色)。
代码示例
1// 在透明材质中,将颜色和不透明度合并并转换为预乘Alpha格式
2const finalColor = premult( vec4( baseColor, opacity ) );