版本:unity 5.4.1 语言:Unity Shader
首先推荐一下candycat的《Unity Shader入门精要》,渲染流水线讲得清清楚楚、有用的数学知识一个没落,基于这两点再来看Shader代码简直简单的不像人话。总之吐血推荐,想学Shader就买这本书好了。
然后这本书里面讲到了使用Visual Studio调试Shader,但没有说到具体的方法,我就来按照Unity官方文档来补充一下。
官方网址:
https://docs.unity3d.com/Manual/SL-DebuggingD3D11ShadersWithVS.html
首先申明调试环境只能使用win64,使用DirectX 11,然后跟着我一步步做吧。
1.在Shader代码中添加以下预处理命令,跟其他的#pragma放在一起就好:
#pragma enable_d3d11_debug_symbols
完成之后保存,并出包,要求是64位包:
2.接下来是运行VS2015,注意不是从Unity中启动,Unity现在可以关掉了,直接运行VS2015程序,点File
-> New -> Project新建项目,新建个VC++的Empty Project就好:
3.点Debug
-> (项目名) Properties打开属性界面,在点到属性界面的Configuration Properties -> Debugging:
我们要调整的是Command行和Command Arguments行,Command行写刚刚出包的绝对路径,而另一个则是-force-d3d11,强制使用d3d11渲染程序。
4.配置完毕之后,点Debug -> Graphics -> Start Graphics Debugging,接下来我们的出包程序就直接运行了,我是这么一个测试画面:
5.回到VS2015,点Capture
Frame截取画面(时间可能有点长。好吧,我在它截取的过程中又写了这么一大段话。还没有结束,电脑好一点的可能快一点吧。某种意义上来说这样的调试还是蛮麻烦的,因为你得出包之后再进行调试,想改个参数什么的,得重新出包,但拥有这样逐行代码调试的能力简直赞):
我发现为什么要这么长时间来截取画面了,得点一下调试的程序,让它进行渲染,不点的话画面停在那里所以截取画面程序一直在等待。或者就开后台运行应该也行。
6.好,获取到以上画面之后点一下Frame 822这行字,出现了详细的报告,我在图片中选取了自己渲染的小球,想看看他是怎么渲染出来的:
点中后,右边窗口出现了详细信息:
7.点开棕色的那次渲染,就能看到我们写的Shader了,点三角运行就能进行调试了:
以上内容就是Unity官方教程中的内容,网上搜了一下貌似没有相关的介绍,如果在学Shader的话最好按照以上操作来试一试,很强大的功能。