Version: 2018.4
Синтаксис ShaderLab: Blending
Синтаксис ShaderLab: Stencil

Синтаксис ShaderLab: тэги Pass

Проходы используют тэги чтобы сообщить движку рендера о том, когда и как их надо обрабатывать.

Синтаксис

    Tags { "TagName1" = "Value1" "TagName2" = "Value2" }

Устанавливает значение Value1 в TagName1, Value2 в TagName2. Можно использовать сколько угодно тегов.

Детали

Обычно тэги это пары ключ-значение. Внутри Pass тэги используются для управления ролью прохода в конвейере освещения (ambient, vertex lit, pixel lit и т.д.) и другими настройками. Учитывайте, что последующие тэги используемые в Unity должны быть указаны внутри секции Pass, а не внутри SubShader!

LightMode tag

LightMode tag defines Pass’ role in the lighting pipeline. See render pipeline for details. These tags are rarely used manually; most often shaders that need to interact with lighting are written as Surface Shaders and then all those details are taken care of.

Possible values for LightMode tag are:

  • Always: Always rendered; no lighting is applied.
  • ForwardBase: Used in Forward rendering, ambient, main directional light, vertex/SH lights and lightmaps are applied.
  • ForwardAdd: Used in Forward rendering; additive per-pixel lights are applied, one pass per light.
  • Deferred: Used in Deferred Shading; renders g-buffer.
  • ShadowCaster: Renders object depth into the shadowmap or a depth texture.
  • MotionVectors: Used to calculate per-object motion vectors.
  • PrepassBase: Used in legacy Deferred Lighting, renders normals and specular exponent.
  • PrepassFinal: Used in legacy Deferred Lighting, renders final color by combining textures, lighting and emission.
  • Vertex: Used in legacy Vertex Lit rendering when object is not lightmapped; all vertex lights are applied.
  • VertexLMRGBM: Used in legacy Vertex Lit rendering when object is lightmapped; on platforms where lightmap is RGBM encoded (PC & console).
  • VertexLM: Used in legacy Vertex Lit rendering when object is lightmapped; on platforms where lightmap is double-LDR encoded (mobile platforms).

PassFlags tag

A pass can indicate flags that change how rendering pipeline passes data to it. This is done by using PassFlags tag, with a value that is space-separated flag names. Currently the flags supported are:

  • OnlyDirectional: When used in ForwardBase pass type, this flag makes it so that only the main directional light and ambient/lightprobe data is passed into the shader. This means that data of non-important lights is not passed into vertex-light or spherical harmonics shader variables. See Forward rendering for details.

RequireOptions tag

A pass can indicate that it should only be rendered when some external conditions are met. This is done by using RequireOptions tag, whose value is a string of space separated options. Currently the options supported by Unity are:

  • SoftVegetation: Render this pass only if Soft Vegetation is on in the Quality window.

См. также

SubShaders can be given Tags as well, see SubShader Tags.

Синтаксис ShaderLab: Blending
Синтаксис ShaderLab: Stencil