WebGL 渲染管线与剔除算法综述

1,208 阅读1分钟

场景剔除工作原理

  • 可见性剔除
  • 遮挡剔除

常用剔除算法

  • 视锥体剔除
    • 一般是遍历视椎体的 6 个面,算出物体的中心到面的最小距离(带正负方向的)与包围球的半径做比较,如果小于半径,就表示在外面。
  • 视口剔除(渲染管线-图元装配(裁剪))
  • 背面剔除(渲染管线-图元装配(背面剔除))
  • Early Z Culling(渲染管线-测试(深度测试))
  • 距离剔除
    • 通过物体和相机的距离进行判断物体是否被剔除,原理比较简单,剔除效率也相对较高。在UE4中可以通过物体属性设置剔除的最大距离和最小距离(如下图):
  • 遮挡剔除
    • 遮挡剔除是指在相机剔除后,在视野范围内仍然有许多物体直接有遮挡关系的,不需要进行渲染,虽然 gpu 有深度测试,会将有遮挡的物体进行剔除,但是我们仍然希望在提交 GPU 之前对遮挡关系进行判断,提前剔除掉一些东西,减少渲染压力。
  • 遮挡查询(Occlusion Query)
  • Hiz Culling(不懂)
  • PVS(不懂)

原文