Unity Shader是Unity为开发者提供的高层级的渲染抽象层。如果没有Unity Shader,开发者需要和很多文件、设置打交道才能呈现出想要的画面效果;而有了Unity Shader,开发者只需要使用ShaderLab来编写UnityShader文件就可以完成所有的工作。
在Unity中,所有的Unity Shader都是使用ShaderLab来编写的。ShaderLab是Unity提供的编写Unity Shader的一种说明性语言。
从设计上来说,ShaderLab类似于CgFX和Direct3D Effects(.FX)语言,不仅仅是着色器代码,它们还都定义了要显示一个材质所需要的所有东西。例如Properties语句块中定义了着色器所需要的各种属性,这些属性将会出现在材质面板上。
一个Unity Shader的基础结构如下所示:
Unity在背后会根据使用的平台来把这些结构编译成真正的代码和Shader文件,而开发者只需要和Unity Shader打交道即可。