目录
前言
P1
Early-Z
Early-Z是把深度测试提前到PS阶段之前,从而减少PS阶段的计算量,也就是减少overdraw。(是在硬件上的优化,由各硬件厂商完成)
Z-PrePass
单独的一个pass去渲染深度
P2
总结Early-Z的限制
适用情况:
- Early-Z通常是通过preZ来实现的,但是在DrawCall特别高的场景里使用preZ会造成负优化,所以通常需要考虑用DrawCall换OverDraw值不值的问题
- 对于多个透明物体进行的渲染,Early-Z是不起作用的(透明物体通常不写入深度)
会失效的情况:
- 开启Alpha Test 或 clip/discard等手动丢弃片元操作
- 手动修改GPU插值得到的深度
- 开启Alpha Blend
- 关闭深度测试
如何生效?
- Early-Z属于硬件优化,如果硬件支持会自动开启
简单测试