stringtranslate.com

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 superficies en la que el brillo de las superficies en una escena virtual se calcula previamente y se almacena en mapas de textura para su uso posterior. Los mapas de luz se aplican con mayor frecuencia a objetos estáticos en aplicaciones que utilizan gráficos de computadora 3D en tiempo real , como videojuegos , para proporcionar efectos de iluminación como iluminación global a un costo computacional relativamente bajo.

Historia

Quake de John Carmack fue el primer juego de computadora en usar mapas de luz para aumentar la representación . [1] Antes de que se inventaran los mapas de luz, las aplicaciones en tiempo real dependían exclusivamente del sombreado Gouraud para interpolar la iluminación de los vértices para las 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 de perspectiva correcta. El mallado de discontinuidad a veces se usaba especialmente con soluciones de radiosidad para mejorar de forma adaptativa la resolución de la información de iluminación de los vértices, sin embargo, el costo adicional en la configuración primitiva 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 textura una vez que los polígonos aparecían inicialmente dentro del frustum de visualización (creando efectivamente versiones "iluminadas" temporales de las texturas actualmente visibles a medida que el espectador negociaba la escena).

A medida que el hardware de gráficos 3D para consumidores era capaz de realizar múltiples texturas , 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 lumels [2] (elementos de iluminación), análogos a los texels en el mapeo de texturas . Los lumels más pequeños producen un mapa de luz de mayor resolución , lo que proporciona detalles de iluminación más finos al precio de un rendimiento reducido y un mayor uso de memoria. Por ejemplo, una escala de mapa de luz de 4 lumels por unidad de mundo daría una calidad inferior a una escala de 16 lumels por unidad de mundo. Por lo tanto, al utilizar la técnica, los diseñadores de niveles y los artistas 3D a menudo tienen que hacer un compromiso entre el rendimiento y la calidad; si se utilizan mapas de luz de alta resolución con demasiada frecuencia, la aplicación puede consumir recursos excesivos del sistema, lo que afecta 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, ancho de banda/tiempo de descarga o memoria de textura disponible para la aplicación. Algunas implementaciones intentan empaquetar varios mapas de luz juntos en un proceso conocido como atlasing [3] para ayudar a sortear estas limitaciones.

La resolución y la escala del mapa de luz son dos cosas diferentes. La resolución es el área, en píxeles, disponible para almacenar uno o más mapas de luz de la superficie. La cantidad de superficies individuales que pueden caber en un mapa de luz está determinada por la escala. Los valores de escala más bajos significan una mayor calidad y más espacio ocupado en un mapa de luz. Los valores de escala más altos significan una menor calidad y menos espacio ocupado. Una superficie puede tener un mapa de luz que tenga la misma área, es decir, una relación 1:1, o más pequeña, por lo que el mapa de luz se estira para ajustarse.

Los mapas de luz de los juegos suelen ser mapas de texturas coloreados. Suelen ser planos, sin información sobre la dirección de la luz, mientras que algunos motores de juegos utilizan varios mapas de luz para proporcionar información direccional aproximada para combinar con mapas normales. Los mapas de luz también pueden almacenar componentes precalculados separados de información de iluminación para iluminación semidinámica con sombreadores, como oclusión ambiental y sombreado por luz solar.

Creación

Al crear mapas de luz, se puede utilizar cualquier modelo de iluminación, ya que la iluminación está completamente precalculada y el rendimiento en tiempo real no siempre es una necesidad. Normalmente se utilizan diversas técnicas, incluidas la oclusión ambiental , la iluminación directa con bordes de sombra muestreados y las soluciones de luz rebotada con 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 individuales y renderizar los mapas en sí. Alternativamente, las canalizaciones de motores de juegos pueden incluir herramientas de creación de mapas de luz personalizados. Una consideración adicional es el uso de texturas DXT comprimidas que están sujetas a artefactos de bloqueo: las superficies individuales no deben colisionar en fragmentos de texel de 4x4 para obtener mejores resultados.

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

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

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

Alternativas

Iluminación de vértices

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 vértice se almacenan para mallas con alto nivel de detalle, mientras que los mapas de luz solo se utilizan para geometría más burda.

Mapeo de discontinuidades

En el mapeo de discontinuidad , la escena puede subdividirse y recortarse aún más a lo largo de los principales cambios 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 caché de superficie". www.bluesnews.com . Consultado el 7 de septiembre de 2015 .
  2. ^ Channa, Keshav (21 de julio de 2003). «flipcode - Light Mapping - Theory and Implementation» (Mapas de luz: teoría e implementación). 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.