shader学习之路——ShaderLab的混合命令

ShaderLab中设置混合因子的命令
命令描述
Blend SrcFactor DstFactor开启混合,并设置混合因子。源颜色(该片元产生的颜色)会乘以SrcFactor,而目标颜色(已经存在于颜色缓存的颜色)会乘以DstFactor,然后把两者相加入后再存入颜色缓冲中
Blend SrcFactor DstFactor SrcFactorA DstFactorA和上面几乎一样,只是使用不同的因子来混合透明通道

混合公式:

      Orgb = SrcFactor * Srgb + DstFactor * Drgb

      Oa  =  SrcFactorA * Sa + DstFactor * Da

 

Shade Lab中的混合因子
参数描述
One 因子为1
Zero因子为0
SrcColor因子为源颜色值。当用于混合RGB的混合等式时,使用SrcColor的RGB分量作为混合因子;当用于混合A的混合等式时,使用SrcColor的A分量作为混合因子
SrcAlpha因子因为源颜色的透明度值(A通道)
DstColor因子为目标颜色值。当用于混合RGB通道的混合等式时,使用DstColor的RGB分量作为混合因子;当用于A通道的混合等式时,使用DstColor的A分量作为混合因子
DstAlpha因子为目标颜色的透明度值(A通道)
OneMinusSrcColor因子为(1-源颜色)。当用于混合RGB的混合等式时,使用结果的RGB分量作为混合因子;当用于混合A的混合等式时,使用结果的A分量作为混合因子
OneMinusSrcAlpha因子为(1-源颜色的透明度值)
OneMinusDstColor因子为(1-目标颜色)。当用于混合RGB的混合等式时,使用结果的RGB分量作为混合因子;当用于混合A的混合等式时,使用结果的A分量作为混合因子
OneMinusSrcAlpha因子为(1-目标颜色的透明度值)

 

混合操作

ShaderLab中混合操作
操作描述
Add

将混合后的源颜色和目标颜色相加。默认的混合操作。使用的混合等式是Orgb = SrcFactor * Srgb + DstFactor * Drgb

Oa = SrcFactorA * Sa + DstFactorA * Da

Sub

用混合后的源颜色减去混合后的目标颜色。使用的混合等式是:

Orgb = DstFactor * Drgb - DstFactor * Drgb

Oa = SrcFactorA * Sa - DstFactorA * Da

RevSub

用混合后的目标颜色减去混合后的源颜色。使用的混合等式是:

Orgb = DstFactor * Drgb - SrcFactor * Srgb

Oa = DstFactorA * Da - SrcFactorA * Sa

Min

使用源颜色和目标颜色中最小的值,是逐分量比较的。使用的混合等式是:

Orgba = (min(Sr , Dr),min(Sg,Dg),min(Sb,Db),min(Sa,Da))

Max使用源颜色和目标颜色中最大的值,是逐分量比较的。使用的混合等式是:Orgba = (max(Sr,Dr),max(Sg,Dg),max(Sb,Db),max(Sa,Da))
其他逻辑操作仅在DirectX.11.1中支持

 

常见的混合类型:

        1.Blend SrcAlpha OneMinusSrcAlpha   //正常(Normal),即透明度混合

        2.Blend OneMinusDstColor One     //柔和相加(Soft Additive)

        3.Blend DstColor Zero  //正片叠底(Multiply),即相乘

        4.Blend DstColor SrcColor  //两倍相乘(2x Multiply)

        5.BlendOp Min             Blend One One   //变暗(Darken)

        6.BlendOp Max            Blend One One    //变量(Lightne)

        7.Blend OneMinusDstColor One      //滤色(Screen)

        8.Blend One OneMinusSrcColor     //等同于

       9.Blend One One  //线性减淡(Linear Dodge)

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值