本文主要是介绍为什么Aplha test会使得Early-z失效?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如图
1、只开启Early-z,Early-Z从前往后(先A再B)写入深度值,先写入A的深度值,然后B发现自己的深度更大,会抛弃这些(粉红色)片段。到后面执行片段着色器的时候,B中被A所遮盖的那片粉红色区域就不会执行片段着色器了。
2、只开启AlphaTest,执行片段着色器的时候,假设A不会通过AlphaTest,自然不会往深度缓冲中写入深度值,所以再渲染B的时候,B发现深度缓冲还没人来过,就更新深度缓冲,并把自己的颜色写入颜色缓冲。
3、但是,如果同时开启了Early-Z和AlphaTest:首先执行Early-Z,会把A的深度写入深度缓冲。在片段着色器中,如果A的AlphaTest没通过,会把片段A丢弃,理应不会写入深度值(但是实际上Early-Z的时候已经写入了&
这篇关于为什么Aplha test会使得Early-z失效?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!