手游效果分析(Snapdragon篇)

Posted by AK on July 18, 2018

之前写过一篇基于Aderno Profiler的手游效果分析,但这个工具高通早就没有维护了,在使用其分析游戏效果的时候也是错误百出。
还好,失之东隅,收之桑榆:Snapdragon profiler在更新之后要好用许多,足够我们完成对游戏效果的分析了。

本篇主要着眼于介绍工具本身,而不是具体的渲染技术,将以下面这个风动树为例来介绍:

带碰撞的风动树

一 连接手机

调出连接手机的窗口

点击连接

连接成功

二 截取一帧

调出Snapshot窗口

选中游戏,然后点击Take Snapshot

截取完毕之后的界面

三 定位Drawcall(以下简称DC)

定位到绘制树的DC: 风动树所绘制帧

四 分析DC

通过分析贴图、Shader等就基本能还原其效果了,这里分享几个小技巧:

1 定位具体资源

勾选Used,将仅当前DC所用到的资源(贴图、Shader等)显示出来

该帧所用主要资源

2 TEXCOORD0对应哪个贴图?

通过展开DC能看到TEXCOORD0、TEXCOORD1等分别对应哪个贴图

TEXCOORD0对应的是编号为96的贴图

3 修改Shader代码

修改Shader代码并应用,能看到具体的效果

修改树的输出颜色为白色,并应用

4 Program Inspector

通过ProgramInspector窗口,能看到该Shader所采用的全局变量具体的值,这在后续的效果还原中是相当重要的

可以看到具体的全局风向值

五 获取资源

接下来需要获取游戏相关的资源:

1 贴图

贴图很好获取,直接在Profiler中保存即可: 保存贴图

2 模型

通过NinjiaRipper可获取,具体操作可参见其官网

六 在Unity中还原

最后利用获取到的资源,还原出来的效果(带碰撞):

最终效果