3D渲染中存储每像素深度值的内存层——决定几何体的遮挡关系。正确深度排序的基础。
当你坐在合成软件前,想知道为什么你的 3D 渲染突然看起来一团糟——物体错误地叠加,后面的东西反而显示在前面。Z 缓冲器就是你解决这个问题的工具。它为每个像素存储深度坐标——到摄像机的距离——并实时决定哪些几何体可见,哪些被遮挡。没有这个存储区域,3D 引擎就不知道一个立方体是否位于另一个立方体的前面或后面。
在实践中,它是这样工作的:GPU 在渲染场景的同时,会为每个像素不仅存储颜色,还存储其 Z 值——深度。当一个新的像素到达同一位置时,引擎会将其 Z 深度与存储的值进行比较。只有当新像素更靠近摄像机时,它才会被写入。这就是深度测试,它每帧都会运行数百万次。你不会注意到它,因为它速度非常快——但没有 Z 缓冲器,你每次都必须手动排序哪个图层在上。这简直是噩梦。
在 VFX 制作的现场,你需要 Z 缓冲器作为深度通道或Z 深度通道。这是一个单独的渲染层,它可视化深度值而不是颜色——亮色表示近,暗色表示远。在合成中,你可以用它来实现景深模糊,真实地叠加体积效果,或者使抠像更精确。许多渲染器现在将 Z 缓冲器存储为 32 位或 16 位通道——位深度越高,渐变越细腻,你的散景中的色带就越少。
一个容易出错的点:Z 冲突当两个几何体具有完全相同的深度时发生。然后 Z 缓冲器会在两个物体之间来回闪烁——一种烦人的故障。可以通过小的偏移值或正确的多边形排列来避免。如果你处理体积效果或透明物体,你还需要知道 Z 缓冲器只适用于经典的深度测试——有些效果需要独立于顺序的透明度 (OIT),这是一种以更优雅的方式解决透明度问题的不同算法。