blendColor
blendColor
执行标准的“正常”Alpha 混合,将一个带有透明度(Alpha 通道)的颜色正确地叠加到基色之上。
核心优势
封装了标准的、包含预乘 Alpha 处理的复杂混合算法,确保了对透明度的正确处理,避免了手动实现时可能产生的透明边缘瑕疵,并极大地简化了着色器逻辑。
常见用途
将带有透明背景的贴花(Decal)或 Logo 应用到物体表面。
使用遮罩(Mask)来分层混合不同材质,如在金属上添加锈迹。
渲染半透明的视觉特效(如烟雾粒子)或 3D UI 元素。
通过动态改变 Alpha 值来创建物体的淡入淡出动画。
如何调整
效果完全由 `blend` 输入的 Alpha 通道(`blend.a`)控制。当 `blend.a` 为 0 时,显示 `base` 颜色;为 1 时,`blend` 颜色完全覆盖 `base` 颜色。介于 0 和 1 之间的值会产生半透明叠加效果。通常使用一张遮罩纹理来控制 `blend.a`,从而精确定义混合发生的区域。
代码示例
1// 使用遮罩纹理,将半透明的水坑颜色混合到干燥的地面上
2const finalResult = blendColor(
3 dryGroundTexture, // base: vec4
4 vec4( waterColor.rgb, waterColor.a * puddleMask.r ) // blend: vec4
5);