ShaderLab 速查表

ShadeLab 是 Unity 的声明式着色器语言。本表覆盖最常见的语法模式。与 Cg/HLSL 不同,ShaderLab 属性声明结尾不加分号

一、.shader 文件骨架

Shader “路径/名称” { Properties { /* 属性 */ } SubShader { Tags { “RenderType”=“Opaque” } LOD 100 Pass { CGPROGRAM // Cg/HLSL 代码 ENDCG } } Fallback “备用着色器” }

二、属性类型

类型语法Inspector 控件
Range_Name ("显示名", Range(min, max)) = 默认值滑条
Float_Name ("显示名", Float) = 默认值数值输入框
Int_Name ("显示名", Int) = 默认值整数输入框
Color_Name ("显示名", Color) = (R, G, B, A)颜色拾取器
Vector_Name ("显示名", Vector) = (x, y, z, w)四分量数值
2D_Name ("显示名", 2D) = "默认色" {}纹理槽
Cube_Name ("显示名", Cube) = "默认色" {}立方体贴图槽
3D_Name ("显示名", 3D) = "默认色" {}体积纹理槽

三、连接变量

ShaderLab 属性 → Cg/HLSL 变量:名称必须完全一致

属性类型连接变量类型说明
Color / Vectorfloat4 / half4 / fixed4四维向量
Range / Floatfloat / half / fixed标量值
Intint整型
2Dsampler2D + float4 _Name_ST纹理 + Tiling/Offset
CubesamplerCUBE立方体贴图
3Dsampler3D体积纹理

// 示例 sampler2D _MainTex; float4 _MainTex_ST; // .xy = Tiling, .zw = Offset float4 _Color;

四、MaterialPropertyDrawer

Drawer语法用途
Toggle[Toggle] _Name ("名", Float) = 0开关(搭配 pragma shader_feature)
KeywordEnum[KeywordEnum(A,B,C)] _Name ("名", Float) = 0多选下拉(搭配 pragma multi_compile)
Enum[Enum(val, id,...)] _Name ("名", Float) = 0枚举值映射(直接传值给命令)
PowerSlider[PowerSlider(n)] _Name ("名", Range(a,b)) = v非线性滑条
IntRange[IntRange] _Name ("名", Range(a,b)) = v整数范围滑条
Space[Space(n)]垂直间距
Header[Header(标题)]分组标题

五、Toggle vs KeywordEnum vs Enum

ToggleKeywordEnumEnum
状态数22–9任意
生成变体shader_featuremulti_compile不生成
运行时切换是(值传递)
典型用途启用/禁用效果质量等级切换Cull/Blend 模式选择
转换规则_NAME_ON_NAME_A _NAME_B直接使用 Float 值

六、渲染状态命令

命令可选值默认值
CullBack / Front / OffBack
ZWriteOn / OffOn
ZTestLess / Greater / LEqual / GEqual / Equal / NotEqual / AlwaysLEqual
ColorMaskR / G / B / A / 0 / 组合RGBA
AlphaToMaskOn / OffOff
BlendSrcFactor DstFactorOff

七、常用 Blend 模式

Blend SrcAlpha OneMinusSrcAlpha // 标准透明 Blend One One // 叠加(Additive) Blend OneMinusDstColor One // 柔和叠加 Blend DstColor Zero // 乘法 Blend DstColor SrcColor // 2x 乘法 Blend Zero OneMinusSrcColor // 负片

八、Queue 标签值

队列范围
Background10000–1499
Geometry(默认)20001500–2399
AlphaTest24502400–2699
Transparent30002700–3599
Overlay40003600–5000