Unity高阶-项目优化-遮挡剔除

遮挡剔除技术

遮挡剔除是一种什么样的特性呢, 当一个物体被其他物体遮挡住而不在摄像机的可视范围内时不对其进行渲染。. 遮挡剔除在3D图形计算中并不是自动进行的。因为在绝大多数情况下离 camera 最远的物体首先被渲染,靠近摄像机的物体后渲染并覆盖先前渲染的物体(这被称为重复渲染,无效渲染"overdraw"). 遮挡剔除不同于视锥体剔除. 视锥体剔除只是不渲染摄像机视角范围外的物体而对于被其他物体遮挡但依然在视角范围内的物体则不包括在内. 注意当你使用遮挡剔除时你依然受益于视锥体剔除(Frustum Culling).

在检视面板(Inspector) 你需要标识(tag) 所有需要应用遮挡剔除的场景物体。最快的方法是选择多个想要遮挡计算的物体,然后标记它们为Occlusion Static 和 Occludee Static。

我应该在什么时候使用Occludee Static?透明物体不能遮挡,以及小物件,都不可能阻挡其他的东西,应标记为Occluders,但不是遮挡。这意味着它们将被视为能被其他物体遮挡,但不会被视为作为遮挡物自身,这将有助于减少计算量。

对于大场景,一定要用上遮挡剔除,要不场景大了,渲染绘制的太多,会很卡。

首先创建一个简单的场景。

一个大的物体挡住后面N多小物体。

如图:

Unity高阶-项目优化-遮挡剔除_第1张图片

接下来我们来设置物体的遮挡和被遮挡,一般直接设为Static,但是我建议最好还是自己勾选。

先全部选中,然后勾上OccluderStatic和OccludeeStatic,如图:

Unity高阶-项目优化-遮挡剔除_第2张图片

勾选完成后,打开遮挡剔除的属性面板,如图:

Unity高阶-项目优化-遮挡剔除_第3张图片

烘焙概念及设置

Realtime:对动态物体还是静态物体都使用实时光源.

Baked:只对静态物体使用烘焙光照. 对动态物体没有作用.

Mixed:对静态物体使用烘焙光照, 对动态物体使用实时光源.

你可能感兴趣的:(Unity高阶-项目优化-遮挡剔除)