Compartir a través de


Técnicas comunes para mejorar mapas de profundidad de sombras

Los mapas de sombras, introducidos por primera vez en 1978, son una técnica común para agregar sombras a los juegos. Tres décadas más tarde, a pesar de los avances en hardware y software, los artefactos de sombreado, es decir, bordes brillante, alias de perspectiva y otros problemas de precisión, persisten.

En este artículo técnico se proporciona información general sobre algunos algoritmos comunes de mapa de profundidad de sombras y artefactos comunes, y se explican varias técnicas, que van en dificultad de básico a intermedio, que se pueden usar para aumentar la calidad de los mapas de sombra estándar. La adición de asignaciones de sombras básicas a un título suele ser sencilla, pero comprender los matices de los artefactos de sombra puede ser difícil. Este artículo técnico está escrito para el desarrollador de gráficos intermedios que ha implementado sombras, pero no entiende por qué aparecen artefactos específicos y no está seguro de cómo solucionarlos.

Seleccionar las técnicas correctas para mitigar artefactos específicos no estrivial. Cuando se abordan las deficiencias del mapa de sombras, la diferencia de calidad puede ser impresionante (Figura 1). La implementación correcta de estas técnicas mejora drásticamente las sombras estándar. Las técnicas que se explican en este artículo se implementan en el ejemplo CascadedShadowMaps11 en el SDK de DirectX.

Figura 1. Sombras con artefactos graves (izquierda) y sombras después de implementar las técnicas descritas en este artículo (derecha)

sombras con artefactos graves (izquierda) y sombras después de implementar las técnicas descritas en este artículo (derecha)

Revisión de mapas de profundidad de sombra

El algoritmo de mapa de profundidad de sombras es un algoritmo de dos pasos. El primer paso genera un mapa de profundidad en el espacio claro. En el segundo paso, este mapa se usa para comparar la profundidad de cada píxel en el espacio de luz con su profundidad correspondiente en el mapa de profundidad del espacio de luz.

Ilustración 2. Partes clave de una escena de sombra

partes clave de una escena de sombra

Paso 1

La escena se muestra en la figura 2. En el primer paso (figura 3), la geometría se representa en un búfer de profundidad desde el punto de vista de la luz. Más concretamente, el sombreador de vértices transforma la geometría en un espacio de vista clara.

El resultado final de este primer paso es un búfer de profundidad que contiene la información de profundidad de la escena desde el punto de vista de la luz. Ahora se puede usar en el paso 2 para determinar qué píxeles están ocluidos de la luz.

Figura 3. Primer paso de la asignación básica de sombras

primer paso de la asignación de sombras básica

Paso 2

En el segundo paso (figura 4), el sombreador de vértices transforma cada vértice dos veces. Cada vértice se transforma en el espacio de vista de la cámara y se pasa al sombreador de píxeles como posición. Cada vértice también se transforma mediante la matriz de textura de proyección de vista de la luz y se pasa al sombreador de píxeles como coordenada de textura. La matriz view-projection-texture es la misma matriz que se usa para representar la escena en el paso 1 con una transformación adicional. Es una transformación que escala y traduce los puntos del espacio de vista (–1 a 1 en X e Y) al espacio de textura (de 0 a 1 en X y 1 a 0 en Y).

El sombreador de píxeles recibe la posición interpolada y las coordenadas de textura interpolada. Todo lo necesario para realizar la prueba de profundidad ahora está en esta coordenada de textura. La prueba de profundidad ahora se puede realizar indizando el búfer de profundidad desde el primer paso con las coordenadas de textura X e Y y comparando el valor de profundidad resultante con la coordenada Z-texture.

Figura 4. Segundo paso de asignación de sombras básica

segundo paso de asignación de sombras básica

Artefactos de mapa de sombras

El algoritmo de mapa de profundidad de sombras es el algoritmo de sombreado en tiempo real más usado, pero sigue produciendo varios artefactos que requieren mitigación. Los tipos de artefactos que se pueden producir se resumen a continuación.

Alias de perspectiva

El alias de perspectiva, un artefacto común, se muestra en la figura 5. Se produce cuando la asignación de píxeles en el espacio de vista a los elementos de textura del mapa de sombras no es una relación uno a uno. Esto se debe a que los píxeles cerca del plano cercano están más cerca y requieren una resolución de mapa de sombras más alta.

