2019-08-07Unity Shader常见指令和标签

前言
学习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比较复杂,包含以下几种形式:

  1. Blend Off
    关闭颜色混合模式,默认值
  2. Blend SrcFactor DstFactor
    最终颜色 = SrcFactor源颜色(即计算出来的片元颜色值) + DstFactor目标颜色(即颜色缓冲区中的颜色值)
  3. 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 - 目标透明度

  1. Blend Op
    采用操作符进行计算

指令 值
Add 源颜色 + 目标颜色
Sub 源颜色 - 目标颜色
RevSub 目标颜色 - 源颜色
Min 取源颜色和目标颜色中的较小者
Max 取源颜色和目标颜色中的较大者

  1. 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 预览形状

你可能感兴趣的:(2019-08-07Unity Shader常见指令和标签)