profiler-RenderDoc使用之unity篇

title: profiler-RenderDoc使用之unity篇
categories: Profiler
tags: [profiler, RenderDoc, unity]
date: 2019-06-14 22:20:47
comments: false
调试 unity 的渲染. 使用第三方工具 RenderDoc, 这是一个 MIT 开源协议的开源项目.
可以调试查看 某个 vertex, fragment 的 汇编指令 及 一些变量值.
以及查看 渲染 管线各个阶段的一些数据, 非常强大.

前篇
unity 官方资料
RenderDoc Integration - https://docs.unity3d.com/Manual/RenderDocIntegration.html
RenderDoc
官网 - https://renderdoc.org/
下载 - https://renderdoc.org/builds
源码 - https://github.com/baldurk/renderdoc
油管系列教程 - https://www.youtube.com/watch?v=EMFG5wmng-M&list=PLWziqE5d25dXo1IE150YJiPT9EIW8ymta&index=1
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 分支的编译后的指令

const float _ConstHeight = -1;
float a = 0.2;
// if (a < _ConstHeight) { // 完全静态
if (i.uv.y < _ConstHeight) { // 动静态
    col *= fixed4(1, 0, 0, 1);
} else {
    col *= fixed4(0, 1, 0, 1);
}

左边是 完全静态 分支, 右边是 动静态 分支 ( 使用的是 RenderDoc )

可以看出, 动态分支 会把所有的分支代码都跑一边, 而 静态分支 只跑符合 true 条件的分支.


————————————————
版权声明:本文为CSDN博主「墨痕_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

发布了42 篇原创文章 · 获赞 23 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/gaojinjingg/article/details/103520397