【Unity学习笔记】 关于插件InstantOC的理解
【Unity学习笔记】 关于插件InstantOC的理解
渲染管线
渲染管线就是图形数据在GPU上经过运算处理,最后输出到屏幕上的一个过程。
这里就需要提到draw call,大概是CPU每次准备数据并通知命令GPU的操作。关系到每帧调用显卡渲染物体的次数。draw call相应的数值在Game面板中的stats的Batches中,Batches的多少关系到该场景对GPU的占用有多少。
渲染管线中CPU与GPU同时工作
顶点处理中涉及到坐标转化,接着就是连点画三角,围出一片像素区域,着色,写入显存
InstantOC Occlusio Culling(即时遮挡剔除)
- 目的:用于优化,把摄像机视锥以内看不见的东西剔除掉,从而减少draw call。
- 操作:把插件中的IOCcam组件添加到Camera中即可实现遮挡剔除,不过要注意设置目标剔除物体的tag和layer的设置,而且要添加collider组件,因为IOCcam的原理是射线检测,必须有碰撞体。还要注意sample和Hide delay的值,大概是射线发射的数量和持续发射一段时间来判断一个物体到底能否看见的两个属性。适中一点,少了检测不到,多了增加CPU的负担。设置完之后移动摄像机就会发现Game面板中的物体若处于视线遮挡状态,会在scene面板中发现这个GameObject已经停止了渲染。
- 优缺点:
1.首先它能减少GPU的负担
2.但同时因为发射很多的射线会导致CPU的负担加重。
所以说即时遮挡剔除用在游戏物体很密集的场景之中才会有明显的优化效果。
LOD(Leves of Detail)
- 目的:游戏中的模型为了达到一个很好的视觉效果,会有很多的顶点和三角面,达到一个平滑的效果。但是当这个游戏物体远离之后游戏中也显示不到这么精细的地方,所以就造成了GPU资源浪费,IOClod组件可以解决这个问题。
- 类似于Batches,在stats面板中的也有相应的顶点数和Tris三角面数,查看该场景所消耗的性能
- 我们可以导入多个模型,分别为高模、中模、低模。且各个模型名称必须为Lod_0,Lod_1…然后在组件中调节距离的数值,就可实现由该物体距摄像机的距离而选择哪一个模型。
- 优缺点:
1.同样可以减少GPU的占用
2.由于Hirarchy面板中的物体在游戏运行之后就会创建,所以会占用内存。同时CPU的开销也会有少许增加(还苦了美工)
一般用于需要显示高面的模型且有有距离变化的时候采用
Window中的profiler用于性能的监测,在优化的时候很好用。
profiler中显示了CPU、内存等的消耗情况,而且还有脚本中具体方法的消耗占用的数据,方便的一批。但是好像内存消耗测得不准,它连unity编辑器的占用内存也一并计入。