当前位置:   article > 正文

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倍乘法

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/96704
推荐阅读
相关标签
  

闽ICP备14008679号