遮挡剔除全解析:PVS、HiZ、软光栅与引擎实现对比

遮挡剔除全解析:PVS、HiZ、软光栅与引擎实现对比

引言:为看不见的 80% 付渲染工资

开放世界城市场景中,玩家视野外的建筑、被楼宇遮挡的街道占场景几何的大多数,若全部送入 GPU,Draw Call 与顶点量会失控。视锥剔除只能解决"视野外",而遮挡剔除(Occlusion Culling)解决"视野内但被挡住":只要物体被不透明几何完全遮挡,就直接跳过渲染。

遮挡剔除的核心约束只有一条:剔除的开销必须远小于被剔除物体本应的渲染开销。所有算法的差异,都是在不同硬件条件下逼近这条约束的方式。

一、与视锥剔除的分工

维度视锥剔除遮挡剔除
剔除依据物体与视锥体的相交关系物体是否被不透明几何遮挡
实现成本低(BVH/AABB 平面测试)高(预计算或深度查询)
误剔除风险极低需要谨慎配置
执行顺序先执行在视锥剔除之后进一步过滤

两者是串联关系:先视锥剔除剪掉视野外对象,再遮挡剔除剪掉被挡对象。

二、算法谱系:四类主流方案