En la figura 6 se muestra un mapa de sombras y un frustum de vista. Cerca del ojo, los píxeles están más cerca y muchos píxeles se asignan a los mismos elementos de textura de sombra. Los píxeles por el plano lejano se extienden, lo que reduce el alias de perspectiva.

Figura 5. Alias de perspectiva alta (izquierda) frente al alias de perspectiva baja (derecha)

alias de perspectiva alta (izquierda) frente al alias de perspectiva baja (derecha)

Para la imagen a la izquierda, el alias de perspectiva es mayor; demasiados píxeles de espacio ocular se asignan a los mismos elementos de textura de mapa de sombras. En la imagen a la derecha, el alias de perspectiva es bajo porque hay una asignación de 1:1 entre los píxeles del espacio ocular y los elementos de textura del mapa de sombras.

Figura 6. Visualización de frustum con mapa de sombras

ver frustum con mapa de sombras

Los píxeles claros del plano lejano representan alias de perspectiva baja y píxeles oscuros en el plano cercano representan alias de perspectiva alta.

La resolución del mapa de sombras también puede ser demasiado alta. Aunque una resolución más alta es menos notable, sin embargo puede dar lugar a objetos pequeños, como cables telefónicos, no convertir sombras. Además, tener una resolución demasiado alta puede provocar problemas de rendimiento graves debido a patrones de acceso a texturas.

Los mapas de sombras de perspectiva (PSM) y los mapas de sombras de perspectiva de espacio claro (LSPSM) intentan abordar el alias de perspectiva mediante la desfase de la matriz de proyección de la luz para colocar más elementos de textura cerca del ojo donde se necesitan. Desafortunadamente, ninguna técnica puede resolver el alias de perspectiva. La parametrización de la transformación necesaria para asignar píxeles de espacio ocular a elementos de textura en el mapa de sombras no se puede enlazar mediante una asimetría lineal. Se requiere una parametrización logarítmica. Los PSM ponen demasiado detalle cerca del ojo, lo que hace que las sombras distantes sean de baja calidad o incluso desaparezcan. Los LSPSM realizan un mejor trabajo para encontrar un terreno intermedio entre aumentar la resolución cerca del ojo y dejar suficiente detalle para los objetos lejos. Ambas técnicas degeneran en sombras ortográficas en algunas configuraciones de escena. Esta degeneración se puede contrarrestar mediante la representación de un mapa de sombras independiente para cada cara del frustum de vista, aunque esto es costoso. Los mapas de sombras de perspectiva logarítmica (LogPSM) también representan un mapa independiente por cara del frustum de la vista. Esta técnica usa rasterización no lineal para colocar más elementos de textura cerca del ojo. El hardware de clase D3D10 y D3D11 no admiten la rasterización no lineal. Para obtener más información sobre estas técnicas y algoritmos, vea la sección Referencias.

Los mapas de sombras en cascada (CSM) son la técnica más popular para tratar el alias de perspectiva. Aunque los CSM se pueden combinar con PSM y LSPSM, no es necesario. El uso de CSM para corregir errores de alias de perspectiva se soluciona en el artículo complementario Mapas de sombras en cascada.

Alias de projective

El alias projectivo es más difícil de mostrar que el alias de perspectiva. Las sombras distendidas resaltadas en la figura 7 muestran errores de alias proyectados. El alias projectivo se produce cuando la asignación entre elementos de texturas en el espacio de la cámara a los elementos de textura en el espacio de luz no es una relación uno a uno; esto se debe a la orientación de la geometría con respecto a la cámara de luz. El alias projectivo se produce a medida que el plano tangente de la geometría se vuelve paralelo a los rayos de luz.

Figura 7. Alias de proyecto alto frente a alias de proyecto bajo

alias de alto proyecto frente a alias de bajo proyecto

Las técnicas que se usan para aliviar los errores de alias de perspectiva también mitigan el alias proyectado. El alias proyectado se produce cuando la superficie normal es ortogonal a la luz; estas superficies deben recibir menos luz en función de ecuaciones de iluminación difusa.

El acné de sombra y el auto-sombra errónea

El acné de sombra (figura 8), un término sinónimo de auto-sombra errónea, se produce cuando el mapa de sombras cuantifica la profundidad sobre un texel completo. Cuando el sombreador compara una profundidad real con este valor, es tan probable que se sombree automáticamente, ya que es para no estar eclipsado.

