1.背景

这几天玩了一个美术表现不错的游戏,忍不住想扒点模型资源和效果。

直接用UnityStudio解包拿到fbx。
但是一起解压出来的三张贴图,一张普通贴图,一张法线,还有一张就难住我了。

这个绿色的是什么用处的,在群里问了一圈小伙伴也表示不知道?

没有什么头绪,那就只好用GPU分析软件来调试。

上一次用GPU分析软件还是2年前了,用的是Mali的MGD,需要搭配Root的手机。
现在手上只有一台自用红米Note8,没有Root,于是本次使用群大佬推荐的RenderDoc。
本文转自https://huutu.blog.csdn.net/article/details/111659729

RenderDoc之前我只在PC上用过,没想到对Android支持也如此完善,有多完善,往下看就知道。

2.目标

这次分析,主要解决3个疑问:
1.美人鱼的三张纹理中,绿色的那张是什么用途?
本文转自https://huutu.blog.csdn.net/article/details/111659729
2.游戏中bloom的方式

3.冰冻特效如何制作

3.RenderDoc调试分析基础

官网:https://renderdoc.org/

GameDevTools已经集成,搜索 RenderDoc即可下载运行。
GameDevTools是一套游戏开发常用工具集,输入关键词即可找到想要的工具。
目前托管在Github:https://github.com/ThisisGame/GameDevTools

安装后打开,界面如下:本文转自https://huutu.blog.csdn.net/article/details/111659729

3.1 连接Android手机(无需root)

手机开启调试模式,打开AndroidStudio看logcat是否正常输出Log,确认连接OK。

点击RenderDoc左下角,切换到手机进行连接。
本文转自https://huutu.blog.csdn.net/article/details/111659729
选择手机之后,会通过adb,往手机上安装一个RenderDocCmd的插件app,然后启动。

RenderDocCmd hook了Android的 gles渲染接口,然后将数据回传到PC端的RenderDoc。


上图表示正在启动手机上的RenderDocCmd。


上图表示手机上的RenderDocCmd已经启动成功,可以开始调试了。

同时,你的手机上应该是这样的:

3.2 调试目标游戏

本文转自https://huutu.blog.csdn.net/article/details/111659729
按上图选择目标游戏启动Activity。

选择好之后,手机会断开连接。
重新选择手机连接。

点击Launch按钮,开始调试目标游戏。
一般都会收到下图错误。


这是因为,目标游戏是打的Release模式APK,而不是Debug模式的。

那怎么办呢?
不要急,RenderDoc为我们提供了一键重新打包服务。

来一番骚操作。

首先,选择另一个游戏,然后Launch,应该也是上面的错误。
然后再选择目标游戏。

这样来回选择,直到选择目标游戏的时候,出现下图的提示。


本文转自https://huutu.blog.csdn.net/article/details/111659729

点击黄色区域,就会自动对选中的游戏进行重新打debug包了。


重新打包完成之后,再次点击 Launch,这次一定成功,目标游戏在手机上自动运行起来了。

RenderDoc界面也发生了变化。


点击箭头所指按钮,即可截取当前帧所有渲染事件。


截取的这一帧数据,显示在列表区域中。

此时截取的这一帧数据,仍然保存在手机上,一旦手机断开,就不可用。
所以最好立即保存到电脑磁盘中。 对封面图片右键,选择
save,然后找个地方存起来。

双击封面图片,打开详细Drawcall列表。

左侧列表中,就是每一次Drawcall。
中间的大图默认就是当前Drawcall后的效果。
右边的小图是输入输出。本文转自https://huutu.blog.csdn.net/article/details/111659729

和Unity的FrameDebuger类似,其实所有的GPU分析工具都差不多。

4.RenderDoc分析具体场景

下面使用RenderDoc来分析开始提到的3个问题。

4.1 美人鱼的三张纹理中,绿色的那张是什么用途?

在RenderDoc中开始调试目标游戏,玩一会儿游戏,等到出现美人鱼的时候,截取一帧数据进行分析。
在左侧渲染事件窗口,鼠标单击,找到渲染美人鱼模型的地方。

当前界面示意如上图。
右侧Inputs纹理列表,表示当前提交的纹理资源,以及shader变量名字。
从变量名字,就可以看出这个纹理的作用。

绿色的纹理,传递到shader的MetallicGlossMap变量,说明这是一张金属光泽的贴图。

