//Shader开头
//"MyFirstShader/Unlit/MyFirstShader"提供一个索引
Shader "MyFirstShader/Unlit/MyFirstShader"
{
//存放跟外部相关的shader属性(属性模块)
Properties{
//如何定义属性
//关于数值类型的三种写法
_MyInt("Int参数",int)=0
_MyFloat_1("Float参数",Float)=0
_Myfloat("浮点型参数",Range(0,1))=0
//关于向量类型的参数
_MyVector("普通向量",Vector)=(0,0,0,0)//普通向量的初始化
_MyColor("颜色参数",Color)=(0,0,0,0)
//关于纹理类型的参数
_MyTexture("贴图",2D)="white"{}//{}默认值为空
_MyTexture3D("3D贴图参数",3D)="white"{}
_MyTextureCube("立方体贴图参数",Cube)="white"{}
}
//存放一些shader代码
Subshader{
pass{
}
}
//当Subshader中的代码不符合当前运行设备,将会调用"name"
Fallback"name"
}
shader"MyShader/Cull"
{
Properties{
_AmbientColor("AmbientCOlor",Color)=(1,1,0,1)
_MainColor("MainColor",Color)=(0,0,0,1)
_MainTex("MainTex",2D)="white"{}
}
SubShader{
Pass{
Material{
Diffuse[_MainColor]//漫反射
Ambient[_AmbientColor]
}
//Material{
//Diffuse(1,1,1,1)
//}
//On接收光照的影响
Lightingon
//剔除Front/Back/off正面,背面,不剔除
CullBack
//设置贴图
SetTexture[_MainTex]{
Combinetexture*primary DOUBLE,texture*primary//颜色混合
}
}
}
}
settexture[_MainTex]{//combine 命令 用法形式有8种
//combine src1 * src2 结果纹理将比输入纹理更暗。
//combine src1 + src2 结果纹理将比输入纹理更明亮。
//combine src1 - src2 高亮的部分将变暗
//combine src1 +- src2 src1和src2相加,然后减去0.5
//combine src1 lerp (src2) src3 在src3和src1之间做插值,使用src2的alpha值。请注意插值是相反的方向,当alpha为1时候src1使用,当alpha为0时候src3使用。
//combine src1 * src2+src3 src1与src2的alpha值混合,然后添加src3
//combine src1 * src2+-src3 src1与src2的alpha值混合,然后和有符号的src3相加//所有src属性都可以为:previous, constant, primary 或texture//所有src属性,除lerp外,可以使用符号-来使最终颜色反相。//所有的src属性后面可以有且仅有1个alpha.
//combine texture//combine texture * primary //primary代表之前颜色值加光照的计算结果
//combine texture * primary double//combine texture - primary quadcombinetexture* primary quad//Double或者Quad使结果的颜色2倍或者4倍明亮。}