前面的文章讲过,shader其实就是渲染流水线某些特定阶段,如顶点着色器阶段、片元着色器阶段等。
一、unity shader概述
1.1材质和untiy shader
untiy中药配合使用材质和shader才能达到需要的效果,shader定义了渲染所需的各种代码(如顶点着色器和片元着色器)、属性(使用哪些纹理)和指令(渲染和标签设置等),而材质允许我们调节这些属性,最终赋值给相应模型。
1.2unity中的材质
unity中的材质需要结合一个gameObject 的Mesh或者Particle Systems组件来工作,他决定了游戏对象的模样。默认情况下新建材质将使用standard shader,这是一种基于物理渲染的着色器。
1.3 unity中的shader
untiy默认提供了4种shader模板,通常使用Unlit Shader来生成一个基本的顶点/片元着色器模板。
二、unity shader的基础: shaderlab
在unity中,所有的unity shader都是使用shaderLab来编写的。shaderLab是unity提供的编写unity shader的一种说明性语言,它使用了一些嵌套在花括号内部的语义来描述一个unity shader的文件结构。这些结构包含了许多渲染所需的数据,例如Properies语句块中定义了着色器所需的各种属性,这些属性将出现在材质面板中。
unity在背后会根据使用的平台来把这些结果编译成真正的代码和shader文件,而开发者只需要和unity shader打交道即可。