Otra razón para el acné de sombra es que el texel en el espacio de luz es tan cerca de la profundidad de la textura correspondiente en el mapa de profundidad que los errores de precisión hacen que la prueba de profundidad falle erróneamente. Un motivo de esta diferencia de precisión es que el hardware de rasterización de función fija calculó el mapa de profundidad, mientras que el sombreador calculó la profundidad que se está comparando. El alias projectivo también puede causar acné de sombra.

Figura 8. Artefacto de acné de sombra

artefacto de acné de sombra

Como se muestra en la imagen izquierda, algunos de los píxeles han producido un error en la prueba de profundidad y han creado artefactos especulados y patrones moiré. Para reducir el sombreado erróneo, los límites en el plano cercano y el plano lejano para el frustum de la vista de espacio de luz deben calcularse lo más estrechamente posible. El sesgo de profundidad basado en la pendiente y otros tipos de sesgo son otras soluciones que se usan para mitigar el acné de sombra.

Peter Panning

El término Peter Panning deriva su nombre de un personaje de libro infantil cuya sombra se desasoció y que podía volar. Este artefacto hace que los objetos con sombras que faltan parezcan desasociados de y para flotar sobre la superficie (figura 9).

Figura 9. Artefacto de Peter Panning

artefacto de movimiento panorámico peter

En la imagen a la izquierda, la sombra se desasocia del objeto, creando un efecto flotante.

Una técnica para eliminar el acné superficial es agregar algún valor a la posición de píxel en el espacio de luz; esto se denomina agregar un desplazamiento de profundidad. Peter Panning da como resultado cuando el desplazamiento de profundidad utilizado es demasiado grande. En este caso, el desplazamiento de profundidad hace que la prueba de profundidad pase erróneamente. Al igual que el acné de sombra, Peter Panning se agrava cuando no hay precisión suficiente en el búfer de profundidad. El cálculo apretado cerca de aviones y aviones lejanos también ayuda a evitar Peter Panning.

Técnicas para mejorar los mapas de sombras

Agregar sombras a un título es un proceso. El primer paso consiste en que los mapas de sombra básicos funcionen. La segunda consiste en asegurarse de que todos los cálculos básicos se realizan de forma óptima: frusta se ajusta lo más estrechamente posible, se usa el sesgo a gran escala, etc. Una vez habilitadas las sombras básicas y tener la mejor apariencia posible, el desarrollador tiene una mejor idea de qué algoritmos se necesitan para conseguir que las sombras sean suficientes de fidelidad. En esta sección se proporcionan sugerencias básicas que pueden ser necesarias para obtener mapas de sombras básicos que examinen lo mejor de esta sección.

Sesgo de profundidad de escalado de pendientes

Como se mencionó anteriormente, el auto-sombra puede conducir al acné de sombra. Agregar demasiado sesgo puede dar lugar a Peter Panning. Además, los polígonos con pendientes empinadas (relativas a la luz) sufren más de alias proyectado que los polígonos con pendientes poco profundas (relativas a la luz). Por este motivo, cada valor de mapa de profundidad puede necesitar un desplazamiento diferente en función de la pendiente del polígono en relación con la luz.

El hardware de Direct3D 10 tiene la capacidad de inclinar un polígono en función de su pendiente con respecto a la dirección de la vista. Esto tiene el efecto de aplicar un sesgo grande a un polígono que se ve arista hacia la dirección de la luz, pero no aplicar ningún sesgo a un polígono orientado directamente a la luz. En la figura 10 se muestra cómo dos píxeles vecinos pueden alternar entre sombreado y no sombreado al realizar pruebas con la misma pendiente no sesgada.

Figura 10. Sesgo de profundidad escalado de pendientes en comparación con la profundidad no sesgada

inclinación con sesgo de profundidad escalado en comparación con la profundidad no sesgada

Cálculo de una proyección ajustada

Ajustar estrechamente la proyección de la luz a la vista frustum aumenta la cobertura del mapa de sombras. En la figura 11 se muestra que el uso de una proyección arbitraria o el ajuste de la proyección a los límites de la escena da como resultado un alias de perspectiva superior.

Figura 11. Sombra arbitraria frustum y sombra frustum encajan en la escena

sombras arbitrarias frustum y sombra frustum encajan en la escena

La vista es desde el punto de vista de la luz. El trapezoide representa el frustum de la cámara de vista. La cuadrícula dibujada sobre la imagen representa el mapa de sombras. La imagen de la derecha muestra que el mismo mapa de sombras de resolución crea más cobertura de textura cuando se ajusta más estrechamente a la escena.

