笔记
Early-Z
● 通过将深度测试提前,减少不必要的片元着色。
● 是在传统光栅化阶段之后,在片元着色器之前的一个操作。
● Early-Z剔除的最小单位不是1像素,而是像素块 (pixel quad, 2x2像素)
失效情况 / 限制:
- 开启了Alpha Test 或 clip/discard 等手动丢弃片元操作。
因为如果该片元是要丢弃的,但是它却先写入了深度,那么后续的片元将无法正确渲染。 - 手动修改GPU插值得到的深度
- 开启了Alpha Blend。
就不会开启深度写入,也就不符合Early-Z。 - 关闭深度测试
缺陷:
- 如果物体从远往近渲染,early-z的效率会很低,难以避免overdraw。
- 将渲染物体排序,从近往远渲染,消耗大,且难以判断跨度大的物体的远近。
Z Prepass
方式1
使用两个pass
- 第一个pass,只写入深度,不计算任何输出颜色
- 第二个pass,关闭深度写入,深度比较函数 设置为 相等。
缺陷: