Version: 2020.1
ShaderLab: GrabPass
ShaderLab sintaxis: Fallback

ShaderLab: SubShader Tags (etiquetas SubShader)

Los Subshaders utilizan tags (etiquetas) para decir cómo y cuándo esperan ser renderizados al motor de renderizado.

Sintaxis

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

Especifica TagName1 para tener Value1, TagName2 para tener Value2. Puede tener tantas etiquetas como quieras.

Detalles

Las etiquetas son básicamente pares clave-valor. Dentro de las etiquetas SubShader se usan para determinar el orden de renderizado y otros parámetros de un subshader. Tenga en cuenta que las siguientes etiquetas reconocidas por Unity deben estar dentro de la sección de SubShader y no dentro de Pass!

Además de las etiquetas incorporadas reconocidas por Unity, puede utilizar sus propias etiquetas y consultarlas mediante la función Material.GetTag.

Orden de Rendering - Queue tag (etiqueta de queue)

Usted puede determinar en qué orden se dibujan sus objetos utilizando la etiqueta Queue. Un Shader decide a qué render queue (cola de renderizado) pertenecen sus objetos, de esta forma los shaders transparentes se aseguran de que se dibujen después de todos los objetos opacos y así sucesivamente.

Hay cuatro render queues predefinidas, pero puede haber más queues (colas) entre las predefinidas. Las queues (colas) predefinidas son:

  • Background - Esta render queue (cola de renderizado) se procesa antes que cualquier otra. Normalmente utilizaría esto para cosas que realmente necesitan estar en segundo plano.
  • Geometry (predeterminado) - Esto se utiliza para la mayoría de los objetos. La geometría opaca utiliza esta cola.
  • AlphaTest - La geometría alfa probada utiliza esta cola. Es una cola separada de Geometry, ya que es más eficiente renderizar objetos alfa después de que todos los sólidos estén dibujados.
  • Transparent - Esta cola de renderizado se renderiza después de Geometry y AlphaTest, en orden inverso. Cualquier cosa mezclada con alfa (es decir, shaders que no escriben en el buffer de profundidad) debe ir aquí (vidrio, efectos de partículas).
  • Overlay - Esta render queue está destinada a efectos de superposición. Cualquier cosa renderizada por último debe ir aquí (por ejemplo, lens flares).
Shader "Transparent Queue Example"
{
     SubShader
     {
        Tags { "Queue" = "Transparent" }
        Pass
        {
            // rest of the shader body...
        }
    }
}

Un ejemplo que ilustra cómo renderizar algo en la cola transparente

Para usos especiales se pueden usar colas intermedias. Internamente, cada cola está representada por índices integer; Background es 1000,Geometry es 2000, AlphaTest es 2450,Transparent es 3000 y Overlay es 4000. Si un shader utiliza una cola como esta:

Tags { "Queue" = "Geometry+1" }

Esto hará que el objeto se renderice después de todos los objetos opacos, pero antes de los objetos transparentes, como el índice del render queue será 2001 (geometría más uno). Esto es útil en situaciones en las que se desea que algunos objetos se dibujen siempre entre otros conjuntos de objetos. Por ejemplo, en la mayoría de los casos el agua transparente debe ser dibujada después de los objetos opacos pero antes de los objetos transparentes.

Las colas de hasta 2500 (“Geometría+500”) se consideran “opacas” y optimizan el orden de los objetos para obtener el mejor rendimiento. Las rendering queues más altas se consideran para “objetos transparentes” y ordenan objetos por distancia, comenzando a renderizar desde los más alejados y termina con los más cercanos. Los Skybox se dibujan entre todos los objetos opacos y transparentes.

RenderType tag (etiqueta RenderType)

RenderType tag categoriza shaders en varios grupos predefinidos, e.g. Es un shader opaco, o un shader probado con alfa, etc. Esto es utilizado por Shader Replacement y en algunos casos se utiliza para producir textura de profundidad de la cámara.

DisableBatching tag (etiqueta disableBatching)

Algunos shaders (sobre todo aquellos que hacen deformaciones de vértice en el espacio del objeto) no funcionan cuando se utiliza Draw Call Batching - esto es porque el procesamiento por lotes (batching) transforma toda la geometría en el espacio del mundo, por lo que se pierde el “espacio de objetos”.

DisableBatching tag can be used to indicate that. There are three possible values: “True” (always disables batching for this shader), “False” (does not disable batching; this is default) and “LODFading” (disable batching when LOD fading is active; mostly used on trees).

ForceNoShadowCasting tag (etiqueta forceNoShadowCasting)

Si se da la etiqueta ForceNoShadowCasting y tiene un valor de “True”, entonces un objeto que se renderiza usando este subshader nunca emitirá sombras. Esto es útil cuando se utiliza el shader replacement (shader de remplazo) en objetos transparentes y no se suele heredar un pass de sombra de otro subshader.

IgnoreProjector tag (etiqueta ignoreProjector)

Si se da la etiqueta IgnoreProjector y tiene un valor de “True”, entonces un objeto que use este shader no será afectado por Projectors. Esto es sobre todo útil en objetos semitransparentes, porque no hay una buena manera para que los proyectores los afecten.

CanUseSpriteAtlas tag (etiqueta canUseSpriteAtlas)

Configura la etiqueta CanUseSpriteAtlas en “False” si el shader está destinado a sprites, y no funcionará cuando estén empaquetados en atlases (consulte Sprite Packer).

PreviewType tag (etiqueta preview)

PreviewType indica cómo el preview (previsualización) del inspector de materiales debe mostrar el material. Por defecto los materiales se muestran como esferas, pero PreviewType también se puede configurar en “Plane” (se mostrará como 2D) o “Skybox” (se mostrará como skybox).

Mirar también

Los passes se les pueden dar Tags (etiquetas) también, mire Pass Tags.

ShaderLab: GrabPass
ShaderLab sintaxis: Fallback