21.Shader中Blend渲染命令的参数

  1. 21.Shader中Blend渲染命令的参数
    1. 21.1 题目
    2. 21.2 深入解析
      1. 写法一:
      2. 写法二:
    3. 21.3 答题示例
    4. 21.4 关键词联想

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 中的 SrcAlphaOneMinusSrcAlpha 是混合因子,用来控制新片元(源)与帧缓冲(目标)颜色的权重:

  • 源因子(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

×

喜欢就点赞,疼爱就打赏