固定管线着色器(SubShader中必须写Pass通道)
Shader指令顺序图
Rander Setup
Properties
Properties |
浮点数(Float) | _FloatValue("一个浮点数",float) = 0.4 |
范围浮点数(Range) | _RangeValue("一个范围浮点数",Range(1,100)) = 50 | |
四维数(Vector) | _VectorValue("一个四维数",Vector) = (1,1,1,1) | |
颜色(Color) | _ColorValue("一个颜色值",Color) = (1,0,0,1) | |
2阶贴图(2D) | _Texture2D("一个2阶贴图",2D) = ""{} | |
非2阶贴图(Rect) | _TextureRect("一个非2阶贴图",Rect) = ""{} | |
立方体贴图(Cube) | _TextureCube("一个立方体贴图",Cube) = ""{} |
Color
固定渲染一个颜色():Color(0,0,0.6,1) |
固定渲染一个可变颜色[]:Color[_MainColor] |
Material
前提 | 需要开启顶点光照 → Lighting On/Off(开启/关闭顶点光照) | |
Material |
漫反射颜色(Diffuse) | |
环境光反射颜色(Ambient) | ||
前提:需要开启镜面反射(SeparateSpecular On | Off) 光泽度(Shininess) |
||
高光颜色(Specular) | ||
自发光颜色(Emission) |
设置多边形剔除
Cull Back/Front/Off
深度测试(判断该模型的深度,满足时渲染模型)
前提:需要写入深度缓冲
ZWrite On | Off | On(开启的话,如果满足判断就只会渲染模型框架不会渲染颜色) |
Off(关闭的话,如果满足判断即可渲染模型也可渲染颜色) |
ZTest
ZTest | Less(小于)、LEqual(小于等于) |
Greater(大于)、GLqual(大于等于) | |
Equal(等于)、NotEqual(不等于) | |
Always(渲染所有像素。这在功能上等同于 AlphaTest Off。) |
|
Never(不渲染任何像素) |
Pass
{
// 进行深度测试,当前像素的深度大于缓存里的深度
// 说明当前像素在缓存像素的后面
// 通俗来讲就是被挡住了
ZTest Greater
// 关闭深度缓存
ZWrite Off
// 被挡住渲染该颜色
Color(1,0,0,1)
}
Pass
{
// 进行深度测试,当前像素的深度小于或等于缓存里的深度
// 说明当前像素不在缓存像素的后面
// 通俗来讲就是没有被挡住了
ZTest LEqual
// 没被挡住渲染该颜色
Color(0,0,1,1)
}
什么是深度?
顶点&像素距离摄像机的距离 | 距离越近深度越小 |
距离越远深度越大 |
Blend(混合)
Blend(混合) |
Alpha(混合):Blend SrcAlpha OneMinusSrcAlpha |
相加:Blend One One | |
比较柔和的相加:Blend One OneMinusDstColor | |
乘法:Blend DstColor Zero | |
2倍乘法:Blend DstColor SrcColor | |
开启透明混合:Blend SrcAlpha OneMinusSrcAlpha |
Tags
SubShader标签Queue |
测试需要关闭ZTest | ||||||||
|
|||||||||
Tags{"Queue" = "Transparent+1"} |
TextureSetup
SetTexture[TexturePropertyName]{TextureBlock}
前提 | Lighting On | |
stc【颜色源】 |
Primary是来自光照计算的颜色或是它绑定时的顶点颜色 | |
Texture是在SetTexture中被定义的纹理的颜色 | ||
Previous是上一次Set Texture的结果 | ||
Constant是被ConstantColor定义的颜色 | 固定颜色:constantColor(1,1,1,1) |
combine |
暗:combine src1 * src2 亮:combine src1 + src2 combine src1 - src2 |
combine src1 lerp(src2) src3 | |
双倍/四倍————Double \ Quad | |
RGB与A分离 |