Por defecto, este Tag no aparece gráficamente como línea de código en el shader. Esto se debe a que es compilado de manera automática en la GPU debido a que está directamente relacionado con el orden de procesamiento de objetos en cada material.
Tags { “Queue” = ”Geometry” }
Este Tag guarda una estrecha relación entre la cámara y la GPU.
Cada vez que posicionamos un objeto en nuestra escena, pasamos su información hacia la GPU (e.g. posición de los vértices, normales, color, etc). En el caso del Game View es exactamente lo mismo, con la diferencia que la información que le enviamos a la GPU corresponde al objeto que se encuentra dentro del frustum de la cámara. Una vez que la información se encuentra dentro de la GPU, enviamos esta data a la VRAM y le pedimos que dibuje el objeto en nuestra pantalla.
El proceso de dibujar un objeto se denomina «draw call«. Mientras más pases tenga un shader, más draw calls habrá en el rendering. Un pase es equivalente a un draw call, por lo tanto, si tenemos un shader con dos pases en su interior, entonces sólo ese material va a generar dos draw calls en la GPU.
Ahora bien, ¿cómo la GPU dibuja estos elementos en la pantalla? Para resumir un poco esta pregunta, la GPU va a dibujar en primer lugar aquellos objetos que se encuentren más lejanos a la cámara y aquellos elementos más cercanos a la misma serán dibujados al final. Este cálculo se hará en relación a la distancia entre el objeto y la cámara, siguiendo el eje “Z” de la misma.



(Fig. 023. Como podemos ver en la imagen, el triángulo se dibuja primero en la pantalla debido a que se encuentra más lejos de la cámara. Al final se dibuja el cuadrado y ambos generan 2 draw calls)
Unity posee una cola de procesamiento llamada “Render Queue” la cual nos permite modificar el orden de procesamiento de los objetos en la GPU. Existen dos maneras de modificar el Render Queue:
- A través de las propiedades del material en el inspector.
- O mediante el Tag«Queue«.
Si modificamos el valor de Queue en el shader, el valor por defecto del Render Queue en el material también será modificado.
Esta propiedad cuenta con valores de orden que van desde el 0 al 5000, en donde “0” corresponde al elemento más lejano y “5000” al elemento más cercano a la cámara. Estos valores de orden cuentan con grupos predefinidos, los cuales son:
- Background.
- Geometry.
- AlphaTest.
- Transparent.
- Overlay.
//Goes from 0 to 1499, default value 1000.
Tags {"Queue" = "Background"}
//Goes from 1500 to 2399, default value 2000.
Tags {"Queue" = "Geometry"}
//Goes from 2400 to 2699, default value 2450.
Tags {"Queue" = "AlphaTest"}
//Goes from 2700 to 3599, default value 3000.
Tags {"Queue" = "Transparent"}
//Goes from 3600 to 5000, default value 4000.
Tags {"Queue" = "Overlay"}
Background es utilizado principalmente para elementos que se encuentren muy lejanos a la cámara (e.g. skybox).
Geometry es el valor por defecto en el Queue y es utilizado para los objetos opacos en la escena (e.g. primitivas y objetos en general).
AlphaTest es utilizado en objetos semitransparentes que deben estar por delante de un objeto opaco, pero detrás de un objeto transparente (e.g. un cristal, pasto o vegetación).
Transparent es utilizado para elementos transparentes que deben estar por sobre los demás elementos.
Finalmente Overlay corresponde a aquellos elementos que están por sobre todo en la escena (e.g. imágenes de UI).
Shader “InspectorPath / shaderName”
{
Properties {} …
SubShader
{
Tags { "Queue" = "Geometry" }
}
}
High Definition RP utiliza el Render Queue de una manera distinta a Built-in RP ya que los materiales no exponen directamente esta propiedad en el Inspector, este en cambio introduce dos métodos de control los cuales son:
- Orden por material.
- Y orden por Renderer.
En su conjunto, HDRP utiliza estos dos métodos de orden para el control del procesamiento de objetos.