Unity集成RenderDoc调试shader

发表于2018-08-15
评论0 1.16w浏览
Unity调试shader中已经给大家介绍了可以使用工具Frame Debugger和RenderDoc调试shader,本篇文章为了让大家加深对RenderDoc调试shader的使用。

Renderdoc是一款独立程序,它可以在任何使用Direct3D 11.0 或11.1的Windows应用中捕捉和回放帧,提供工具进行深入分析、图形探察以及API使用的详细检查,这些功能让开发人员在他们的程序中 定位错误和问题。

Renderdoc由Crytek完全从头开发,就是为了满足图形程序员的真实需求,并在其CRYENGINE引擎的各款游戏制作过程中广泛使用和改进优化。

计划逐步地增加Renderdoc功能,并且支持其他平台及API (比如OpenGL)。

另外Crytek已经将这个公会开源出来了,也就是说大家可以完全免费的使用它了!

特点:

RenderDoc 可以查看一些 dx函数堆栈调用,纹理信息,像素颜色值,渲染步骤,顶点坐标的详细数值这种信息。挺直观,详细的。但是不能在shader中断点,在这一点上不如 Visual Studio 的调试。

API的支持:


也就是说,这个工具不打算向下兼容所有的API,起点是 dx11。

安装时需要注意的地方:

官方文档里提供一个RenderDoc的获取地址,不过这个地址是指向Github上c++开源工程的地址,也就是说我们下下来还要自己编译一次,不过这都不是重点……

重点是,编译出来的程序,不能集成到unity里面去呀!这个玩意有一个很重要的特性就是可以集成到unity编辑器当中去~

然后我就又去研究文档了(请体谅我悲惨的英文水平,这里省略1万字~),然后重新仔细的看了一遍文档,发现里面是这么说的:
If a RenderDoc installation is detected, then at any time after loading the Editor you can right click on the tab for the Game View or Scene View and click the ‘Load RenderDoc’ option.

第一句是重点,如果检测到RenderDoc的安装!然后我发现,我编译出来的工具虽然是能运行的,但是没安装过呀,尼玛!

这里给大家提供一下可以下载编译好,且已经封装制作好了的。msi文件下载地址,当然如果你想自己编译好了,再自己给它制作成安装包也可以……

地址:https://renderdoc.org/builds

在列表里选择自己对应的版本就好了。

安装好了以后,你再进入unity的时候,在Scene和Game窗口右键就可以看到多出来一个Load RenderDoc选项了(这里我就直接偷官网的图用了)

点一下它,unity就会在后台启动RenderDoc,然后界面上会多出一个按钮(这一步操作每次新启动unity,都要来一遍)

是不是很眼熟,没错,就是RenderDoc自己的log图标

使用方法:

这里只简单说说在unity中的使用,当然这个工具也是可以用来探测其它程序的dx调用的。

我们在Scene或Game窗口里运行我们的游戏,然后在想进行探测的地方点击那个log按钮,然后你发现,好像没发生什么嘛

我们先不管这个,先来启动RenderDoc,这个东西不会在桌面生成快捷方式,我是win10,所以我就直接去问小娜了,也就是左下角的Cortana搜索窗。(这里必须吐槽,微软这个心机婊,为了宣传win10,连halo里的梗都用上了!)

在打开的RenderDoc里,我们可以看到这样的画面

这个时候你就应该明白了,咱们点了几次log,RenderDoc就给咱们截了几次的屏幕,然后我们打开其中一帧数据,这里要loading一下。然后我们就发现它的Timeline,Pipeline State,Event Browser,API Calls,Mesh Output,Texture Viewer窗口里都有数据了,然后我们就可以开始进行调试了。

最后补一个RenderDoc的官方使用文档:http://docs.renderdoc.org/

以上,就是使用RenderDoc调试shader的方法。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引