En la figura 12 se muestran los frustums que se ajustan correctamente. Para calcular la proyección, los ocho puntos que componen el frustum de vista se transforman en espacio de luz. A continuación, se encuentran los valores mínimo y máximo en X e Y. Estos valores componen los límites de una proyección ortográfica.

Figura 12. Ajuste de proyección de sombra para ver frustum

ajuste de proyección de sombra para ver frustum

También es posible recortar el frustum a la escena AABB para obtener un límite más estrecho. Esto no se recomienda en todos los casos porque esto puede cambiar el tamaño de la proyección de la cámara de luz de fotograma a marco. Muchas técnicas, como las descritas en la sección Movimiento de incrementos de tamaño de textura claro, proporcionan mejores resultados cuando el tamaño de la proyección de la luz permanece constante en cada fotograma.

Calcular el plano cercano y el plano lejano

El plano cercano y el plano lejano son las partes finales necesarias para calcular la matriz de proyección. Cuanto más estrechamente se encuentren los planos, más precisos son los valores del búfer de profundidad.

El búfer de profundidad puede ser de 16 bits, de 24 o de 32 bits, con valores entre 0 y 1. Por lo general, los búferes de profundidad son puntos fijos, con los valores cerca del plano cercano agrupados más estrechamente que los valores cercanos al plano lejano. El grado de precisión disponible para el búfer de profundidad viene determinado por la relación del plano cercano al plano lejano. El uso del plano más estrecho posible cerca o lejano podría permitir el uso de un búfer de profundidad de 16 bits. Un búfer de profundidad de 16 bits podría reducir el uso de memoria al aumentar la velocidad de procesamiento.

Basado en AABB cerca del plano y el plano lejano

Una forma sencilla e ingenua de calcular el plano cercano y el plano lejano es transformar el volumen delimitador de la escena en espacio de luz. El valor de coordenada Z más pequeño es el plano cercano y el valor de coordenada Z más grande es el plano lejano. Para muchas configuraciones de la escena y la luz, este enfoque es suficiente. Sin embargo, el peor escenario puede dar lugar a una pérdida significativa de precisión en el búfer de profundidad; En la figura 13 se muestra este escenario. Aquí el rango del plano cercano al plano lejano es cuatro veces mayor que necesario.

La vista frustum de la figura 13 se eligió intencionadamente para ser pequeña. Un frustum de vista pequeño se muestra en una escena muy grande que consta de pilares que se extienden desde la cámara de vista. El uso de scene AABB para los planos cercanos y lejanos no es óptimo. El algoritmo de CSM descrito en el artículo técnico Mapas de sombras en cascada debe calcular planos cercanos y lejanos para frustums muy pequeños.

Figura 13. Planos cercanos y lejanos basados en la escena AABB

planos cercanos y lejanos basados en la escena aabb

Frustum-Based Near Plane and Far Plane

Otra técnica para calcular los planos cercanos y lejanos es transformar el frustum en espacio de luz y usar los valores mínimos y máximos en Z como los planos cercanos y lejanos, respectivamente. En la figura 14 se muestran los dos problemas con este enfoque. En primer lugar, el cálculo es demasiado conservador, como se muestra cuando el frustum se extiende más allá de la geometría de la escena. En segundo lugar, el plano cercano podría estar demasiado apretado, lo que provocaba que se recortaran los lanzadores de sombra.

Ilustración 14. Planos cercanos y lejanos basados únicamente en la vista frustum

planos cercanos y lejanos basados únicamente en la vista frustum

Frustum claro intersecado con la escena para calcular planos cercanos y lejanos

La manera adecuada de calcular los planos cercanos y lejanos se muestra en la figura 15. Cuatro de los planos del frustum de luz ortográfica se calcularon utilizando el mínimo y máximo de las coordenadas X e Y del frustum de vista en el espacio de luz. Los dos últimos planos de la vista ortogonal frustum son los planos cercanos y lejanos. Para encontrar estos planos, los límites de la escena se recortan contra los cuatro planos de frustum ligeros conocidos. Los valores Z más pequeños y mayores del límite recién recortado representan el plano cercano y el plano lejano, respectivamente.

