Los gráficos en tiempo real despliegan una variedad de aproximaciones para lidiar con el gasto computacional de simular la iluminación indirecta, compensando entre el rendimiento en tiempo de ejecución y la fidelidad de la iluminación. Esta es un área de investigación activa, con nuevas técnicas que aparecen cada año.
Iluminación ambiental
En el extremo más simple del rango, puede utilizar la iluminación ambiental : una fuente de luz omnidireccional global que se aplica a todos los objetos de la escena, sin tener en cuenta las fuentes de luz reales o la visibilidad local. Esto no es del todo exacto, pero es extremadamente barato, fácil de modificar para un artista y puede verse bien dependiendo de la escena y el estilo visual deseado.
Las extensiones comunes a la iluminación ambiental básica incluyen:
- Haga que el color ambiental varíe direccionalmente, por ejemplo, utilizando armónicos esféricos (SH) o un pequeño mapa de cubos , y buscando el color en un sombreador basado en el vector normal de cada vértice o píxel. Esto permite cierta diferenciación visual entre superficies de diferentes orientaciones, incluso donde no les llega la luz directa.
- Aplique técnicas de oclusión ambiental (AO) incluyendo vértice AO precalculado, mapas de textura AO , campos AO y AO de espacio de pantalla (SSAO) . Todo esto funciona al tratar de detectar áreas como agujeros y grietas donde es menos probable que la luz indirecta rebote y oscurecer la luz ambiental allí.
- Agregue un mapa de cubo de entorno para proporcionar una reflexión especular ambiental. Un mapa de cubo con una resolución decente (128² o 256² por cara) puede ser bastante convincente para especular en superficies curvas y brillantes.
Iluminación indirecta al horno
El siguiente "nivel", por así decirlo, de técnicas involucra hornear (pre-computación fuera de línea) alguna representación de la iluminación indirecta en una escena. La ventaja de hornear es que puede obtener resultados de muy alta calidad por poco gasto computacional en tiempo real, ya que todas las partes duras se realizan en el horneado. Las desventajas son que el tiempo necesario para el proceso de horneado perjudica la tasa de iteración de los diseñadores de nivel; se requiere más memoria y espacio en disco para almacenar los datos calculados previamente; la capacidad de cambiar la iluminación en tiempo real es muy limitada; y el proceso de horneado solo puede usar información de geometría de nivel estático, por lo que se perderán los efectos de iluminación indirectos de objetos dinámicos como los personajes. Aún así, la iluminación al horno es muy utilizada en los juegos AAA de hoy.
El paso de horneado puede usar cualquier algoritmo de representación deseado, incluido el trazado de ruta, la radiosidad o el uso del motor del juego para generar mapas de cubos (o hemicubos ).
Los resultados se pueden almacenar en texturas ( mapas de luz ) aplicados a la geometría estática en el nivel, y / o también se pueden convertir a SH y almacenar en estructuras de datos volumétricos, como los volúmenes de irradiancia (texturas de volumen donde cada texel almacena una sonda de SH) o mallas tetraédricas . Luego puede usar sombreadores para buscar e interpolar colores de esa estructura de datos y aplicarlos a su geometría renderizada. El enfoque volumétrico permite que la iluminación horneada se aplique a objetos dinámicos, así como a la geometría estática.
La resolución espacial de los mapas de luz, etc. estará limitada por la memoria y otras restricciones prácticas, por lo que puede complementar la iluminación horneada con algunas técnicas de AO para agregar detalles de alta frecuencia que la iluminación horneada no puede proporcionar y responder a objetos dinámicos (como oscurecer la luz indirecta debajo de un personaje o vehículo en movimiento).
También hay una técnica llamada transferencia de radiación precalculada (PRT) , que extiende la cocción para manejar condiciones de iluminación más dinámicas. En PRT, en lugar de hornear la iluminación indirecta en sí, se hornea la función de transferencia desde alguna fuente de luz, generalmente el cielo, hasta la iluminación indirecta resultante en la escena. La función de transferencia se representa como una matriz que transforma los coeficientes SH de origen a destino en cada punto de muestra de horneado. Esto permite cambiar el entorno de iluminación, y la iluminación indirecta en la escena responderá plausiblemente. Far Cry 3 y 4 utilizaron esta técnica para permitir un ciclo continuo de día y noche, con iluminación indirecta que varía según los colores del cielo en cada momento del día.
Otro punto sobre el horneado: puede ser útil tener datos horneados separados para iluminación indirecta difusa y especular. Los mapas de cubos funcionan mucho mejor que SH para especular (ya que los mapas de cubos pueden tener muchos más detalles angulares), pero también ocupan mucha más memoria, por lo que no puede permitirse colocarlos tan densamente como muestras de SH. La corrección de paralaje se puede usar para compensar eso, deformando heurísticamente el mapa de cubos para que sus reflejos se sientan más basados en la geometría a su alrededor.
Técnicas en tiempo real.
Finalmente, es posible calcular la iluminación indirecta totalmente dinámica en la GPU. Puede responder en tiempo real a cambios arbitrarios de iluminación o geometría. Sin embargo, nuevamente existe una compensación entre el rendimiento del tiempo de ejecución, la fidelidad de la iluminación y el tamaño de la escena. Algunas de estas técnicas necesitan una GPU robusta para funcionar, y solo pueden ser factibles para tamaños de escena limitados. También suelen admitir un solo rebote de luz indirecta.
- Un mapa de cubos de entorno dinámico, donde las caras del mapa de cubos se vuelven a representar cada fotograma utilizando seis cámaras agrupadas alrededor de un punto elegido, puede proporcionar reflexiones ambientales decentemente buenas para un solo objeto. Esto se usa a menudo para el automóvil del jugador en juegos de carreras, por ejemplo.
- Iluminación global del espacio de pantalla , una extensión de SSAO que reúne la iluminación de rebote de píxeles cercanos en la pantalla en un pase de procesamiento posterior.
- La reflexión de trazado de rayos en el espacio de la pantalla funciona mediante la marcha de rayos a través del búfer de profundidad en un paso posterior. Puede proporcionar reflexiones de bastante alta calidad siempre que los objetos reflejados estén en pantalla.
- La radiosidad instantánea funciona al rastrear los rayos en la escena utilizando la CPU y colocando un punto de luz en cada punto de impacto del rayo, que representa aproximadamente la luz reflejada saliente en todas las direcciones desde ese rayo. Estas luces, conocidas como luces de punto virtual (VPL), son procesadas por la GPU de la manera habitual.
- Los mapas de sombras reflectantes (RSM) son similares a la radiosidad instantánea, pero los VPL se generan al representar la escena desde el punto de vista de la luz (como un mapa de sombras) y colocar un VPL en cada píxel de este mapa.
- Los volúmenes de propagación de luz consisten en cuadrículas 3D de sondas SH ubicadas en toda la escena. Los RSM se procesan y se utilizan para "inyectar" luz de rebote en las sondas SH más cercanas a las superficies reflectantes. Luego, un proceso de relleno de inundación propaga la luz de cada sonda SH a los puntos circundantes en la cuadrícula, y el resultado de esto se utiliza para aplicar iluminación a la escena. Esta técnica también se ha extendido a la dispersión volumétrica de la luz .
- El trazado de cono de vóxel funciona voxelizando la geometría de la escena (probablemente usando resoluciones de vóxel variables, más finas cerca de la cámara y más gruesas lejos), luego inyectando luz de los RSM en la cuadrícula de vóxeles. Al representar la escena principal, el sombreador de píxeles realiza una "traza de cono", una marcha de rayos con un radio que aumenta gradualmente, a través de la cuadrícula de vóxeles para recoger la luz entrante para el sombreado difuso o especular.
La mayoría de estas técnicas no se usan ampliamente en los juegos de hoy en día debido a problemas para ampliar el tamaño de escenas realistas u otras limitaciones. La excepción es el reflejo del espacio de la pantalla, que es muy popular (aunque generalmente se usa con cubemaps como reserva, para regiones donde falla la parte del espacio de la pantalla).
Como puede ver, la iluminación indirecta en tiempo real es un gran tema e incluso esta respuesta (¡bastante larga!) Solo puede proporcionar una descripción general y un contexto de 10,000 pies para leer más. El enfoque que sea mejor para usted dependerá en gran medida de los detalles de su aplicación en particular, qué restricciones está dispuesto a aceptar y cuánto tiempo tiene para dedicarlo.