一、unity自身组件:遮挡剔除(Occlusion Culling):当物体被送进渲染流水之前,将视锥以内看不到的物体进行剔除,减少每帧的渲染量,提高渲染性能。
1.1 步骤
a、创建Plane,放上Cube作为游戏物体,设置为静态。
b、window面板下找到Occlusion Culling组件,object中选择烘焙的物体,bake面板中点击bake(bake前先保存场景!!!!!)
缺点:遮罩的是camera看不到的物体。
二、InstantOC插件
2.1 步骤
1.创建层
2.为游戏物体指定层(将参与遮挡剔除)与标签(将自动附加 IOClod脚本)
3.物体添加碰撞器Collider组件
4.摄像机附加脚本IOCcam
属性
确保剔除物体显示正常的阴影。Layer mask:参与遮挡剔除的游戏对象层。
OC Tag:将为指定标签的游戏对象自动添加IOClod脚本对象。
Samples:每帧摄像机发射的射线数目。数量多剔除效果 好,但性能开销大。通常在150—500之间。
Rays FOV:射线视野,应大于摄像机视野Field of View。
View Distance:视图距离,射线长度。将影响摄像机Clipping Planes –Far 数值。
Hide Delay:延迟隐藏,当物体被剔除时延迟的帧数,建 议50—100之间。
•PreCullCheck:检查采集信息,建议勾选,可以提高剔除 效率。
•RealtimeShadows:实时阴影,如果场景需要实时阴影, 建议启用。
优点:减少渲染压力,优化GPU显示
缺点:需要消耗额外CUP
LOD多细节层次:
步骤
1.创建层
2.创建空物体并将模型添加到其中,命名为:Lod_0 Lod_1 Lod_2
3.为父物体指定层与标签
4.父物体或子物体添加碰撞器组件
5.摄像机附加脚本IOCcam
属性
Lod1 distance:摄像机到物体距离小于当前距离时,使 用Lod_0模型。
Lod2 distance:摄像机到物体距离大于Lod1且小于当前 距离时,使用Lod_1模型,大于当前值使用Lod_2模型。
LodMargin:LOD边缘,如果物体在LOD各阶段过渡时发 生闪烁,尝试提高当前值。
缺点:消耗CPU判断距离、占用内存、需要三个模型(付费的不需要三个)
适用:高面模型比较多、有远近变化
性能优化:
CPU、渲染、内存
以上方式均需要给物体添加collider组件!