El código que realiza esta operación se encuentra en el ejemplo CascadedShadowMaps11. Los ocho puntos que componen el AABB del mundo se transforman en espacio de luz. La transformación de los puntos en el espacio de luz simplifica las pruebas de recorte. Los cuatro planos conocidos del frustum ligero ahora se pueden representar como líneas. El volumen delimitador de escenas en el espacio de luz se puede representar como seis cuadriláteros. Estos 6 cuadriláteros se pueden convertir en 12 triángulos para el recorte basado en triángulos. Los triángulos se recortan en los planos conocidos del frustum de vista (estas son líneas horizontales y verticales en X e Y en espacio claro). Cuando se encuentra un punto de intersección en X e Y, el triángulo 3D se recorta en ese punto. Los valores Z mínimos y máximos de todos los triángulos recortados son el plano cercano y el plano lejano. En el ejemplo CascadedShadowMaps11 se muestra cómo realizar este recorte en la función ComputeNearAndFar .

Hay dos técnicas más que podrían usarse para calcular los planos más estrechos y cercanos posibles. Estas técnicas no se muestran en el ejemplo CascadedShadowMaps.

  • Incluso más estrechos planos cercanos y lejanos podrían calcularse mediante la intersección de una jerarquía de una escena o objetos individuales en una escena contra el frustum de luz. Esto sería computacionalmente más complejo. Aunque no se muestra en el ejemplo CascadedShadowMaps11, esto podría ser una técnica válida para algunos iconos.

  • El plano lejano se puede calcular tomando el mínimo de:

    • La profundidad más grande de la vista frustum en el espacio de luz.
    • La profundidad más grande de la intersección de la vista frustum y la escena AABB.

Este enfoque puede ser problemático cuando se usa con mapas de sombras en cascada donde es posible indexar fuera de un frustum de vista. En este caso, es posible que falte geometría en el mapa de sombras.

Ilustración 15. Planos cercanos y lejanos basados en la intersección de los cuatro planos calculados del frustum de luz y la geometría delimitador de la escena

planos cercanos y lejanos basados en la intersección de los cuatro planos calculados del frustum de luz y la geometría delimitador de la escena

Mover la luz en incrementos de tamaño de textura

Un artefacto común en los mapas de sombras es el efecto perimetral brillante. A medida que la cámara se mueve, los píxeles a lo largo de los bordes de las sombras se iluminan y oscurecen. Esto no se puede ver en imágenes fijas, pero es muy notable y distraído en tiempo real. En la figura 16 se resalta este problema y en la figura 17 se muestra el aspecto de los bordes de sombra.

El error de borde brillante se produce porque la matriz de proyección de luz se vuelve a calcular cada vez que se mueve la cámara. Esto crea diferencias sutiles en los mapas de sombras generados. Todos los siguientes factores pueden influir en la matriz creada para enlazar la escena.

  • Tamaño de la vista frustum
  • Orientación de la vista frustum
  • Ubicación de la luz
  • Ubicación de la cámara

Cada vez que cambia esta matriz, los bordes de las sombras podrían cambiar.

Ilustración 16. Bordes de sombra brillante

bordes de sombra brillante

Los píxeles a lo largo del borde de la sombra entran y salen de la sombra a medida que la cámara se mueve de izquierda a derecha.

Ilustración 17. Sombras sin bordes brillantes

sombras sin bordes brillantes

Los bordes de sombra permanecen constantes a medida que la cámara se mueve de izquierda a derecha.

Para las luces direccionales, la solución a este problema es redondear el valor mínimo/máximo en X e Y (que componen los límites de proyección ortográfica) a incrementos de tamaño de píxel. Esto se puede hacer con una operación de división, una operación de planta y una multiplicación.

        vLightCameraOrthographicMin /= vWorldUnitsPerTexel;
        vLightCameraOrthographicMin = XMVectorFloor( vLightCameraOrthographicMin );
        vLightCameraOrthographicMin *= vWorldUnitsPerTexel;
        vLightCameraOrthographicMax /= vWorldUnitsPerTexel;
        vLightCameraOrthographicMax = XMVectorFloor( vLightCameraOrthographicMax );
        vLightCameraOrthographicMax *= vWorldUnitsPerTexel;

El valor vWorldUnitsPerTexel se calcula tomando un límite de la vista frustum y dividiendo por el tamaño del búfer.

        FLOAT fWorldUnitsPerTexel = fCascadeBound /
        (float)m_CopyOfCascadeConfig.m_iBufferSize;
        vWorldUnitsPerTexel = XMVectorSet( fWorldUnitsPerTexel, fWorldUnitsPerTexel,                            0.0f, 0.0f );

