前言
学习Shader的过程中,经常见到一些不明其意的指令或标签或常量,本文记录下供以后参考,因ShaderLab语言也是不断发展的,而学习中看到的Shader很可能已过时,所以本文记录的内容也可能过时。
正文 1.Properties块中的特殊命令
-命令 - 参数 - 说明
-[Header(test)] ---括号内即为头标题的显示文字 ---不要加引号,不支持中文
-[NoScaleOffset] -------------------------------- 隐藏贴图的Tilling和Offset选项
-[Toggle] ---------------------------------------模拟开关,0为假,1为真,同[MaterialToggle]
2、SubShader块中的渲染状态设置指令
指令 参数 说明
Cull Cull Back/Front/Off 剔除模式
ZTest ZTest Less/Greater/Equal/LEqual/GEqual/NotEqual/Always 深度测试
ZWrite ZWrite On/Off 深度写入
Blend Blend xx 颜色混合模式
Blend比较复杂,包含以下几种形式:
- Blend Off
关闭颜色混合模式,默认值 - Blend SrcFactor DstFactor
最终颜色 = SrcFactor源颜色(即计算出来的片元颜色值) + DstFactor目标颜色(即颜色缓冲区中的颜色值) - Blend SrcFactor DstFactor,SrcFactorA DstFactorA
与2相似,只是把Alpha通道分离出来了
上述SrcFactor和DstFactor的值可以为以下任一值:
指令 值
One 1
Zero 0
SrcColor 源颜色
SrcAlpha 源透明度
DstColor 目标颜色
DstAlpha 目标透明度
OneMinusSrcColor 1 - 源颜色
OneMinusSrcAlpha 1 - 源透明度
OneMinusDstColor 1 - 目标颜色
OneMinusDstAlpha 1 - 目标透明度
- Blend Op
采用操作符进行计算
指令 值
Add 源颜色 + 目标颜色
Sub 源颜色 - 目标颜色
RevSub 目标颜色 - 源颜色
Min 取源颜色和目标颜色中的较小者
Max 取源颜色和目标颜色中的较大者
- Blend OpColor,OpAlpha
与4相似,只是把透明通道分离出来了
二、SubShader块中的Tag标签
标签类型 值 说明
Queue Background/Geometry/AlphaTest/Transparent/Overlay 对应值为1000/2000/2450/3000/4000
RenderType Opaque/Transparent/TransparentCutout/
Background/Overlay/TreeOpaque/TreeTransparentCutout/
TreeBillboard/Grass/GrassBillboard 用于替代渲染和获取场景深度和法线信息
DisableBatching true/false 禁用批处理
ForceNoShadowCasting true/false 禁止投射阴影
IgnoreProjector true/false 忽略Projector,通常用于半透明物体
CanUseSpriteAtlas true/false 当该SubShader用于Sprite时用false
PreviewType Plane/SkyBox 预览形状
网友评论