当前位置:网站首页>Renderdoc 帧调试器
Renderdoc 帧调试器
2022-07-19 14:40:00 【Jaihk662】
注意,本文只适用于分析/Debug 自己的应用
- https://renderdoc.org/docs/window/event_browser.html#browsing-the-frame
https://docs.unity3d.com/cn/2020.2/Manual/RenderDocIntegration.html
一、下载 RenderDoc
应该不太需要去编一个源码版的,所以可以直接可以去官网下最新,正常安装完毕后,重启 Unity,右键 Game/Scene 窗口可以发现多了一个选项,点击后右侧如果出现 RenderDoc 标志就说明成功
点击右侧标志后,RenderDoc 就会自动截帧并打开,不过需要注意的是,此时 RenderDoc 截的是 Unity 编辑器的帧,而不是你游戏本身,所以尽量保证截帧时你 Unity 只渲染了 Game 视图,不然后续渲染事件列表会比较乱,除非你有特殊的需求:比如想要看 Scene 视图的渲染事件等
打开后可以先检查下 RenderDoc 右侧是否打开了 TextureViewer MeshViewer PipeLineState 这三个窗口,如果没有的话需要在 Window 菜单里将它们打开,不然的话后续就没法看到运行时效果
二、Unity Shader 调试
2.1 定位渲染事件
对于下图:
- 渲染事件窗口,这个和 Unity 游戏里的 FrameDebug 用法很像
- 渲染事件列表,只是个序号
- 同②,你可以通过点击其中的轴来快速定位渲染事件
- 找到你想 Debugger 的具体事件,就可以在右侧看到具体信息了
RenderDoc VS FrameDebug:
2.2 查看 Texture 和 Mesh
在截帧之前,需要在你的 Shader 里面加一行 #pragam,不然你 RenderDoc 看不到 Shader 源码,只能看到编译后的:
#pragma enable_d3d11_debug_symbols
如果你想要查看当前的片段着色:
可以按照图中的步骤:菜单选择 Texture Viewer → 右击你想要 Debug 的像素坐标 → 右下角点击 Debug 按钮,其中
- 可以查看当前输出 Texture 的各通道数据
- 可以将当前 Texture 自动调整为合适的大小,能让你看到全图,或者使其上下翻转
- 可以看到当前所有的输入纹理及输出纹理
如果你想检查深度测试或者模板测试结果等其它信息,需要在 Overlay 中选择对应的类别,它默认值是"None"
如果你想查看当前的顶点着色:
更加简单:菜单选择 Mesh Viewer → 右击你想要 Debug 的面片 → 右下角点击 Debug 按钮
2.3 对 Shader 做断点
然后就是主菜:无论你 Debug 顶点着色器还是片段着色器,都可以在 1.2 步骤之后进入这个界面,这就是你熟悉的 Shader 了,并且会有箭头自动指向当前片段/顶点着色器的入口
Shader 列表中除了所有你当前内存中的 HLSL 文件以外,头两个文件:Disassembly 为当前 shader 编译后的汇编版本,temp.hlsl 为你当前执行的 shaderPass,一般来讲不用特别关心,因为工具往往会自动给你指向着色器的起点
可以和平常代码一样“断点”,并且是支持回溯的那种
- Step forwards/backwards over:F10/Shift+F10 相当于逐过程
- Step forwards/backwards into:F11/Shift+F11 相当于逐语句
- Step forwards/backwards out:Ctrl+F11/Shift+Ctrl+F11 相当于跳出
还有要注意的是:
- 当你连续点击两次渲染事件后再选中片段/顶点进行调试,可能会先进入 History 界面,这时你右键最新的 Event 并选择 Debug Pixel 即可
- 如果你找不到你的 shader,界面中只有 Disassembly 这一个选项,参考这一步,检查是否有误或者是否需要重新截帧
- 只有 DX 支持断点 Shader 源码,OpenGL 无指令支持
2.3.1 数据追踪
- 鼠标移动到相关变量上,可以直接追踪数值
- 常量区,部分常量可能无法用鼠标追踪,似乎目前不支持搜索
- 变量区
2.3.2 通过管线来查看 Shader
也很简单,考虑到能看到这里的各位都有基础,就不详细介绍下图中管线的具体内容了
三、真机 Debug 包调试
在此之前你需要完成 ADB 连接 Android 真机/模拟器 调试 对应文章的环境配置,并且确保电脑中有安装 Java jdk
确保一切环境配置准备就绪后,按照以下步骤进行:
- 手机连接电脑,可以 adb devices 以测试连接情况
- 打开 RenderDoc,菜单 → Tools → Settings → Andriod → 配置你的 SDK 和 Java jdk 路径,此时手机同时会自动安装 RenderDoc 对应的小程序,如果没有按照成功或者发现下一步找不到你的手机型号,请先确保你手机是否有禁用某些程序的自动安装等设置
等待一会,RenderDoc 左下角会出现你的手机型号,点击后当图标变为插头形状并且手机屏幕上出现 RenderDoc 界面的时候,即表示连接成功
3.1 截帧自己开发的游戏
连接成功后,确定你要截帧的游戏包名,然后进入 RenderDoc 的 Launch Application 界面,按照下述步骤找到自己的包并设置,你的包必须要确保是 Debugable 的,像正式包就不行
正式包你想要截帧,可能需要解包并修改调试权限,或者直接开启手机 Root 权限设置全局 Debugable,这一步比较复杂,除此之外,正式包的包名的确定也要一定步骤
最后点击右下角的 Launch,等待手机帮你打开游戏就 OK,然后就是和调试 Unity 一样的操作就行了,需要注意的是:调试的整个过程中你可能要随时注意左下角 RenderDoc 与手机的连接情况,以保证他是连接的状态
参考文章:
- https://zhuanlan.zhihu.com/p/74622572
- https://blog.csdn.net/DaisyCold/article/details/122602714
- https://blog.csdn.net/x_xingduo_2315/article/details/112614499
- https://blog.csdn.net/woodengm/article/details/121223524
- https://zhuanlan.zhihu.com/p/80704313
- https://zhuanlan.zhihu.com/p/40345308
- https://blog.csdn.net/linjf520/article/details/123355372
- https://zhuanlan.zhihu.com/p/91476074
边栏推荐
- Conservative Novelty Synthesizing Network forMalware Recognition in an Open-Set Scenario
- OOM内存溢出实战不得不看的经典
- ProSci阿尔茨海默病 B-淀粉样蛋白检测套装说明书
- 第三十三基础:各种浏览器下的页面元素xpath获取方法
- 【CVA估值训练营】往届优秀学员分享
- The advantages and disadvantages of the implementation of ID generator and the principle analysis of the optimal ID generator
- C2AE: Class Conditioned Auto-Encoder for Open-Set RecognitionCVPR2019开放集识别论文解读
- Generalized odin: Detecting out-of-distribution image without learning from out-of-distribution data
- The top ten domestic open source projects in 2019 are coming fiercely
- SVM的核函数详解
猜你喜欢
Worthington肌动蛋白——分子特征及相关应用
Niuke multi school 1 C grab the seat!
GB-CosFace: Rethinking Softmax-based Face Recognition from the Perspectiv从开放集分类的角度重新思考基于Softmax的人脸识别
B+树算法在mysql中能存多少行数据?
# 搭建用户行为分析系统(一)——概述
牛客多校1 C Grab the Seat!
一氧化氮(NO)含量检测试剂盒丨Abbkine详细说明书
The general plan video is open! The first special account product of Quanguo fund will be launched soon, with 28 year old asset management veteran wangguobin at the helm!
Explain output analysis of MySQL
ProSci阿尔茨海默病 B-淀粉样蛋白检测套装说明书
随机推荐
How does redis expire and delete?
乳酸脱氢酶(LDH)活性检测试剂盒 丨Abbkine详细说明书
Spark source code (VII) RDD cache, persist, checkpoint function differences and source code analysis
文字走马灯
MySQL 之 Explain 输出分析
Sorting out the core knowledge of C language
Detailed explanation of parental delegation model and destructive parental delegation model
投身自媒体的普通人:他们是如何从从月入30到月入3万的
WebService初识(生成jar包,调用远程服务中的方法)
在测试VPN时候的惊天大坑,命令行查到的ip与百度搜索的ip不一致
Oom Memory overflow a classic That Must See in Real Games
Detailed explanation of kernel function of SVM
Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks解读
PHP报错:Classes\\PHPExcel\\Cell.php Line(594) Invalid cell coordinate ESIGN1
How many rows of data can b+ tree algorithm store in MySQL?
Human cell research: prosci LAG-3 recombinant protein scheme
响应式织梦模板装修装饰设计类网站
OpenSMax: Unknown Domain Generation Algorithm Detection ECAI2020开放集识别论文解读
Explain output analysis of MySQL
OpenGL ES之实现实时音频的可视化