21.Shader中Blend渲染命令的参数
21.1 题目
Shader当中的Blend渲染命令后面跟的参数是用来干嘛的?
比如:
Blend SrcAlpha OneMinusSrcAlpha
21.2 深入解析
Pass
{
Tags { "LightMode"="ForwardBase" }
ZWrite Off
//写法一:混合方式的 基本格式
Blend 源因子 目标因子, 源透明因子 目标透明因子
//写法二:混合方式的 省略格式
Blend 源因子 目标因子
}
Blend混合命令后面跟的参数有两种写法,这些因子其实就是一些特定的数,用于参与混合计算。
写法一:
- 输出颜色的RGB值 = 源因子 * 片元颜色的RGB值 + 目标因子 * 颜色缓冲区中颜色的RGB值
- 输出颜色的Alpha值 = 源透明因子 * 片元颜色的Alpha值 + 目标透明因子 * 颜色缓冲区中颜色的Alpha值
写法二:
- 输出颜色的RGB值 = 源因子 * 片元颜色的RGB值 + 目标因子 * 颜色缓冲区中颜色的RGB值
- 输出颜色的Alpha值 = 源因子 * 片元颜色的Alpha值 + 目标因子 * 颜色缓冲区中颜色的Alpha值
21.3 答题示例
“
Blend SrcAlpha OneMinusSrcAlpha
中的SrcAlpha
与OneMinusSrcAlpha
是混合因子,用来控制新片元(源)与帧缓冲(目标)颜色的权重:
- 源因子(SrcFactor) = SrcAlpha:新片元的颜色分量乘以自身的 alpha 值;
- 目标因子(DstFactor) = OneMinusSrcAlpha:帧缓冲已有颜色分量乘以 (1 – 源 alpha)。
最终颜色 = 新片元颜色 × α + 旧颜色 × (1 – α),这正是标准的透明度混合公式,实现了半透明效果。”
21.4 关键词联想
- 混合因子(Blend Factor)
- 源色(Source Color) vs 目标色(Destination Color)
SrcAlpha
/OneMinusSrcAlpha
- 半透明(Transparency)
- 加色混合(Additive Blending)
- 混合方程(BlendOp)
- RGB 与 Alpha 分离
- 遮罩/混合模式
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com