最好的优化即是不要优化,从一开始就应该把优化当成是游戏设计中的一部分。

移动平台特点

和PC相比,移动平台上的GPU结构有很大的不同,资源非常有限,因为移动设备上的GPU架构更专注于更小的带宽。由于这些不同,一些游戏往往需要针对不同的芯片发布不同的版本。

影响性的因素

影响渲染效率的,主要有两个大课题CPU和GPU。GPU主要负责帧率,而GPU主要负责分辨率。
据此,造成瓶颈的主要有几个方面:
CPU:

  • 过多的Draw call
  • 复杂的脚本或物理模拟

GPU:

  • 过多顶点
  • 过多逐顶点计算
  • 过多片元(可能是分辨率或是overdraw重绘造成的)
  • 过多的逐片元计算

带宽:

  • 使用过大纹理
  • 分辨率更高的帧缓存

对于CPU来说主要是是每一帧里的Draw call的数目,因为每次CPU在通知GPU渲染之前都需要把数据(位置、法线、颜色等…)准备好,再调用一系列API让GPU渲染,如果过多,则会造成CPU瓶颈。
而对于GPU它负责整个流水线,它会做一系列工作最终把数据显示在屏幕上。因此主要和顶点数量、屏幕分辨率、显存有关。

渲染分析工具

统计空间

在Game视窗的右上方的Stats打开它。

如何用GPU优化CPU gpu 优化_shader

信息名称

描述

每帧的时间和FPS

在Graphic的右侧显示,处理一帧所需的时间和FPS

Batches

一帧中批处理的数目

Saved by batching

合并处理数目,表明批处理节省了多少drawcall

Tris和Verts

要绘制三角面片数量和顶点数目

Screen

屏幕大小与点用的内存大小

SetPass

使用Pass数量

Visible Skinned Meshes

渲染的网格数目

Animations

播放的动画数目

性能分析器

通过Window>>Profiler打开。

如何用GPU优化CPU gpu 优化_Shader工具_02


绿线是批处理数量,蓝色是Pass数量,还有别的信息…

因为Unity在背景要进行很多工作,所以会花费比预期更多的draw call。

帧调试器
Window>>FrameDebugger可以清楚地看到每个一个Draw call的工作结果。

其他性能分析工具
Andriod:高通的Adreno分析工具,英伟达的NVPerfHUD工具
IOS:PowerVRAM的PVRUniSco shader,Xcode中的OpenGL ES Driver Instruments