profiler-RenderDoc使用之unity篇
调试 unity 的渲染. 使用第三方工具 RenderDoc, 这是一个 MIT 开源协议的开源项目.
可以调试查看 某个 vertex, fragment 的 汇编指令 及 一些变量值.
以及查看 渲染 管线各个阶段的一些数据, 非常强大.
前篇
- unity 官方资料
- RenderDoc Integration - https://docs.unity3d.com/Manual/RenderDocIntegration.html
- RenderDoc
- When Unity’s Frame Debugger is not enough: RenderDoc
安装使用
先去官网下 RenderDoc 安装, 传送门: https://renderdoc.org/builds. 这里我下载 安装版的 Installer
重新打开unity项目, 在 game 或 scene 窗口中右键 load render doc. 会在该窗口的 tool bar 中多一个 renderdoc 的 icon
点击 icon. 就完成了一帧的抓取
然后双击抓到的帧, 就可以进去调试了. 参考: 抓帧分析
抓帧分析
找到 主摄像 渲染的节点
上面这一栏也可以找到, 这里找感觉比较快点
这里可以分 像素调试 和 顶点调试
找到要调试 批次, 在中间窗口 ( 这个其实是右边 outputs 中点击后出现的 ) 可以看到该批次执行后 帧缓存 的效果.
像素调试, 在 texture viewer 中.
右键 会选着一个像素, 然后点击 debug 调试该像素.
这一栏是调试栏
- run backwards ( shift + f5 ) : 回到调试第一步
- step back ( shift + f10 ) : 回到上一步
- step next ( f10 ) : 往下走一步
- run forwards ( f5) : 直接走到最后一步结算此处调试
- run to cursor : 走到当前 光标 所在的步
- 按 f9 键可以在当前步 设置/取消 断点
这些快捷键都和 vs 调试一样.
顶点调试, 在 mesh viewer 中,
选中一个顶点, 右键 debug this vertex 进行调试
实例测试
参考总结: unity-shader-GPU优化.md
测试一个 if 分支的编译后的指令
1 | const float _ConstHeight = -1; |
左边是 完全静态 分支, 右边是 动静态 分支 ( 使用的是 RenderDoc )
可以看出, 动态分支 会把所有的分支代码都跑一边, 而 静态分支 只跑符合 true 条件的分支.