找回密码
 立即注册
查看: 1287|回复: 20

[笔记] Unity Shader 调试

[复制链接]
发表于 2021-3-8 10:09 | 显示全部楼层 |阅读模式
工欲善其事必先利其器,作为一个逻辑开发者,刚开始学习unity shader的时候,最头痛的我就觉得就是shader的调试吧,总是想单步调试下看看具体的数值是怎么变化的,尤其是显示效果不对的时候。虽然现在我认为当你习惯用假色彩图像调试之后,确实单步debug没有太大的必要,但是今天还是总结一下吧,我觉得利用工具是非常有利于理解渲染流程的。
    先说下最常用的工具就是visual studio了,unity 官方的教程在这里,这里我就不多说了,


  这里只说他的缺点,就是每次都要用vs 启动unity 编辑器,比较繁琐和耗时,而且装的东西也比较多。那么接下来就说说我们的主角RenderDoc  (
) ,当我第一次发现这个工具的时候,非常兴奋,觉得终于有一个符合我的编程习惯的工具了。接下来就简单介绍一下吧。RenderDoc是一个开源的可以调试shader的工具,我主要讲一下和unityshader 结合使用的部分。
    首先在官网下载他的release版本,我现在用的是V1.4, 下载地址是
也可以去github 下载他的源码编译最新的版本,github地址是 (

2.下载安装RenderDoc后,打开unity ,可以在Scene或者Game视图右键,弹出LoadRenderDoc菜单,然后点击加载就可以了
3.加载之后,会在视图上出现一个renderdoc的Logo,如下图
4.点击这个图标,会调用起RenderDoc 并且自动截图
5.我们双击我们截图的的图片,这时候会出现我们的事件列表
6.如果你的窗口现在没有打开TextureViewer MeshViewer PipeLineState的话,你可以通过window 菜单项打开他们,方便我们先运行效果。至于这些窗口的说明和介绍,大家可以去看官方文档。
7.接下来就是调试我们的shader了 ,这时候要注意的一个点就是我们要在我们的shader里面加上一句宏
  1. #pragma enable_d3d11_debug_symbols
复制代码
,来保证unity 不会优化掉我们的调试信息,把他放到我们的CGPROGRAM 代码块里面,记得renderdoc截图的时候,保证这句代码已经在shader里面的,之前没有加的话,记得重新走一次renderdoc截图啊,还有截图的时候最好保证unity的其他窗口是关闭的,保证只有game视图一个窗口,不然截图的内容可能是错误的
8.OK,当我们看到事件列表的时候,我们选择我们要调试的一个事件,
大家一定注意选择的事件,不要选择错了,不然选择的是其他事件,调用的不是你想要调试的shader,那么你看到调试代码就是dxbc格式的,不是我们想要的HLSL的格式,我们选中事件之后,在mesh Viewer面板可以调试vertex shader,在texture viewer可以调试frag shader .
在mesh viewer 面板就是 选中一个点,然后右键,选择debug this vertex
就会打开调试面板 ,
然后我们选择Debug in HlSl 就可以切换到Hlsl语法代码,进行愉快的调试了
点击debug in assembly 可以来回切换面板
9.如何调试frag shader呢,跟上面差不多,打开textureview 面板
右键选中你要调试的片元,然后点击右下角的debug按钮即可。
下面的watch 面板就是监视面板,你可以监察你的变量。也可以打断点一步一步调试,用法和vs差不多。
10.你也可以在pipleline state面板来看各个流程,可以实时编辑你的shader,来调整效果,
点击edit
修改代码后,点击F5键刷新就可以在textureviewer看效果,
好了,简单的介绍就到这里,总而言之,用renderdoc还是很方便的,解决了心头大患,具体更详细的介绍和使用,大家可以去官网在去了解下。
如果你觉得这篇文章对你有帮助,就帮忙点个赞吧!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-3-8 10:12 | 显示全部楼层
为何你这个edit shaer 看起来就是 unity shader 里写的啊,我的总是编译之后的
发表于 2021-3-8 10:14 | 显示全部楼层
vsstudio 可以用shaderlabvs 这个插件 或者直接用visual studio code这个编辑器 下一个插件就可以了
发表于 2021-3-8 10:16 | 显示全部楼层
注意看下我的文章第七步和第八步 确保宏 和你选择的事件正确
发表于 2021-3-8 10:23 | 显示全部楼层
搜噶,谢了
发表于 2021-3-8 10:33 | 显示全部楼层
写的很实用,很清晰,多谢!
发表于 2021-3-8 10:40 | 显示全部楼层
这个是真的屌,之前用vs的调试工具感觉一点不好用,先mark,周末来看
发表于 2021-3-8 10:48 | 显示全部楼层
很棒! 找了好久
发表于 2021-3-8 10:56 | 显示全部楼层
我这边好像看不到局部变量,有可能是什么原因呢?
发表于 2021-3-8 11:05 | 显示全部楼层
窗口没打开 或者是shader 查看的不对 是你自己想要调试的shader吗
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-24 12:16 , Processed in 0.097653 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表