性能分析和优化实战

性能分析和优化实战

简介:P是我们一个项目,这篇文章在于如何精准的来优化。游戏在低配机器运行效率只有10-30左右的FPS。

目标:需要找出几个优化的方向来满足低配机器有更好的操作手感,首先排除掉Bug引起的多渲染的问题,再进行多个修改点来进行观察,来确定几个最大优化点。

1,Bug检查

通过Profile观察得出CPU运算远远低于GPU运算(如下图所示),Gfx.WaitforPreesentOnGfxThread 表明在等待显卡渲染。说明GPU渲染拉低了CPU数值。

请添加图片描述

所以在脚本层并无严重影响CPU性能的脚本。所以按照最费优先解决原则(优先解决最卡的)。

我们先从GPU来检查。看有没有显示层多现实的BUG,如下图:

游戏中的MainCamera是游戏主相机,我们能看到图中的娃娃3D模型,而3D模型上的图案是通过上面的2DPaintRoot里的JvgCamera(下面简称2D相机)呈现到3D上的材质球的纹理映射上去的。我们要看有没有多显示没必要渲染的部分,这里省略了(牵扯到游戏详细的制作细节过于繁杂,不是本文重点)

请添加图片描述

经过分析2D相机并无多渲染,3D呈现相机也无多渲染。我们排除掉Bug的可能。

2,优化GPU

我们打开了Profiler的DeepProfile进一步分析得出,part0的2D渲染占用很多,如图:
请添加图片描述

我们可以看到图中3个part0占用最大,我们分别尝试屏蔽掉2D相机和3D相机,2D占用相对比较高,因为对于相机3D和2D只是面数多少问题和材质问题,这个图里有5个part0,面数远远高于3D相机面数。

但是part0的模型的材质球已经是很简单的材质球,并无复杂的渲染运算。很多人想到了去减面和合并Drawcall。通常来讲是没错的,但是对于这个项目来说并不适用。

首先减面就会损失模型精度,而且面数你不以几何倍数的砍是看不出碱面带来的效果提升的,再者美术同学可能还要面临重新制作的问题。

再者Drawcall只有5个,而且可能面临超过65k面的问题,也不会带来直观的性能提升。

解决办法

因为我们的目标是要低配机型能够比较流畅的游戏,那么可以稍微损失一点画质来达到。

我们可以从系统设置和2D相机参数入手,首先是品质,2D相机采用了4倍抗锯齿,4k分辨率,这已经是顶配参数了。(如图)

在这里插入图片描述

性能提升1

我们先把品质从Medium改为Low,其实参数中知识Anti参数从4变成关闭。这样所有的渲染应该都能提升,我们看到Fps从30升到了40。

在这里插入图片描述

性能提升2

我们再来调整2D相机参数,下图就是2D相机的渲染RenderTexture。我们把Anti也关掉,这里虽然系统设置品质关了抗锯齿,但是这里改为None后还是能够看到Fps提升到了51Fps,画质其实也有变化的。
在这里插入图片描述

性能提升3

我们再来改变下纹理大小看看。如图:
在这里插入图片描述

我们再次把大小也改到了2000x2000的时候,FPS就一直在60-70之间浮动了。

经过测试降低抗锯齿和分辨率也能显著降低GPU消耗。目前来说也是比较好的优化方式,改动小收益大,但是会微弱的降低低配机器的画质。

阶段整体测试

最后我们再来看一次CPU和GPU的对比(我把RenderTexture调到了1000x1000,后面说为什么)
请添加图片描述

我们再来看CPU,GPU,基本都达到了60FPS,CPU的最费效率的还是Semaphore .WaitForSignal,他还是在等待GPU,说明还是要进一步优化GPU才能提高整体游戏表现。

我们再来看下图中的GPU,还是CameraRender,我们看到了MainCamera已经到3.7,大于2D相机的2.0了,之前是2000x2000的RenderTexture会比MainCamera高一点,所以我降低了,更加能认识到纹理大小对性能的影响。

请添加图片描述

最后我们看看RenderMesh什么最费GPU,我们看到了是base了。至此2D相机优化告一段落。

请添加图片描述

结论

到这里我们可以看到从开始的Render.Mesh函数从30ms降低到了2ms,单项提升了30ms。整体的FPS也从低于30提升到了60以上。另外品质参数我们可以通过识别玩家设备FPS来定义品质,需要自己去考虑实现方式来满足特定产品,这里不详细介绍了。

注意:另外在进行性能测试时候最好关闭垂直同步,能更清晰直观的看到曲线变化,避免影响判断。最重要的是找配置比较低的测试机器也同样重要,最好和目标客户机器配置相同,最好是具有CPU、GPU同等运算能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值