Mapa de luz

De Wikipedia, la enciclopedia libre


Cubo con un mapa de luz simple (mostrado a la derecha).

Un mapa de luz es una estructura de datos utilizada en mapas de luz, una forma de almacenamiento en caché de superficies en la que el brillo de las superficies en una escena virtual se calcula previamente y se almacena en mapas de texturas para usarlo más adelante. Los mapas de luz se aplican habitualmente a objetos estáticos en aplicaciones que utilizan gráficos 3D por computadoraen tiempo real, como videojuegos, para proporcionar efectos luminosos, como iluminación global con un consumo computacional relativamente bajo.

Historia[editar]

Quake de John Carmack fue el primer juego de ordenador que utilizó mapas de luz para aumentar su renderizado.[1]​ Antes de que se inventaran los mapas de luz, las iluminaciones en tiempo real se basaban exclusivamente en el sombreado Gouraud para interpolar la iluminación de los vértices de las superficies. Esto solo permitía información de iluminación de baja frecuencia y podía crear resultados defectuosos de superposición cerca de cámara sin una interpolación de perspectiva correcta. A veces se utilizaba un mallado de discontinuidad, especialmente con soluciones de radiosidad, para mejorar de forma adaptativa la resolución de la información de iluminación de vértices; sin embargo, el consumo adicional en la configuración primitiva para la rasterización en tiempo real era generalmente muy elevado y, por tanto, prohibitivo. El software rasterizador de Quake utilizó el almacenamiento en caché de superficies para aplicar cálculos de iluminación en el espacio de textura cuando los polígonos aparecen inicialmente dentro del campo de visión (creando versiones temporales «iluminadas» de las texturas visibles en ese momento mientras el espectador ve la escena).

A medida que el hardware de gráficos 3D era capaz de crear más texturas, los mapas de luz se hicieron más populares y los motores comenzaron a combinar mapas de luz en tiempo real como una capa de texturas secundaria.

Limitaciones[editar]

Los mapas de luz se componen de lúmeles[2]​ (elementos de luz o iluminación), análogos a los téxeles en el mapeo de texturas. Los lúmeles más pequeños producen un mapa de luz de mayor resolución, lo que proporciona detalles de iluminación más precisos a un rendimiento reducido y un mayor uso de memoria. Por ejemplo, una escala de mapa de luz de 4 lúmeles por unidad daría una calidad inferior que una escala de 16 lúmeles por unidad. Por lo tanto, al utilizar esta técnica, los diseñadores de niveles y los artistas 3D suelen tener que buscar un término medio entre rendimiento y calidad. Si se utilizan mapas de luz de alta resolución con demasiada frecuencia, la aplicación puede consumir recursos del sistema en exceso, afectando negativamente al rendimiento. La resolución y el escalado del mapa de luz también pueden estar limitados por la cantidad de espacio de almacenamiento en disco, ancho de banda/tiempo de descarga o memoria de textura disponible para la aplicación. Algunas implementaciones intentan agrupar varios mapas de luz en un proceso conocido como atlas[3]​ para ayudar a evitar estas limitaciones.

Creación[editar]

Al crear mapas de luz, se puede utilizar cualquier modelo de iluminación, porque la iluminación está completamente precalculada y el rendimiento en tiempo real no siempre es una necesidad. Por lo general, se utiliza una variedad de técnicas que incluyen oclusión ambiental, iluminación directa con bordes de sombra muestreados y luz de radiosidad total[4]​, entre otras soluciones. Los paquetes 3D modernos incluyen complementos específicos para aplicar coordenadas UV de mapas de luz, crear atlas de varias superficies en hojas de texturas únicas y renderizar los propios mapas. Además, los motores de videojuegos pueden incluir herramientas de creación de mapas de luz personalizadas. Algo a tener en cuenta es el uso de texturas DXT comprimidas sujetas a productos de bloqueo: es preferible que las superficies individuales no colisionen en téxeles de 4x4 para optimizar los resultados.

El mapeado de fotones se puede utilizar para calcular la iluminación general para mapas de luz.

Alternativas[editar]

Iluminación de vértices[editar]

En la iluminación de vértices, la información de iluminación se calcula por vértice y se almacena en atributos de color de vértice. Las dos técnicas se pueden combinar, por ejemplo: los valores de color de los vértices se almacenan para mallas con alto nivel de detalle, mientras que los mapas de luz solo se utilizan para una geometría más burda.

Mapeado de discontinuidad[editar]

En el mapeo de discontinuidad, la escena se puede subdividir y recortar más allá de otros cambios importantes en la luz y la oscuridad para definir mejor las sombras.

Véase también[editar]

Referencias[editar]

  1. Abrash, Michael. «Quake's Lighting Model: Surface Caching». www.bluesnews.com. Consultado el 7 de septiembre de 2015. 
  2. Channa, Keshav (21 de julio de 2003). «flipcode - Light Mapping - Theory and Implementation». www.flipcode.com. Consultado el 7 de septiembre de 2015. 
  3. «Texture Atlasing Whitepaper». nvidia.com. NVIDIA. 7 de julio de 2004. Consultado el 7 de septiembre de 2015. 
  4. Jason Mitchell, Gary McTaggart, Chris Green, Shading in Valve's Source Engine. (PDF) Retrieved Jun. 07, 2019.