Unity Shader入门精要 阅读笔记六

这里将会对Unity中的内置文件、语义、调试进行阅读。

Unity内置文件
在编写shader的时候,Unity为我们隐藏了很多shader中的细节。有些是unity默认添加的,例如UnityCG.cginc库,有一些是需要我们自己手动去添加的。之前说过CG其实是C for Graph的缩写,那么在应用其他的库文件的方法上面,其实语法和C语言是很像的:

CGPROGRAM
//...
#include "UnityCG.cginc"
//...
ENDCG

其实在这里面我们可以字节去实现一些内容,然后来应用。当然这不是重点。
Unity默认提供的库的路径,win下面是在安装目录的/Data/CGIncludes/文件夹下

UnityShader语义
之前在写shader的时候,如果不是我们自定义的结构体,那么就需要在变量后面添加冒号,然后加上类似POSITION的东西。冒号后面的内容就是语义,用来在shader中描述变量具体是用来做什么的。这里需要注意的是在DirectX10后面的版本中,一些语义使用系统数值语义,相比之前的语义添加了SV_的前缀,例如SV_POSITION。

Unity调试

常使用Unity的人都知道,Shader不能像代码那样去单步调试,不能去查看运行中的数据值。调试shader是一个很困难的事。
书中提出了几种方法:
1、假色彩图像。这种方法比较困难,其实就是将过程中的结果,通过图像显示出来。图像最后需要转换到0-1的阈值范围内。通过拾色器在渲染后的图像检查是否渲染成功。
2、Visual Studio的Graphics Debugger。这个就厉害了,能够实现shader的单步调试。
3、Unity自带的帧调试器:Frame Debugger。通过window-》Frame Debugger来打开。这个方法能够支持渲染的每一步的效果查看,并提供UI可视化界面。

其实目前调试器用的最多的还是unity自带的,同时由于很多时候调试很复杂的效果的时候需要很多参数和输入,在调试时可以将某个参数单独输出在屏幕上现实,或者在framedebuger中调试查看。

猜你喜欢

转载自blog.csdn.net/u011618339/article/details/78897664