跳转至

深度测试

Early-Z 与 Late-Z

  • Early-Z: 先进行深度测试, 只有通过的片元才会进行着色.
  • Late-Z: 先着色后然后进行深度测试, 会导致不必要的计算.

GPU 将根据片元着色器是否写入深度缓冲区来决定使用 Early-Z 还是 Late-Z, 如果深度缓冲区被写入, 则要再之后进行深度测试才有意义.

在 Late-Z 模式下, 片元 (fragment) 类似带 Z 坐标的像素, 一个像素可能对应多个片元, 后续通过深度测试才决定该像素使用哪个片元的颜色.

层次化 Z 缓冲区

别名: 深度金字塔 (Depth Pyramid).

层次化 Z 缓冲区 (Hierarchical Z-Buffer, HZB) 通过创建类似四叉树的层级结构, 加速深度测试.
每个层级的 Z 缓冲区存储了子缓冲区的最小 Z 值.
片元在进行深度测试时首先和最高层中对应的 Z 缓冲区进行比较, 如果片元的 Z 值更大则直接抛弃, 否则继续向下比较.

评论