1.ShaderLab框架
Shader “StudyShader/MyFirstShader”{
——————————//属性接口,贴图颜色等,以便在Untiy编辑器里选定
Properties{
_Color("Main Color",Color)=(1,1,1,1) //颜色
// 变量名 Inspector名 类型 默认值
_MainTex("Base (RGB)",2D)="White"{} //2D纹理,方形2次方尺寸
_RangeValue("RangeValue",Range(0,1))=0.5 //浮点数,通过最大最小值的滑动条来修改
_RectTex("Rect tex",Rect)=""{} //长方形纹理,非2次方
_CubeMap("Cube Map",Cube)=""{} //6面立方贴图纹理,如天空盒贴图
_FloatNum("",Float)=2.0 //浮点数,直接输入的值
_VectorValue("Vector Value",Vector)=(1,1,1,1) //4维向量,4个可填的值
}
1.在纹理后面{}里为纹理属性
TexGen texgenmode纹理生成模式(自动纹理坐标生成模式)
LightmapMode 光照贴图模式
——————————//Shader实现,可写多个SubShader来适应各种显卡
SubShader{
Pass{ //通道,完整的渲染过程,一个SubShader至少一个Pass通道,每个Pass都会执行
}
}
SubShader{
Pass{
}
}
——————————//FallBack,所有SubShader都不适用的情况下,使用这个后援Shader
FallBack “Diffuse”
}
2.SubShader
SubShader{ //[]为可选
———[Tags]——标签指定值,能设置任意多个标签
Tags{
“TagName1”=”Value1”
如
“Queue”=”Geometry”
“RenderType”=”Background”
}
1.Rendering Order渲染顺序 -Queue
Background 常用于SkyBox
Geometry 最常用,用作不透明物体
Transparent 透明物体
Overlay 用作叠加
2.RenderType
Opaque 不透明
Transparent 半透明
TransparentCutour 透明遮罩
Background 天空
Overlay
TreeOpaque
TreeTransparentCutout
TreeBillboard
Grass
GrassBillboard
3.ForceNoShadowCasting 是否要有阴影,默认true
true
false
4.IgnoreProjector 忽略投影,默认false
true
false
——–[CommonState]——-公共状态
Cull off //剔除模式为关
1.Cull 多边形剔除模式
back front off
2.ZTest 默认LEqual(小于等于)
Less Greater LEqual GEqual Equal NotEqual Always
3.ZWrite 深度写模式
On Off
4.AlphaTest
5.Blend SourceBlendMode DestBlendMode //alpha混合模式
值: One DstAlpha
Zero OneMinusSrcColor
SrcColor OneMinusSrcAlpha
SrcAlpha OneMinusDstColor
DstColor OneMinusDstAlpha
如: Blend One Zero
Blend DstColor SrcColor
…
6.Fog 雾参数
Fog{
Mode XXX
Color
Density
Range
}
7.ColorMask RGB A 0
8.Offset 深度偏移
…
———[Pass]————–通道
Pass{
//这些设定针对当前通道
[Name and Tags]
1.LightMode 光照模式tag
[RenderSetup]
[TextureSetup]
CGPROGRAM
#pragma vert
#pragma frag
...
#include "UnityCG.cginc"
ENDCG
}