混合操作(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倍乘法
-