UnityShader之四 混合操作(Blending)

UnityShader系列文章转载于 @浅墨_毛星云,为本人的学习笔记,转载请注明出处。

文章链接:https://blog.csdn.net/poem_qianmo/article/details/42060963

 

混合操作(Blending)

    混合操作最常见的用途便是用来制作透明物体、或者进行纹理混合。它是Shader渲染的最后一步

如上图所示,正被渲染的像素经过顶点光照、顶点着色器、剔除和深度测试、雾效、Alpha测试等一系列操作之后,最后一步便是混合操作。这个时候计算结果即将被输出到帧缓冲中。

混合操作,就是管理如何将这些像素输出到帧缓存中的一个过程。

 

混合操作有两个对象:源和目标,因此也有两个对应的因子,即源因子和目标因子

 

混合操作相关的句法

  • Blend Off

    • 关闭混合

  • Blend SrcFactor DstFactor

    • 基本的配置并启动混合操作。对产生的颜色乘以SrcFactor。对已存在于屏幕的颜色乘以DstFactor,并且两者将被叠加在一起。

  • Blend SrcFactor DstFactor,SrcFactorA DstFactorA

    • 同上,但是使用不同的要素来混合alpha通道,也就是有了4个操作对象

  • BlendOp Add | Min | Max | Sub | RevSub

    • Add——将源像素和目标像素相加

    • Sub——用源像素减去目标像素

    • RevSub——用目标像素减去源像素

    • Min——取目标像素和源像素的较小者作为结果

    • Max——取目标像素和源像素的较大者作为结果

 

混合因子(Blend factors)列举

    Blend SrcFactor DstFactor

    以下所有属性都可以作为SrcFactor或DstFactor。其中Source指的是被计算过的颜色,Destination是已经在屏幕上的颜色

  • One——值为1,使用此因子来让帧缓冲区源颜色或是目标颜色完全的通过

  • Zero——值为0,使用此因子来删除帧缓冲区源颜色或目标颜色的值。

  • SrcColor——使用此因子为将当前值乘以帧缓冲区源颜色的值

  • SrcAlpha——使用此因子为将当前值乘以帧缓冲区源颜色的Alpha的值

  • DstColor——使用此因子为将当前值乘以帧缓冲区目标颜色的值。

  • DstAlpha——使用此因子为将当前值乘以帧缓冲区目标颜色Alpha分量的值

  • OneMinusSrcColor——使用此因子为将当前值乘以(1-帧缓冲区源颜色值)

  • OneMinusSrcAlpha——使用此因子为将当前值乘以(1-帧缓冲区源颜色Alpha分量的值)

  • OneMinusDstColor——使用此因子为将当前值乘以(1-目标颜色值)

  • OneMinusDstAlpha——使用此因子为将当前值乘以(1-目标颜色Alpha分量的值)

 

常见的混合操作句法示例

  • Blend SrcAlpha OneMinusSrcAlpha

    • Alpha混合

  • Blend One One

    • 相加

  • Blend One OneMinusDstColor

    • 比较柔和的相加

  • Blend DstColor Zero

    • 乘法

  • Blend DstColor SrcColor

    • 2倍乘法

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值