Memo of Analysing Game Rendering 1 | 分析游戏渲染的姿势备忘之一

目前(2018)手机的GPU基本只有三家了:Mali, Qualcomm Snapdragon, PoverVR. 其中Mali主要是华为在用,Snapdragon是其它大部分的安卓机在用,比如小米/三星/OV/一加. PowerVR是苹果专用的,集成在果家的A系列CPU里了。这之中,ios的Xcode只能分析自己build的程序,没法逆向工程其他游戏。而Mali和Snapdragon分别有自己的GPU Profiler支持。

Tegra的GPU可以用Tegra Graphic Debugger分析,不过NV的这个GPU现在手机上用的不多了,笔者唯一知道的是13年的小米3. Tegra据说比较好的一点是可以拿到vertex buffer,然后就可以自己写代码解析模型信息。由于顶点数据结构复杂,profiler并不知道每个stride的哪些部分是位置,哪些是uv之类,因此profiler看到的模型有时候会是uv的分布。

比如这篇Unity内还原《镇魔曲》场景渲染效果就是用Tegra抓帧分析的。

除此以外,还有一种方法使用Intel GPA,在pc上分析渲染,用安卓模拟跑。

Mali Graphic Debugger

直接参考这里下载安装就好了,有一个user guide指导安装。建议root,不过不root也可以,但有一些限制,直接参考userguide就好了。但是笔者没有华为的root机,比较麻烦,没有选择这种方式。

Snapdragon Profiler

高通以前的profiler叫做Adreno Profiler,官网说是Adreno 2xx, 3xx, or 4xx GPU device支持的,当前主流的Snapdragon 660/835的芯片组已经是Adreno 5xx了,可能不支持了。Snapdragon Profiler需要Snapdragon 805以后的处理器,应该2013年之后的都支持。笔者尝试用红米note3接adreno profiler,并没有成功。感觉真机的限制比较大,也没有采用这种方式。

Intel Graphic Performance Analyzers

这个可以用在Intel的图形处理器上,也就是Intel的CPU Core酷睿处理器自带的HD Graphics系列。可以对DX渲染的程序进行分析。一般Intel的电脑上都有,不过没法用NV的独立显卡分析。 有一种操作是对游戏的pc客户端分析,但是有些客户端不是用DX渲染,而且客户端和真机渲染不一定一致。更保险的是在电脑上运行安卓模拟器进行抓帧分析。由于GPA可以自动连到运行的进程,使得使用十分简便。可以参考 用GPA对android应用绘制分析使用安卓模拟器和GPA截帧分析手游

对于模拟器的选择,笔者测试了Genymotion, 网易mumu,逍遥安卓都没有成功。但是用夜神模拟器是可以的。

至于GPA,Trace翻译的这篇文章使用 Intel GPA 与 分析3D程序和抓取模型里,提供了GPA2014的下载地址和使用方式。最新的版本是GPA2017P4,  增加了不少新功能。不过这个版本需要在官网上注册,过一两天才会用邮件的形式将安装包链接发送过来。笔者也推荐这个版本。

实例分析

这里分析了一下绝地求生:全军出击

这一帧是比较开阔的场景。其实抓了两帧被和在一起了,一帧是190DC,20w面左右。可以看出使用了很多种的植被,用了大量的Instancing. 甚至远处的树也都是instancing出来的。植被占了不少的面数。另外会用shadowmap的方式做实时阴影。

上方的图可以自己设定x坐标和y坐标,这里x是drawcall,y是面数,并且用RenderTarget进行了分组。可以看到shadowmap/正常渲染/后处理/UI几个部分。左下是一个一个drawcall的信息。下中是当前选中drawcall的信息,包括bind的信息:贴图/模型等,shader代码,输出结果。下右是渲染统计。

这一帧房子比较多,250DC,22w面。一个房子3k面,一棵树小于1k面

地面用control map渲染的,四张splat似乎,没有法线。

模型都是可以抓出来的。地面是1000m的切块,11k面。LOD远景大概1.5k面。这个地面是相当节约的。


另外没有发现有LOD合批。终结者的LOD似乎都是atlas合模型的,而且没用实时阴影。这样看来全军出击还是有优化空间的。

参考文献:

Unity内还原《镇魔曲》场景渲染效果

Mali Graphic Debugger

Snapdragon Profiler

用GPA对android应用绘制分析

使用安卓模拟器和GPA截帧分析手游

使用 Intel GPA 与 分析3D程序和抓取模型

Intel Graphic Performance Analyzer

One thought on “Memo of Analysing Game Rendering 1 | 分析游戏渲染的姿势备忘之一

发表评论

电子邮件地址不会被公开。 必填项已用*标注