1. 打开上一次课新建的Custom/HelloShader ,接下来分析这个ShaderLab中的内容:
从这个文件可以看出 Shader是定义一个Shader的关键字,”Custom/HelloShader”是这个Shader的名字然后是大括号{}用于定义Shader的内容,因此Shader的定义格式如下:
Shader “Name” {
}
例子如下图所示
接下来分析{}中的内容
1. 关键字Properties
1.1.用途
关键字Properites主要用于定义Shader的接口变量,以便于Material使用Shader时,对其进行赋值。
比方说这里定义了一个_MainTex变量,当选取HelloMat这个材质的时候,就可以看见HelloMat有Base (RGB)这个属性,如下图所示
当把_MainTex这个属性取消后,发现材质属性没有了。
1.2.属性定义
属性定义可以参考http://www.ceeger.com/Components/SL-Properties.html
在这个链接里有对属性的详细定义。
例子如下图所示
1,3.属性控制
属性控制有下面两种方式:
a).直接通过界面控制,比如上图可以选取Texture对_MainTex进行赋值,物体渲染效果如下
b)通过Material提供的接口进行控制:
2D SetTexture("属性名",tex)
Color SetColor("属性名",clr)
Vector SetVector("属性名",vec)
float SetFloat("属性名",f)
range SetFloat("属性名",f)
1.4.属性使用
在shader中使用属性前,需要定义相应的变量,然后才能使用,以下是在不同属性类型相对应的变量定义,需要注意的是变量名与属性名一致
2D sampler2D 变量名
Color float4(half4,fixed4) 变量名
Vector float4(half4,fixed4) 变量名
float float(half,fixed) 变量名
range float(half,fixed) 变量名
例子如下图所示
xia ShaderLab语法(SubShader)
Unity开发 QQ群:528152133