- Early-Z = 硬件自动把深度测试挪到像素着色器之前,省着色开销;用
discard会破坏它 - Hi-Z = 用深度金字塔数据,在三角形光栅化之前就整体剔除,省得更彻底
- 层级深度缓冲 = Hi-Z 依赖的数据结构本体,把深度缓冲做成 Mip-map 形态
实际写 URP Shader 时,保持 ZWrite On + 不用 discard + 不透明队列保持前后排序,这三条规则就能把三种优化都喂饱。


Hi-Z 剔除逻辑1. 取三角形在屏幕上的包围盒2. 选取能覆盖包围盒的最小 Mip 层3. 读取该层的最大深度值 Z_max4. 比较三角形最近深度 Z_tri:Z_tri > Z_max三角形肯定被遮挡,整体跳过光栅化5. 否则进入正常光栅化流程关键点:读 1~4 个纹素就能剔除整个三角形,极其高效* 深度方向:1.0=最远,0.0=最近(默认)取最大值 = 保守估计遮挡物位置



Early-Z、Hi-Z与层级深度缓冲性能对比表
| 特性 | 普通 Late-Z | Early-Z | Hi-Z(层级深度缓冲) |
|---|---|---|---|
| 剔除粒度 | 逐像素(着色后) | 逐片元(着色前) | 整个三角形区域 |
| 节省的开销 | 无(基准) | 像素着色计算 | 光栅化 + 着色计算 |
| 额外内存 | 无 | 无 | +约 33%(金字塔层) |
| 实现方式 | 硬件自动 | 硬件自动(无 discard 时) | 硬件自动 / GPU Culling |
| 对 Shader 的要求 | 无 | 不用 discard / clip | ZWrite On,不透明队列 |
| URP 是否默认开启 | ------ | 是 | 是(取决于 GPU) |