其他贴图名称及作用
BumpMap 凹凸贴图(用来呈现衣服褶皱之类的凹凸效果
AlphaMask 不透明度贴图(可以让你的服装呈现半透明状态)
MetallicGlossMap 金属反光度贴图(影响质感跟光泽度显示的一张贴图)

这个名称很熟悉,在Unity Standard Shader里,就有。
那么不管目标游戏是不是用Unity Standard Shader,我这里就先用了。

将绿色贴图,拖到 Metallic里。
效果如下:

4.2 游戏中bloom的方式

Bloom 俗称全屏泛光,就是物体周围有一层光晕的效果,其实就是近视眼不带眼睛看灯的感觉。
本文转自https://huutu.blog.csdn.net/article/details/111659729
简单介绍Bloom就是,先普通渲染一次,然后渲染亮度高的物体一次并进行若干次高斯模糊,然后将两次渲染结果混合。

对目标游戏截取一帧进行分析。

步骤1:将普通渲染结果输出到Texture,将其作为输入,计算出较亮部分,输出到Texture。

具体是怎么实现的呢,切换到渲染流水线选项卡 Pipeline State。

后期特效都是在FS中完成,所以这里查看fs shader代码即可。
按图中,第4步,点击Edit查看fs shader代码。
继续按照上面步骤1的方式,对左侧列表渲染事件进行查看。
总结Bloom步骤如下:

最终效果

4.3 冰冻特效如何制作

步骤和上面一样,在游戏中出现冰冻效果时,截取一帧。
找到冰冻效果最开始的EID 1684,按顺序分析。

值得注意的是,这里输出到FBO 尺寸比我的手机尺寸小,这是游戏自动降低画质了。

总结步骤如下:本文转自https://huutu.blog.csdn.net/article/details/111659729

如果要还原效果,就参考Pipeline中给的Shader,在Unity里重写一遍就好。

5.总结

掌握一点OpenGL基础之后,就可以尝试去分析其他游戏的渲染流程,扶着鹰酱过河。RenderDoc又给我们提供了极大的便利,调试其他游戏更加方便,实乃学习必备神器。

RenderDoc[01] 使用RenderDoc 分析Android游戏(免Root)相关推荐

  1. LSPatch —— 一款基于Android的免root框架

    前言 LSPosed(百度百科) 是一个基于 Riru 的 ART hook 框架 (最初用于 Android Pie) ,提供与原版 Xposed 相同的 API, 使用 YAHFA (或 Sand ...

  2. android 平板root,【Android】免root即能修改Android ID,實現手機平板共用一個Line不互踢...

    為何網路上會有人有修改「Android ID」的需求呢? 假設你有A手機與B手機,若把B手機的Android ID改成與A手機一樣,會有許多妙用的地方,例如: 多手機(平板)同時登同一個Line而不會 ...

  3. android 按键 免root,按键精灵免root版

    按键精灵免root版是手机上的键盘模拟软件,可以使用这个软件,自动操作,制作功能强大的脚本.非常多的免费脚本软件可以直接搜索,直接使用.电脑前需要双手操作的动作,使用按键精灵免root版,在手机上也能 ...

  4. 使用Adreno Profiler分析android游戏

    2016-04-17 19:38 by 风恋残雪, 3466 阅读, 0 评论, 收藏, 编辑 http://www.cnblogs.com/ghl_carmack/p/5401906.html 有时 ...

  5. 用夜神模拟器+GPA分析Android游戏

    环境: 1.Intel GPA 18.3 2.夜神模拟器6.0.9.0配置: 夜神模拟器/分辨率设置/手机版 显卡渲染模式/极速模式(DirectX)用GPA启动夜神 按Ctrl+Shift+C截帧 ...

  6. Dexposed:Android平台免Root无侵入AOP框架

    本文来自阿里巴巴技术协会(ATA) 本文首发于 http://www.infoq.com/cn/news/2015/07/dexposed 近日,阿里巴巴无线事业部推出首个重量级Android开源项目 ...

  7. android root 恢复出厂设置,Android系统 免root 卸载预置应用

    如下方法仅能删除当前系统中预置的 APP,恢复出厂设置后,删除的 APP 会恢复.如不清楚包名对应的应用请自行百度,请勿轻易删除未知报名导致系统损坏. 1.关于手机连续点击软件版本号6次,开启手机开发 ...

  8. 移动叔叔工具箱android,真正免root的移动叔叔工具箱详细使用教程

    移动叔叔工具箱的功能 1.移动叔叔工具箱Android是移动叔叔ROM组发布的工具软件   2.通过这个工具箱,你可以直接进入工程模式和Recovery模式,并且在系统内卡刷Recovery模块   ...

  9. Android手机免root安装Linux+图形化

    最近在家呆久了无聊就想把家里闲置的旧手机拿来折腾,经过几天总算差不多了!本来想着使用linux deploy的但是这个软件需要ROOT,而现在手机基本不支持root,我的手机又是华为的(华为的都关闭了 ...

最新文章

  1. SD销售订单输入成本中心
  2. 结对编程1 - 四则运算生成器的改进(201421123040,60,61)
  3. SuperSocket源码解析之开篇 (转)
  4. 每天一道LeetCode-----根据先序遍历和中序遍历还原二叉树
  5. 【caffe-Windows】训练自己数据——数据集格式转换
  6. 帧起始定界符_检测帧起始定界符的方法、装置、设备及计算机存储介质与流程...
  7. WCF与ASMX Web服务差异比较[译]
  8. Opencv之使用pylibdmtx解析DataMatrix码
  9. C/C++ debug(三)
  10. 如何调节idea jvm的最大内存_那个小白还没搞懂内存溢出,只能用案例说给他听了
  11. VirtualBox启动虚拟机出错VT-x disable
  12. 【Excel】数据透视表—标签合并居中
  13. Keil5的安装破解,包含MDK-ARM和C51
  14. 手把手教你玩转YOLOX--Windows(上)
  15. chrome手机版怎么扫描二维码_照片扫描仪软件手机版-照片扫描仪手机版官网版下载v3.2.0...
  16. 计算机用word做贺卡,利用word制作贺卡
  17. Codeforce Gym 100015I Identity Checker 暴力
  18. 作品集也可以很有创意:一款用键盘操控汽车的可交互游戏式个人主页
  19. C语言程序设计第五次作业——循环结构1
  20. spring cloud 集成sentinel 报错 Failed to introspect Class

热门文章

  1. Ubuntu18.04 安装升级pip至20.2.2 坎坷过程
  2. 自学软件测试 - 功能测试篇
  3. JVM 学习笔记二十五、JVM监控及诊断工具-命令行篇
  4. 互联网商业模式有哪些?
  5. Python入门--程序控制-选择结构
  6. FAFU OJ 卡牌游戏
  7. Messenger更改系统语言以后无法登陆,提示“初始设置被修改”
  8. 中国幼儿园AI教材曝光!谷歌专家指导,娃娃也要学Python!
  9. 黑客美学 ——《黑客与画家》读书笔记
  10. 【算法图文动画详解系列】QuickSort 快速排序算法