1、UnityShader分为三部分:
1、固定管线着色器
2、可编程管线着色器
1、表面着色器(Surface shader)
2、顶点、片段着色器(Vertex Shader/Fragment Shader)
2、UnityShader
1、属性
----------------------//纹理贴图几种描绘(ObjectLinear,EyeLinear,SphereMap,CubeReflect CubeNormal 对应OpenGL里的texgen modes)--------------
名字对应着色器中的变量 空字符串,或对应unity中的white,bump,black等
| |
_MainTex("纹理
",2D
)=“white
”{TenGen ObjectLinear
}
_name("范围",Range(min,max))=0
_name("浮点数",Float)=0.1
_name("颜色",Color)=(,,,)
_name("向量",Vector)=(,,,)
2、着色器主体
子着色器
SubShader
{ //通道
Pass
{
}
}
3、FallBack“Diffuse”: 备胎回调,(unity自带漫反射)
4、标签(Tags
):通过标签决定什么时候调用该着色器
1、Tags{"RenderType"="Opaque"}:渲染成显而易见
Unity预定义的渲染顺序:Background(天空盒或背景)、
Geometry(场景内绝大多数的非透明物体)、
AlphaTest、
Transparent(从后往前的顺序渲染透明物体)、Overlay
2、Tags{"RenderType"="Transparent"}:渲染成透明或半透明 ,并且从后往前渲染
5、LOD number:数值决定了我们能使用什么样的Shader
LOD 200:Unity内建的Diffuse(漫反射)着色器
6、Blend SrcAlpha OneMinusSrcAlpha :开启透明度混合。
Blend DstColor Zero:进行混合操作,用该值来删除缓冲区的颜色或者是目标颜色。
Light On:开启光照。
SeparateSpecular On:开启高光。
Cull front:剔除表面。
AlphaTest Greater 0.5 :能被渲染的透明阀值。
ZWrite off:关闭深度测试。
3、Unity的三种shader:
1、
固定管线着色器
基础Shader代码:
2、表面着色器
基础Shader代码:
3、顶点/片段着色器