影响性能的因素
对于一个游戏来说,它主要需要使用两种计算资源:CPU和GPU。它们会相互合作,来让我们的游戏可以在预期的帧率和分辨率下工作。其中,CPU主要负责保证帧率,GPU主要负责分辨率相关的一些处理。
1.CPU
1)过多的draw call
2)复杂的脚本或者物理模拟
2.GPU
1)顶点处理。过多的顶点;过多的逐顶点计算。
2)片元处理。过多的片元(既可能是由于分辨率造成的,也可能是由于overdraw造成的);过多的逐片元计算。
3)宽带。使用了尺寸很大且未压缩的纹理;分辨率过高的帧缓存。
优化技术
1.CPU
1)使用批处理技术减少draw call数目。
2.GPU
1)减少需要处理的顶点数目。优化几何体;使用模型的LOD技术;使用遮挡剔除技术。
2)减少需要处理的片元数目。控制绘制顺序;警惕透明物体;减少实时光照。
3)减少计算复杂度。使用Shader的LOD技术;代码方面的优化。
3.节省内存宽带
1)减少纹理大小。
2)利用分辨率缩放。
减少draw call数目
Unity中支持两种批处理方式:一种是动态批处理,另一种是静态批处理。对于动态批处理来说,优点是一切处理都是Unity自动完成的,不需要我们自己做任何操作,而且物体是可以移动的,但缺点是,限制很多,可能一不小心就会破坏了这种机制,导致Unity无法动态批处理一些使用了相同材质的物体。而对于静态批处理来说,它的优点是自由度很高,限制很少;但缺点是可能会占用更多的内存,而且经过静态批处理后的所有物体都不可能再移动了。
动态批处理
如果场景中有一些模型共享了同一个材质并满足一些条件,Unity就可以自动把它进行批处理,从而只需要花费一个draw call就可以渲染所有的模型。动态批处理