shader之——最常用的Blend

shader的Blend混合一直是个很头痛的东西,组合的种类比较多,所以效果比较难记得,所以今天来总结一下

1.Blend SrcAlpha OneMinusSrcAlpha  源颜色 x 源通道  +  目标颜色 x(1 - 源通道)          

  A * alpha + B*(1-alpha)

这就是我们常用的 alpha blending ,效果比较接近源颜色,可以深一些

2.Blend One One //additive  :源颜色 + 目标颜色  正常的叠加模式 

A + B

这种模式,是叠加模式,颜色只会比目标颜色亮,很难降低颜色,但是它可以不用通道,黑色就可以替代通道颜色

3.Blend SrcAlpha One //additive blending  源颜色 x 源通道   +  目标颜色   带通道的叠加模式(常用的ADD模式)

A*alpha + B

跟第2种比较接近,但是他需要alpha通道,如果黑白图,可以将黑白图的R通道取出来作为alpha通道,但是记得修改颜色和强度的时候,想办法避免就可以了


4.Blend OneMinusDstColor One //soft additive  源颜色 x (1-目标颜色)  +  目标颜色   

A * (1-B) +B

这种也是add模式,相对温柔一点,只认黑白图,不用管通道


5.Blend DstColor Zero //multiplicative  源颜色 x 目标颜色 + 0(目标颜色 x 0) 

A * B+0


6.Blend DstColor SrcColor //2x multiplicative  源颜色 x 目标颜色 + 目标颜色 x 源颜色     正片叠底的效果

A*B + A *B


7.Blend  Zero SrcAlpha   // multiplicative blending for attenuation by the fragment's alpha     0(源颜色 x 0)+目标颜色 x 源通道 

下面为各种效果的大致效果



选项代号

与之等价的代码

One

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

Zero

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

SrcColor

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

SrcAlpha

使用此因子为将当前值乘以帧缓冲区源颜色Alpha的值。A*alpha

DstColor

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

DstAlpha

 使用此因子为将当前值乘以帧缓冲区目标颜色Alpha分量的值。B*alpha

OneMinusSrcColor

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

OneMinusSrcAlpha

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

OneMinusDstColor

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

OneMinusDstAlpha

使用此因子为将当前值乘以(1 –目标Alpha分量的值) 1- B*alpha


猜你喜欢

转载自blog.csdn.net/baicaishisan/article/details/79072127
今日推荐