IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Renderdoc 帧调试器 -> 正文阅读

[游戏开发]Renderdoc 帧调试器

注意,本文只适用于分析/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 定位渲染事件

对于下图:

  1. 渲染事件窗口,这个和 Unity 游戏里的 FrameDebug 用法很像
  2. 渲染事件列表,只是个序号
  3. 同②,你可以通过点击其中的轴来快速定位渲染事件
  4. 找到你想 Debugger 的具体事件,就可以在右侧看到具体信息了

RenderDoc VS FrameDebug:

2.2 查看 Texture 和 Mesh

在截帧之前,需要在你的 Shader 里面加一行 #pragam,不然你 RenderDoc 看不到 Shader 源码,只能看到编译后的:

#pragma enable_d3d11_debug_symbols

如果你想要查看当前的片段着色:

可以按照图中的步骤:菜单选择 Texture Viewer → 右击你想要 Debug 的像素坐标 → 右下角点击 Debug 按钮,其中

  1. 可以查看当前输出 Texture 的各通道数据
  2. 可以将当前 Texture 自动调整为合适的大小,能让你看到全图,或者使其上下翻转
  3. 可以看到当前所有的输入纹理及输出纹理

如果你想检查深度测试或者模板测试结果等其它信息,需要在 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 数据追踪

  1. 鼠标移动到相关变量上,可以直接追踪数值
  2. 常量区,部分常量可能无法用鼠标追踪,似乎目前不支持搜索
  3. 变量区

?

2.3.2 通过管线来查看 Shader

也很简单,考虑到能看到这里的各位都有基础,就不详细介绍下图中管线的具体内容了

三、真机 Debug 包调试

在此之前你需要完成?ADB 连接 Android 真机/模拟器 调试?对应文章的环境配置,并且确保电脑中有安装 Java jdk

确保一切环境配置准备就绪后,按照以下步骤进行:

  1. 手机连接电脑,可以 adb devices 以测试连接情况
  2. 打开 RenderDoc,菜单 → Tools → Settings → Andriod → 配置你的 SDK 和 Java jdk 路径,此时手机同时会自动安装 RenderDoc 对应的小程序,如果没有按照成功或者发现下一步找不到你的手机型号,请先确保你手机是否有禁用某些程序的自动安装等设置
  3. 等待一会,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

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:49:23  更:2022-07-21 21:50:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 6:34:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码