赞
踩
先上一张官方图,看下流程:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。