Version: 5.4
Shadows (Sombras)
Global Illumination (Iluminación Global)

Sombras de las Directional light

Una directional light simula típicamente la luz del sol y una sola luz puede iluminar la totalidad de una escena. Esto significa que el shadow map a menudo cubrirá una gran parte de la escena inmediatamente, y esto hace que las sombras sean susceptible a un problema llamado aliasing perspectivo. El aliasing perspectivo significa que los pixeles del shadow map al verse cerca de la cámara se ven muy grandes, comparado aquellos que están lejos.

Sombras en la distancia (A) tienen una resolución adecuada, dónde las sombras cerca a la cámara (B) muestran un aliasing perspectivo.
Sombras en la distancia (A) tienen una resolución adecuada, dónde las sombras cerca a la cámara (B) muestran un aliasing perspectivo.

El aliasing perspectivo se nota menos cuando usted está utilizando soft shadows (sombras suaves) y tiene una alta resolución para el shadow map. Sin embargo, utilizar estas propiedades aumentará la demanda al hardware gráfico por lo que el framerate pueda tener consecuencias.

Shadow cascades

El motivo por el que ocurre el problema de perspective aliasing es que diferentes zonas del mapa de sombras se escalan desproporcionadamente debido a la perspectiva de la cámara. El mapa de sombras de una luz necesita cubrir únicamente la parte de la escena visible por la cámara, definida por el view frustum de la cámara. Si usted se imagina un caso simple donde la luz direccional viene directamente desde arriba, se puede ver la relación entre el tronco y el mapa de sombras.

El extremo distante del frustum está cubierto por 20 pixeles de shadow map mientras que el extremo más cercano está cubierto solamente por 4 pixeles. No obstante, ambos extremos aparecen del mismo tamaño en pantalla. El resultado es que la resolución del mapa es efectivamente mucho menor en áreas sombreadas que están cerca a la cámara. (Tenga en cuenta que en realidad, la resolución es mucho mayor que 20x20 y el mapa usualmente es perfectamente cuadrado en la cámara.)

Utilizar una resolución mayor para el mapa entero puede reducir el efecto de zonas chunky pero esto requiere de más memoria y bando de ancho mientras se renderiza. Aunque, notará del diagrama que una gran parte del shadow map está gastado en el extremo cercano del frustum ya que nunca será visto; también la resolución de las sombras lejos de la cámara está bastante alta. Es posible dividir el área del frustum en dos zonas basadas en la distancia desde la cámara. La zona del extremo más cercano puede utilizar un shadow map distinto en un tamaño reducido (pero con la misma resolución) para que la cantidad de pixeles se nivele de cierto modo.

Estas reducciones por etapas en el tamaño del shadow map se conoce como cascaded shadow maps (a veces llamado “Parallel Split Shadow Maps”). De las Quality Settings, usted puede configurar un cero, dos o cuatro cascades para un nivel de calidad dado.

Entre más cascades usted utilice, menos serán afectadas sus sombras por aliasing perspectivo, pero aumentar el número viene con una sobre-carga de renderizado. Sin embargo, esta sobrecarga es todavía menor a lo que sería si usted utilizar un mapa de resolución alto a través de toda la sombra.

La sombra del ejemplo anterior con cuatro cascades
La sombra del ejemplo anterior con cuatro cascades

Tenga en cuenta: en plataformas móviles, las sombras cascades no están disponibles para directional lights.

Distancia de la sombra

Las sombras de los objetos tienden a notarse menos cuando estos están lejos de la cámara; estos aparecen más chiquitos en pantalla y también, los objetos distantes usualmente no son el centro de atención. Unity le permite a usted tomar ventaja de este efecto al proporcionar una propiedad Shadow Distance en las Quality Settings. Los objeto más allá de esta distancia (desde la cámara) no emiten sombras en absoluto, mientras que las sombras de objetos acercándose esta distancia gradualmente desvanecen.

Configurar esta shadow distance tan bajo como sea posible ayudará a aumentar el rendimiento de renderizado ya que los objetos distantes no necesitarán ser renderizados a un shadow map en absoluto. Adicionalmente, la escena a menudo se veré mucho mejor si se quita las sombras distantes. Obtener la distancia de sombra ideal es importante para el rendimiento en plataformas móviles ya que no soportan shadow cascades.

Visualizando los ajustes de parámetro de las sombras

La Scene View (vista de escena) tiene un draw mode llamado Shadow Cascades que utilizan coloración para mostrar todas las partes de la escena utilizando diferentes niveles de cascade. Usted puede utilizar esta ayuda para obtener las tasas de distancia de sombra, de la cantidad de cascade y cascade split adecuadas.

Dra mode de Shadow Cascades en la vista de escena
Dra mode de Shadow Cascades en la vista de escena
Shadows (Sombras)
Global Illumination (Iluminación Global)