先上一张官方图,看下流程:
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,引用连接
Blend详解
Blend默认操作是混合相加
同时unity提供了其他的操作方式BlendOp,Max(取计算的最大值),Min(取最小值),Sub(相减,当前-目标),RevSub(相减,目标-当前)
示例,可以用来做一些图像裁剪:
BlendOp RevSub
Blend One One
今天的文章Blend详解分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/61324.html