Articulo de referencia

Mapa de luz

Cubo con un mapa de luz simple (mostrado a la derecha). Un mapa de luz es una estructura de datos utilizada en el mapeo de luz , una forma de almacenamiento en caché de superfic...

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

Un mapa de luz es una estructura de datos utilizada en el mapeo de luz , una forma de almacenamiento en caché de superficies en la que el brillo de las superficies en una escena virtual se precalcula y se guarda en mapas de texturas para su uso posterior. Los mapas de luz se aplican con mayor frecuencia a objetos estáticos en aplicaciones que utilizan gráficos 3D en tiempo real , como los videojuegos , para proporcionar efectos de iluminación, como la iluminación global , con un coste computacional relativamente bajo.

Historia

Quake de John Carmack fue el primer juego de computadora en usar mapas de luz para mejorar la renderización . [ 1 ] Antes de que se inventaran los mapas de luz, las aplicaciones en tiempo real dependían exclusivamente del sombreado de Gouraud para interpolar la iluminación de vértices para superficies. Esto solo permitía información de iluminación de baja frecuencia y podía crear artefactos de recorte cerca de la cámara sin una interpolación con corrección de perspectiva. El mallado de discontinuidad se usaba a veces, especialmente con soluciones de radiosidad , para mejorar adaptativamente la resolución de la información de iluminación de vértices, sin embargo, el costo adicional en la configuración de primitivas para la rasterización en tiempo real era generalmente prohibitivo. El rasterizador de software de Quake usaba el almacenamiento en caché de superficies para aplicar cálculos de iluminación en el espacio de texturas una sola vez cuando los polígonos aparecen inicialmente dentro del frustum de visualización (creando efectivamente versiones "iluminadas" temporales de las texturas actualmente visibles mientras el espectador navegaba por la escena).

A medida que el hardware gráfico 3D para consumidores se volvió capaz de realizar multitexturizado , el mapeo de luz se hizo más popular y los motores comenzaron a combinar mapas de luz en tiempo real como una capa de textura secundaria de mezcla múltiple .

Limitaciones

Los mapas de luz se componen de lúmenes [ 2 ] (elementos de iluminación), análogos a los texeles en el mapeo de texturas . Los lúmenes más pequeños producen un mapa de luz de mayor resolución , lo que proporciona un detalle de iluminación más fino a costa de un rendimiento reducido y un mayor uso de memoria. Por ejemplo, una escala de mapa de luz de 4 lúmenes por unidad de mundo daría una calidad inferior a una escala de 16 lúmenes por unidad de mundo. Por lo tanto, al usar esta técnica, los diseñadores de niveles y los artistas 3D a menudo tienen que hacer un compromiso entre rendimiento y calidad; si se usan mapas de luz de alta resolución con demasiada frecuencia, la aplicación puede consumir recursos excesivos del sistema, afectando negativamente al rendimiento. La resolución y la escala del mapa de luz también pueden estar limitadas por la cantidad de espacio de almacenamiento en disco, el ancho de banda/tiempo de descarga o la memoria de textura disponible para la aplicación. Algunas implementaciones intentan agrupar varios mapas de luz en un proceso conocido como atlasing [ 3 ] para ayudar a sortear estas limitaciones.

La resolución y la escala de un mapa de luz son dos cosas distintas. La resolución es el área, en píxeles, disponible para almacenar los mapas de luz de una o más superficies. La cantidad de superficies individuales que caben en un mapa de luz viene determinada por la escala. Valores de escala más bajos implican mayor calidad y más espacio ocupado en el mapa de luz. Valores de escala más altos implican menor calidad y menos espacio ocupado. Una superficie puede tener un mapa de luz con la misma área (relación 1:1) o más pequeño, de modo que el mapa de luz se estira para ajustarse.

En los videojuegos, los mapas de luz suelen ser mapas de texturas coloreadas. Generalmente son planos, sin información sobre la dirección de la luz, aunque algunos motores de juego utilizan varios mapas de luz para proporcionar información direccional aproximada que se combina con los mapas normales. Los mapas de luz también pueden almacenar componentes precalculados de información de iluminación para iluminación semidinámica con sombreadores, como la oclusión ambiental y las sombras de la luz solar.

Creación

Al crear mapas de luz, se puede usar cualquier modelo de iluminación, ya que la iluminación está completamente precalculada y el rendimiento en tiempo real no siempre es necesario. Se suelen usar diversas técnicas, como la oclusión ambiental , la iluminación directa con bordes de sombra muestreados y las soluciones de luz de rebote de radiosidad completa [ 4 ] . Los paquetes 3D modernos incluyen complementos específicos para aplicar coordenadas UV de mapas de luz, crear atlas de múltiples superficies en hojas de textura únicas y renderizar los mapas. Alternativamente, las canalizaciones de los motores de juego pueden incluir herramientas personalizadas para la creación de mapas de luz. Una consideración adicional es el uso de texturas DXT comprimidas , que son propensas a artefactos de bloqueo: las superficies individuales no deben colisionar en bloques de 4x4 texeles para obtener los mejores resultados.

En todos los casos, es posible obtener sombras suaves para geometría estática si se utilizan pruebas de oclusión sencillas (como el trazado de rayos básico ) para determinar qué lúmenes son visibles para la luz. Sin embargo, la suavidad real de las sombras viene determinada por cómo el motor interpola los datos de los lúmenes a través de una superficie, y puede dar como resultado un aspecto pixelado si los lúmenes son demasiado grandes. Véase filtrado de texturas .

Los mapas de luz también se pueden calcular en tiempo real [ 5 ] para obtener efectos de iluminación de color de buena calidad que no sean propensos a los defectos del sombreado de Gouraud, aunque la creación de sombras aún debe realizarse utilizando otro método, como volúmenes de sombra de plantilla o mapeo de sombras , ya que el trazado de rayos en tiempo real todavía es demasiado lento para realizarse en el hardware moderno en la mayoría de los motores 3D.

El mapeo de fotones se puede utilizar para calcular la iluminación global en los mapas de luz.

Alternativas

Iluminación de vértice

En la iluminación de vértices , la información de iluminación se calcula para cada vértice y se almacena en atributos de color de vértice . Ambas técnicas pueden combinarse; por ejemplo, los valores de color de vértice se almacenan para mallas con alto nivel de detalle, mientras que los mapas de luz se utilizan únicamente para geometrías más simples.

Mapeo de discontinuidades

En el mapeo de discontinuidades , la escena se puede subdividir aún más y recortar siguiendo los cambios importantes de luz y oscuridad para definir mejor las sombras.

Véase también

Referencias

  1. Abrash, Michael. "Modelo de iluminación de Quake: almacenamiento en superficie" . Blue's News . 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" (PDF) . nvidia.com . NVIDIA . 2004-07-07 . Consultado el 2015-09-07 .
  4. Jason Mitchell, Gary McTaggart, Chris Green, Sombreado en el motor Source de Valve . ( PDF ) Consultado el 7 de junio de 2019.
  5. 16 de noviembre de 2003. Mapas de luz dinámicos en OpenGL . Joshbeam.com. Consultado el 7 de julio de 2014.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Lightmap&oldid=1316537200 "