知识卡片

z 缓冲区靠逐像素距离比较解决前景/背景遮挡

专业/工作 · 1294.f

内容

当汽车和大楼的投影落在图像的同一区域时,最终画面该显示哪个取决于谁离摄像机更近——按物体整体远近顺序依次绘制的”画家算法”简单直观,却处理不了两个物体局部交织(比如一棵树的一部分在某物体前、另一部分在其后)的情况。z 缓冲区提供了更彻底的解法:为每个像素单独维护一个记录”当前已渲染的点距摄像机多远”的值,每当有新的候选点要写入这个像素时,就比较它与摄像机的距离和 z 缓冲区里已记录的距离——只有更近的点才有资格覆盖当前的像素颜色和距离记录,更远的点直接被忽略。发散:z 缓冲区的关键洞察是把”谁该显示在最终画面上”这个全局排序问题,拆解成了”每个像素独立地只关心离自己最近的那个点”这个局部判断问题——不再需要事先给整个场景的物体排出一个全局远近顺序(画家算法的做法),只需要让每个像素在处理过程中自己维护一份局部的最优记录,这种把全局问题拆成大量独立局部判断的思路,在并行计算里格外好用,也是 z 缓冲区特别适合用专用硬件并行加速的原因。

参考来源

《计算机科学概论》第10章《计算机图形学》