Light map ( mapa de sombras ; mapa de luz en inglés ) es un método de iluminación espacial en aplicaciones 3D, que consiste en que se crea una textura que contiene información sobre la iluminación de modelos tridimensionales [1] [2] .
El método ahorra significativamente recursos informáticos, ya que la aplicación no tiene que calcular la incidencia de la luz en tiempo real. En términos de realismo, el resultado de utilizar este método es muy superior al de utilizar iluminación dinámica, en la que se calcula la caída de luz y las sombras antes de cada fotograma. Esto se debe a que la mayoría de las aplicaciones de mapeo de luz 3D tienen en cuenta los reflejos de la luz y su mayor incidencia en otras superficies, de manera similar a cómo se comporta la luz en el mundo real. Sin embargo, este método es válido solo en el caso de objetos estáticos. Los mapas de luz para modelos en movimiento se crean solo si la fuente de luz está adjunta a un modelo en movimiento y el resultado de la iluminación no depende de su movimiento y rotación.
Los mapas de luz casi siempre están alineados con texturas de polígonos normales, y cada texel de mapa corresponde a 4-32 texels de textura. Las dimensiones del mapa están determinadas por las dimensiones del rectángulo mínimo delimitador de polígono cuyos lados son paralelos a los vectores de textura.
De una forma u otra, los mapas de luz se utilizan en casi todas las aplicaciones 3D modernas en tiempo real. Este método se utiliza para crear toda la iluminación estática de una escena. La iluminación se genera para la geometría estática antes del inicio del ciclo de renderizado y prácticamente no cambia durante el renderizado . En los equipos modernos, la implementación de una iluminación completamente dinámica mediante mapas de luz es imposible debido a la alta intensidad de recursos del proceso de creación de mapas de luz. Este enfoque se considera la base para la mayoría de los otros algoritmos de representación de sombras en tiempo real.
Cuando se crea, el mapa se llena de píxeles negros. Además, para cada texel del mapa de luz, se encuentran las coordenadas tridimensionales de un punto en el polígono. Para este punto, es necesario construir una lista de todas las fuentes de luz que afectan su iluminación: los vectores desde este punto a las fuentes de luz se verifican para la intersección con la geometría de la escena, y si la intersección ocurre, entonces esta fuente de luz no ilumina el punto (relativo a él, el punto está en la sombra) . Las fuentes restantes aumentan el valor del téxel del mapa de luz en una cantidad que depende del modelo de iluminación utilizado y la posición de la fuente de luz en relación con el punto. El filtrado bilineal a menudo se aplica a los mapas de luz para mejorar la apariencia de una imagen . Estas operaciones se repiten para cada polígono de escena iluminada.
Durante el renderizado , los mapas de luz se pueden superponer con una segunda pasada, utilizando la mezcla alfa . Si tienes un equipo multitextura , puedes aplicar la textura y el mapa de luz en una sola pasada.
Este método de iluminación es compatible con motores de juegos como id Tech , Unreal Engine , Lithtech , GoldSrc , Xash3D , Source , X-Ray , Unity .