Shader ShaderName
{
//属性
Properties
{
属性名称(面板上显示的属性名称, 属性类型) = 默认值
}
//Shader文件可以包含多个Subshader语义块,Unity扫描所有的Subshader,然后选择第一个可以在平台 上执行的Subshader
Subshader
{
//Subshader标签是一个键值对,用来告诉引擎何时以及如何渲染这个对象
//如控制渲染顺序,对着色器分类,
Tags{ 键1 = 值1 键2 = 值2 ...... }
//渲染状态
//如, 设定剔除模式(Cull), 设置深度测试(ZTest),
[RenderSetup]
//渲染管线
Pass{
[Name]//为了在Shader中使用properties中声明的属性,需要定义一个与该类型相匹配的变量
//Pass中也可以设置标签,也是用来告诉引擎如何渲染该物体。
//但是与Subshader中不同,一般有LightMode定义该Pass在Unity的渲染流水线中的角色
//RequireOptions指定满足某些条件时才渲染该Pass
[Tags]
[RenderSetup]
}
//告诉Unity如果所有的Subshader都运行不了就运行这个最低的
Fallback "name"
或者
Fallback off
}
}
参考:《 Unityshader入门精要 》