Como ya sabemos, en Unity existen tres tipos de Render Pipeline. Por defecto podemos encontrar a Built-in RP que corresponde al motor más antiguo perteneciente al software. En cambio, Universal RP y High-Definition RP pertenecen a un tipo de rendering denominado Scriptable RP, el cual es más actualizado y ha sido pre-optimizado para un mejor desempeño gráfico.
Independiente del Rendering Pipeline que utilicemos, si deseamos generar una imagen en pantalla, tendremos que viajar a través del pipeline.
Un pipeline puede tener distintas rutas de procesamiento conocidas como Render Paths; como si aquella tubería que ejemplificamos en la sección 1.0.7, tuviera más de un camino para llegar a su destino.
Un Render Path corresponde a una serie de operaciones relacionadas con iluminación y sombreado de objetos. Este nos permite procesar gráficamente una escena iluminada (p. ej. una escena con una luz direccional y una esfera).
Entre ellas podemos encontrar:
- Forward Rendering.
- Deferred Shading.
- Legacy deferred.
- Legacy vertex lit.
Cada una de estas posee distintas capacidades y características de rendimiento.
En Unity, el Rendering Path por defecto corresponde a Forward Rendering, en consecuencia, los tres tipos de Render Pipeline que vienen incluidos (Built-in, Universal y High Definition) iniciarán con su configuración. Esto se debe a que tiene mayor compatibilidad con tarjetas gráficas y además posee un límite para el cálculo de iluminación, haciendo su proceso más optimizado.
Para entender el concepto, vamos a suponer un objeto y una luz direccional en una escena. La interacción entre ambos se basa en dos conceptos fundamentales:
- Características de la iluminación.
- Características del material del objeto (shader).
Tal interacción se denomina “modelo de iluminación”.
El modelo básico de iluminación corresponde a la suma de tres propiedades distintas:
- Color de ambiente.
- Reflexión difusa.
- Reflexión especular.
El cálculo de iluminación se ejecuta dentro del shader y puede ser llevado a cabo por vértice o por fragmento. Cuando es calculado por vértice se denomina Per-Vertex Lighting y es realizado en el Vertex Shader Stage. De la misma manera, se denomina Per-Fragment o Per-Pixel Lighting cuando es calculado por fragmento en el Fragment Shader Stage.