使用RenderDoc调试
最近在查一些渲染上的问题,发现RenderDoc这货非常好用,而且引擎原生支持用起来也很方便。
ps. 这个工具是从DX层去抓取真实绘制信息,和引擎内置的工具会有一定的区别。而且像纹理状态、寄存器变量甚至调试Shader上会方便非常多。
Unity3D
参考官方文档RenderDoc Integration
- 在Game窗口右键Load RenderDoc
- Game窗口在Maximize on Play左边的小图标点一下就是抓取
对于需要调试的Shader加一行#pragma enable_d3d11_debug_symbols
UE4
官方文档RenderDoc plugin有点过时,其实最近几个版本的引擎已经内置了这个插件。下图是我在4.18.3里打开这个插件:
然后同样是点同一个小图标截取。如果需要调试Shader的话在Engine\Config\ConsoleVariables.ini
打开这两行
r.Shaders.Optimize=0 |
RenderDoc
常见的功能譬如查看Draw Call略过不提,我个人最喜欢的是查看Shader及参数。甚至可以直接修改Shader看结果,不过我发现有时候CB会在修改过程中乱掉,至今没有找到好的办法fix。
更多推荐参考文档How do I debug a shader?。
ps. 后来和朋友讨论了下CB乱掉的问题,应该是因为修改Shader之后可能编译器会优化一些变量,导致CB的offset对不上了… 目前用比较脏的手段OutColor.rgb = OutColor.rgb*0.00001+xxxxx;
绕过先