赞
踩
Unity因为需要能跨平台开发,内置了mono虚拟机,导致导出的包会比较大
https://www.zhihu.com/question/36357893
https://zhuanlan.zhihu.com/p/26386905
DrawCall很简单,就是cpu对图形绘制接口的调用,CPU通过调用图形库(directx/opengl)接口,命令GPU进行渲染操作。
DrawCall是如何影响性能的 :
每一次绘制CPU都要调用DrawCall,而在调动DrawCall前,CPU还要进行很多准备工作:检测渲染状态、提交渲染所需要的数据、提交渲染所需要的状态。
而GPU本身具有很强大的计算能力,可以很快就处理完渲染任务。
当DrawCall过多,CPU就会很多额外开销用于准备工作,CPU本身负载,而这时GPU可能闲置了。
做个试验:拷贝1000个总大小1M的文件和单个大小为1M的文件,明显拷贝1000个文件要慢很多,DrawCall调用和这个很类似。
那么可以在哪看DrawCall呢?
Unity优化翻译官方文档(五) ------ Profiler window
https://blog.csdn.net/wdmzjzlym/article/details/51335915
Statistics窗口,全称叫做 Rendering Statistics Window,即渲染统计窗口(或渲染数据统计窗口),窗口中罗列出关于声音、图像、网络状况等多种统计信息
参数解析:
①.FPS(Time per frame andFPS):frames per seconds表示引擎处理和渲染一个游戏帧所花费的时间
该数字主要受到场景中渲染物体数量和 GPU性能的影响,FPS数值越高,游戏场景的动画显示会更加平滑和流畅。一般来说,超过30FPS的画面人眼不会感觉到卡,由于视觉残留的特性,光在视网膜上停止总用后人眼还会保持1/24秒左右的时间,因此游戏画面每秒帧数至少要保证在30以上。另外,Unity中的FPS数值仅包括此游戏Scene里更新和渲染的帧,编辑器中绘制的Scene和其它监视窗口的进程不包括在内。(越高越好)
②.CPU:获取到当前占用CPU进行计算的时间绝对值,或时间点,如果Unity主进程处于挂断或休眠状态时,CPU time将会保持不变。(越低越好)
③.Render thread:GPU渲染线程处理图像所花费的时间,具体数值由GPU性能来决定,
④.Batches(批处理):即Batched Draw Calls,是Unity内置的Draw Call Batching技术。
引擎每对一个物体进行一次DrawCall,就会产生一个Batch,这个Batch里包含着该物体所有的网格和顶点数据,当渲染另一个相同的物体时,引擎会直接调用Batch里的信息,将相关顶点数据直接送到GPU,从而让渲染过程更加高效,即Batching技术是将所有材质相近的物体进行合并渲染。
⑤.Verts:摄像机视野(field of view)内渲染的顶点总数。
⑥.Tris: 摄像机视野(field of view)内渲染的的三角面总数量。
新建一个空的场景,里边没有添加任何物体,为什么Status面板上显示有1.7k Tris以及5.0kVerts。这是因为空的场景自带默认的天空盒。点击Windows---Lighting打开Lighting下的Scene面板,把Skybox里的材质设为空,比如像我下图这样:
⑦.Screen:获当前Game屏幕的分辨率大小,后边的2.1MB表示总的内存使用数值。
⑧.SetPass calls
为了实现相应的效果,Shader里或许会包含很多的Pass,每当GPU即将去运行一个Pass之前,就会产生一个“SetPass call”,因此在描述渲染性能开销上,“SetPass calls”更加有说服力。
⑨.Shadow casters:表示场景中有多少个可以投射阴影的物体,一般这些物体都作为场景中的光源
⑩.visible skinned meshed:渲染皮肤网格的数量。
⑪.Animations:正在播放动画的数量。
在移动端性能优化:
1.渲染
2.脚本
3.内存管理
4.美术
5.批次
6.物理
接下来一次对这些方面进行项目的优化,并进行总结
参考文章 : https://zhuanlan.zhihu.com/p/26030252
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。