赞
踩
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倍乘法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。