Properties语义块支持的属性类型
属性类型 | 默认值的定义语法 | 例子 |
Int | number | _Int("Int",Int)=2 |
Float | number | _Float("Float",Float)=1.5 |
Range(min,max) | number | _Range("Range",Range(0.0,5.0))=3.0 |
Color | (number,number,number,number) | _Color("Color",Color)=(1,1,1,1) |
Vector | (number,number,number,number) | _Vector("Vector",Vector)=(2,3,6,1) |
2D | "defaulttexture"{} | _2D("2D",2D)=""{} |
Cude | "defaulttexture"{} | _Cude("Cude",Cude)="white"{} |
3D | "defaulttexture"{} | _3D("3D",3D)="black"{} |
常见的渲染状态设置选项
状态名称 | 设置指令 | 解释 |
Cull | Cull Back | Flont | Off | 设置剔除模式:剔除背面 | 正面 | 关闭剔除 |
ZTest | ZTest Less Greater | LEqual | GEqual | Equal | NotEqual | Always | 设置深度测试时使用的函数 |
ZWrite | ZWrite On | Off | 开启 | 关闭深度写入 |
Blend | Blend SrcFactor DstFactor | 开启并设置混合模式 |
SubShader的标签类型
标签类型 | 说明 | 例子 |
Queue | 控制渲染顺序,指定该物体属于哪一个渲染队列 | Tags{"Queue" = "Transparent"} |
RenderType | 对着色器进行分类,例如这是一个不透明/透明物体 | Tags{"RenderType" = "Opaque"} |
DisableBatching | 是否对SubShader进行批处理 | Tags{"DisableBatching" = "True"} |
ForceNoShadowCasting | 控制使用该SubShader的物体是否会投射阴影 | Tags{"ForceNoShadowCasting" = "True"} |
IgnoreProjector | 是否受Projector的影响,通常用于半透明物体 | Tags{"IgnoreProjector" = "False"} |
CanUseSpriteAtlas | 当该SubShader是用于精灵时,将该标签设为"False" | Tags{"CanUseSpriteAtlas" = "False"} |
PreviewType | 指明材质面板将如何预览该材质,默认为球形 | Tags{"PreviewType" = "Plane"} |
特殊的Pass
- UsePass:使用该命令可以复用其他Unity Shader中的Pass
- GrabPass:该Pass负责抓取屏幕并将结果存储在一张纹理中
ShaderLab属性类型和Cg变量类型的匹配关系
ShaderLab属性类型 | Cg变量类型 |
Color, Vector | float4, half4, fixed4 |
Range, Float | float, half, fixed |
2D | sampler2D |
Cube | samplerCube |
3D | sampler3D |
UnityCG.cginc中的一些常用的结构体
名称 | 描述 | 包含的变量 |
appdata_base | 可用于顶点着色器的输入 | 顶点位置、顶点法线、第一组纹理坐标 |
appdata_tan | 可用于顶点着色器的输入 | 顶点位置、顶点切线、顶点法线、第一组纹理坐标 |
appdata_full | 可用于顶点着色器的输入 | 顶点位置、顶点切线、顶点法线、四组或更多纹理坐标 |
appdata_img | 可用于顶点着色器的输入 | 顶点位置、第一组纹理坐标 |
v2f_img | 可用于顶点着色器的输出 | 裁剪空间中的位置、纹理坐标 |
常用语义
语义 | 描述 |
POSITION | 模型空间的顶点位置,通常时float4类型 |
NORMAL | 顶点法线,通常时float3类型 |
TANGENT | 顶点切线,通常时float4类型 |
TEXCOORDn | 纹理坐标,float2或float4 |
COLOR | 顶点颜色,fixed4或float4 |
语义 | 描述 |
SV_POSITION | 裁剪空间的顶点坐标 |
COLOR0 | 通常用于输出第一组颜色信息 |
COLOR1 | 通常用于输出第二组颜色信息 |
TEXCOOED0~TEXCOORD7 | 通常用于输出纹理坐标 |
语义 | 描述 |
SV_Target | 输出值将会存储到渲染目标中 |
Debug
- 假彩色图像
- Visual Studio+Graphics Debugger
- 帧调试器