El límite del tamaño máximo del frustum de vista da como resultado un ajuste más flexible para la proyección ortográfica.

Es importante tener en cuenta que la textura es de 1 píxel más grande en ancho y alto al usar esta técnica. Esto evita que las coordenadas de sombra se indexen fuera del mapa de sombras.

Cara posterior y cara frontal

Los mapas de sombras deben representarse con la selección estándar de la cara trasera, un proceso que omite la rasterización de objetos que el visor no puede ver y acelera la representación de la escena. Otra opción común es representar mapas de sombras con la selección de caras frontales habilitada, lo que significa que se eliminan los objetos orientados al visor. El argumento de esto es que ayuda con el sombreado propio, ya que la geometría que compone la copia de seguridad de los objetos es ligeramente desplazamiento. Hay dos problemas con esta idea.

  • Cualquier objeto con geometría frontal o trasera incorrecta provoca artefactos en el mapa de sombras. Sin embargo, tener geometría frontal o trasera incorrecta provocará otros problemas, por lo que puede ser seguro asumir que la geometría frontal y de la cara posterior se realiza correctamente. Puede ser poco práctico crear caras posteriores para la geometría basada en sprite, como el follaje.
  • Peter Panning y las lagunas de sombra cerca de la base de objetos como las paredes son más probables que se produzcan porque la disparidad de profundidad de sombra es demasiado pequeña.

Mapa de sombras: geometría fácil de usar

La creación de geometría que funciona bien en mapas de sombras permite una mayor flexibilidad al combatir artefactos como Peter Panning y el acné de sombras.

Los bordes duros son problemáticos para el sombreado propio. La disparidad de profundidad cerca de la punta del borde es muy pequeña. Incluso un desplazamiento pequeño puede hacer que los objetos pierdan sus sombras (figura 18).

Ilustración 18. Los bordes afilados provocan artefactos derivados de la disparidad de baja profundidad con desplazamientos

Los bordes afilados provocan artefactos derivados de la disparidad de baja profundidad con desplazamientos

Los objetos estrechos, como las paredes, deben tener espaldas incluso si nunca están visibles. Esto aumentará la disparidad de profundidad.

También es importante asegurarse de que la dirección a la que se enfrenta la geometría es correcta; es decir, el exterior de un objeto debe estar orientado hacia atrás y el interior de un objeto debe estar orientado hacia delante. Esto es importante para la representación con la selección de caras traseras habilitada, así como para combatir los efectos del sesgo de profundidad.

Mapas de instantáneas en cascada

Consulte también Mapas de sombras en cascada y la aplicación de ejemplo CascadedShadowMaps11. En el ejemplo se muestra el algoritmo de mapa de sombras en cascada (CSM), así como varias técnicas que se pueden usar para hacer un uso eficaz del mapa de sombras.

Puede encontrar el ejemplo en el Kit de desarrollo de software (SDK) de DirectX. O bien, puede realizar una búsqueda web para encontrarlo en GitHub.

Resumen

Las técnicas descritas en este artículo se pueden usar para aumentar la calidad de los mapas de sombras estándar. El siguiente paso es examinar las técnicas que pueden funcionar bien con mapas de sombras estándar. Los CSM se recomiendan como una técnica superior para combatir el alias de perspectiva. El filtrado de porcentaje más cercano o los mapas de sombras de varianza se pueden usar para suavizar los bordes de sombra. Consulte el artículo técnico De mapas de sombras en cascada para obtener más información.

Donnelly, W., y Lauritzen, A. Mapas de sombras de varianza. Simposio sobre gráficos interactivos en 3D, actas del simposio de 2006 sobre gráficos y juegos interactivos en 3D. 2006, pp. 161–165.

Engel, Woflgang F. Sección 4. Mapas de sombras en cascada. ShaderX5, Advanced Rendering Techniques, Wolfgang F. Engel, Ed. Charles River Media, Boston, Massachusetts. 2006. pp. 197–206.

Stamminger, Marc y Drettakis, George. Mapas de sombras de perspectiva. Conferencia Internacional sobre Gráficos Informáticos y Técnicas Interactivas, Actas de la 29ª Conferencia Anual sobre Gráficos Informáticos y Técnicas Interactivas. 2002, pp 557–562.

Wimmer, M., Scherzer, D., y Purgathofer, W. Mapas de sombras de perspectiva de espacio claro. Simposio eurográfico sobre representación. 2004. Revisado el 10 de junio de 2005. Technische Universität Wien.