【Unity Shader】 Blend

一、介绍

这里写图片描述
Blending(混合)是计算机呈现渲染结果的最后阶段,混合操作用于与所有计算已结束且已决定将当前计算结果输出到帧缓冲中,此时,如何将待渲染的像素与G-buffer中已的像素进行作用,是直接替换原来的,还是一加一的混合,这就需要混合命令来告诉GPU混合方式。

二、语法:

1. 命令
Blend Off:关闭混合(默认)
Blend SrcFactor DstFactor : 片元产生的颜色乘以SrcFactor,加上屏幕上已有的颜色乘以DstFactor,得到最终的颜色(写入颜色缓存)
Blend SrcFactor DstFactor, SrcFactorA DstFactorA:和上面一样,但是使用不同的因子来混合Alpha通道。
BlendOp Op:不要将混合颜色添加到一起,而是对他们执行不同的操作。
BlendOp OpColor, OpAlpha:与上面相同,但对颜色(RGB)和alpha(A)通道使用不同的混合操作。
2. factor 混合因子
  • One
    混合因子1,表示完全的源颜色或目标颜色
  • Zero
    混合因子0,舍弃源颜色或目标颜色
  • SrcColor
    源颜色值
  • SrcAlpha
    源透明度
  • DstColor
    目标颜色值
  • DstAlpha
    目标透明度
  • OneMinusSrcColor
    1-将要渲染的像素颜色值
  • OneMinusSrcAlpha
    1-SrcAlpha
  • OneMinusDstColor
    1-屏幕上(G-buffer中)的像素
  • OneMinusDstAlpha
    1-DstAlpha
3. BlendOp 混合操作

默认Add,也可以改为其他
- Add
加法:FinalColor = SrcFactor* SrcColor + DstFactor* SrcColor
- Sub
减法(源-目标): FinalColor = SrcFactor* SrcColor - DstFactor* DstColor
- RevSub
减法(目标-源): FinalColor = DstFactor* DstColor - SrcFactor* SrcColor
- Min
较小值(逐个通道比较)
- Max
较大值(逐个通道比较)
- 此外还有DX11.1专属的其他操作,具体参考ShaderLab Blending手册

三、混合效果

混合命令混合效果
Blend SrcAlpha OneMinusAlpha正常模式(传统透明度混合)
Blend OneMinusDstColor One柔和相加(soft Additive)
Blend DstColor Zero正片叠底(Multiply 相乘)
Blend DstColor SrcColor两倍相乘(2X Mutiply)
BlendOp Min ,Blend One One变暗
BlendOp Max ,Blend One One变亮
Blend OneMinusDstColor One滤色
Blend One One线性变淡

参考

Unity ShaderLab Blending
Shader Blend混合效果
Unity 之 Shader Blend 混合操作 - 八

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页