【转载】Shader 山下(十九)标记 Tag

307 阅读3分钟

原文链接

版权声明:本文为CSDN博主「凯奥斯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:blog.csdn.net/ecidevilin/…

Unity Shader 里的 Tag 分为两种,

  • 一种是子着色器(SubShader)Tags,
  • 一种是通道(Pass)Tags。

我们使用 Tag 告诉渲染引擎 我们期望什么时候渲染这些子着色器或者通道,以及怎么样渲染(既然是期望,那么渲染引擎也可能不答应,那么就靠 Fallback 了)。

SubShader Tags 包括:

tag说明
Queue渲染顺序。内建值包括:
  • Background=1000
  • Geometry=2000(默认)
  • AlphaTest=2450
  • Transparent=3000
  • Overlay=4000
    可以自定义值例如 "Queue"="3100"
    也支持这样的写法 "Queue"="Transparent+100"
  • RenderType渲染类型。内建值包括:
  • Opaque:不透明(法线、自发光、反射、地形 Shader)
  • Transparent:半透明(透明、粒子、字体、地形添加通道 Shader)
  • TransparentCutout:遮罩透明(透明裁切、双通道植物 Shader)
  • Background:天空盒 Shader
  • Overlay:GUI 纹理、光晕、闪光 Shader
  • TreeOpaque:地形引擎——树皮
  • TreeTransparentCutout:地形引擎——树叶
  • TreeBillboard:地形引擎——公告牌(始终面向摄像机)式树木
  • Grass:地形引擎——草
  • GrassBillboard:地形引擎——公告牌(始终面向摄像机)式草
  • DisableBatching是否禁用 Batch(打包、合并),可用值:
  • True:禁用
  • False:不禁用(默认)
  • LODFading:当 LOD fade 开启的时候禁用,一般用在树木上面
  • ForceNoShadowCasting是否强制不投射阴影
    当这个值为 True 的时候,使用这个 Shader 的对象便不会投射阴影。
    一般用于透明对象,或者不想继承其他 shader 阴影的时候。
    ignoreProjector无视投影器
    当这个值为 True 的时候,对象便不受投射器影响。
    一般用于半透明对象,因为让投射器影响它们不是什么好事情。
    CanUseSpriteAtlas可使用精灵图集
    当这个值为 False 的时候,不能使用精灵图集。
    PreviewType材质的预览形式
    默认显示为球体,可以使用 Plane(2D平面)或 Skybox(天空盒)

    RenderQueues.png

    RenderQueues_1.png

    RenderQueues_2.png

    Pass Tags包括:

    tag说明
    LightMode光照模式
  • Always:总是渲染,不使用光照
  • ForwardBase:用于前向渲染,使用环境光、主平行光、顶点/SH(球谐函数)光照以及光照贴图
  • ForwardAdd:用于前向渲染,额外使用每像素光,每个光照一个通道
  • Deferred:用于延迟着色,渲染 G-Buffer
  • ShadowCaster:渲染对象的深度到阴影贴图或者深度纹理
  • PrepassBase:用于(旧版)延迟光照,渲染法线和高光指数
  • PrepassFinal:用于(旧版)延迟光照,合并贴图、光照和自发光来渲染最终色彩
  • Vertex:当对象不受光照贴图影响的时候,用来渲染(旧版)顶点发光。使用所有的顶点光照
  • VertexLMRGBM:当对象接受光照贴图影响的时候,用来渲染(旧版)顶点发光。适用于使用 RGBM 编码光照贴图的平台(PC&主机)
  • VertexLM:当对象接受光照贴图影响的时候,用来渲染(旧版)顶点发光。适用于使用 double-LDR 编码光照贴图的平台(移动平台)
  • PassFlags标志渲染管线如何传递数据给通道
  • OnlyDirectional:只有主平行光、环境光和光照探测器的数据会传递给通道,仅用于 LightModeForwardBase
  • RequireOptions标志通道只有在某些外部条件满足时才会被渲染
  • SoftVegetation:当 Quality Setting 中的 Soft Vegetation 选项被开启时,才会渲染通道