学习教程来自:【技术美术百人计划】图形 3.5 Early-z和Z-prepass
Early-z和Z-prepass
1.深度测试
Depth Test,用来解决物体可见遮挡性
顶点着色器->曲面细分->几何着色器->光栅化->片元着色器->透明度测试->模板测试->深度测试->混合
渲染流程详见:
技美知识学习1100:渲染管线
没有通过测试的片元会被丢弃,导致这些片元的计算量被浪费
2.提前深度测试
Early-Z,用来解决过多不必要的片元计算问题(1中的缺陷)
顶点着色器->曲面细分->几何着色器->光栅化->提前深度测试->片元着色器->透明度测试->模板测试->深度测试->混合
没有通过Early-Z的片元会被丢弃,不进入片元着色器进行计算
在提前阶段的位置也可以添加模板测试
2.1.Early-Z失效的情况
- 开启Alpha Test或clip/discard等手动丢弃片元操作(但是深度信息还在)
- 手动修改GPU插值得到的深度(原因同上)
- 开启Alpha Blend(深度写入关闭ZWrite Off)
- 关闭深度测试Depth Test
2.2.Early-Z使用条件
当渲染顺序为如图所示时,每次提前深度测试时都抛弃了上一次计算得到的片元,保留了当前的计算结果。这样的渲染顺序不会有优化结果
反之,顺序颠倒后则优化效果最大

本文详细介绍了Early-Z和Z-Prepass技术在图形渲染中的应用,包括它们如何减少不必要的片元计算,提高渲染效率。同时探讨了这两种技术的优缺点,并通过实例演示了如何在头发渲染和X光效果实现中应用这些技术。
最低0.47元/天 解锁文章
9945





