shader基本语法结构
Shader "MyShader/01Shader "{//定义路径及文件名,可以有多个路径,文件名不要求与shader名保持一致
Properties {
//定义属性内容 括号外的属性名及引号中的属性名可自定义,外面的属性名在下面的代码中使用,引号内的属性名在Inspector面板中显示,shader定义属性代码后不用加分号!
//属性类型:
_Color("Color",Color)=(1,1,1,1)//颜色类型
_Vector("Vector",Vector)=(0,2,3,1)//向量类型(跟颜色是同样的功能)
_Int("Int",Int)=1234//整数类型
_Float("Float",Float)=1.23//小数类型
_Range("Range",Range(1,10))=6//跟小数类型功能类似
_2D("Texture",2D)="white"{}//图片类型,当不指定图片的时候,显示纯色
_3D("3DTexture",3D)="black"{}//3D图片类型,当不指定图片的时候,显示纯色
_Cube("Cube",Cube)="red"{}//指定立方体纹理,当不指定纹理的时候,显示纯色
}
//子Shader可以有很多个,显卡运行效果的时候从第一个SubShader开始,如果第一个中的效果可以实现,那么就使用第一个SubShader,如果某些效果实现不了,则自动执行下一个
SubShader{
//类似C#中的方法在Update中调用,至少有一个Pass
Pass{
//使用CG语言编写shader代码
CGPROGRAM
//使用属性
float4 _Color;
float4 _Vector;
float _Int;
float _Range;
sampler2D _2D;
sampler3D _3D;
samplerCube _Cube;
ENDCG
}
}
Fallback "VertexLit"
}