Blend详解

来源:互联网 发布:c语言app 编辑:程序博客网 时间:2024/06/17 21:43

先上一张官方图,看下流程:

FragmentShader之后会进行AlphaTest,最后会经过Blending,才会写入缓冲区。

Blend 指令默认是关闭的。 Blend Off

Blend操作公式:Blend SrcFactor DstFactor

这里的SrcFactor和DstFactor参数参见官网:https://docs.unity3d.com/Manual/SL-Blend.html

当使用Blend时,最终颜色被计算为result = fragment_color * SrcFactor + pixel_color * DstFactor,这个fragment_color即是经过处理的片段颜色,也就是fragment返回的结果,pixel_color是原本存在于缓冲区的颜色,因为可能渲染过其他模型嘛~这个result颜色被重新写入缓冲区,等待被其他片段Blend或者变成最终颜色(如果没有被其他Blend)。

Blend的一个基本的用法就是用来实现透明
对于一个半透明物体,我们需要根据透明度将颜色分为两部分,比如透明度为70%,可以认为最终颜色是70%的该片段颜色和30%的背景颜色。所以Blend语句应该为Blend SrcAlpha OneMinusSrcAlpha,引用连接
http://m.blog.csdn.net/article/details?id=45942107

Blend默认操作是混合相加
同时unity提供了其他的操作方式BlendOp,Max(取计算的最大值),Min(取最小值),Sub(相减,当前-目标),RevSub(相减,目标-当前)
示例,可以用来做一些图像裁剪:
BlendOp RevSub
Blend One One

原创粉丝点击