Tecnologías

Iluminación global basada en vóxeles
divider

Tecnología VXGI

VXGI (Voxel Global Illumination) es un asombroso logro técnico que proporciona funciones avanzadas de iluminación, sombreado y reflexión de la luz en los juegos de PC y los motores gráficos de última generación.

Modelar correctamente la luz es uno de los problemas computacionales más difíciles de solucionar en procesamiento gráfico y, con Maxwell, nos marcamos el objetivo aumentar extraordinariamente la capacidad de la GPU para realizar cálculos de iluminación en tiempo real con el fin de producir imágenes dinámicas similares a las fotográficas.

En el mundo físico, todos los objetos se iluminan mediante una combinación de luz directa (fotones provenientes desde una fuente de luz que inciden directamente sobre el objeto) y luz indirecta (fotones procedentes de una fuente de luz que inciden sobre un objeto, rebotan e inciden sobre un segundo objeto al que también iluminan). “Iluminación global” (IG) es un término que designa a los sistemas que modelan este efecto. Sin la luz indirecta, las escenas parecen toscas y artificiales. Sin embargo, mientras que la luz directa es bastante fácil de calcular, los cálculos necesarios para reproducir la iluminación indirecta son enormemente complejos y costosos en términos de procesamiento.

 

Escena renderizada solo con luz directa

Escena renderizada solo con luz directa.

 

Escena renderizada con NVIDIA VXGI activada

Misma escena renderizada con iluminación global. Se aprecian la luz indirecta y los reflejos del suelo.

 

Dado que se trata de una técnica con un alto coste computacional (especialmente en escenas muy detalladas), la IG se ha venido utilizado fundamentalmente en el cine para renderizar escenas de ordenador mediante clusters de GPUs. Aunque en la mayoría de los juegos conocidos de la actualidad se han utilizado algunas formas de IG, casi siempre se han basado en luces precalculadas. Las luces “enlatadas” suelen emplearse por razones de rendimiento, pero requieren más diseño gráfico, ya que es preciso crear y calcular los efectos de iluminación de forma anticipada. Dado que la iluminación precalculada no es dinámica, muchas veces es difícil, o incluso imposible, actualizar las fuentes de luz indirectas cuando se producen cambios en el juego como, por ejemplo, la aparición de un foco de luz nuevo, o la destrucción o el movimiento de elementos de la escena. La iluminación indirecta precalculada vale para los objetos estáticos, pero no para los personajes animados o los objetos en movimiento.

En 2011, los ingenieros de NVIDIA desarrollaron y probaron un nuevo e innovador método para calcular una forma rápida y aproximada de iluminación global dinámica que se procesaba en tiempo real en la GPU. El método utiliza una malla de vóxeles para almacenar la escena y la información de iluminación, y un novedoso proceso de trazado de conos a lo largo de la malla para recopilar los datos de luz indirecta de los vóxeles. Cyril Crassin, de NVIDIA, describe la técnica en este artículo y en este vídeo de la GTC 2012, que puede verse aquí. La demo Unreal Engine 4 ‘Elemental’ presentada por Epic en 2012 utilizaba una técnica similar.

 

Epic utilizó trazado de conos en mallas de vóxeles para el asombroso sistema de IG de su demo Unreal Engine 4 'Elemental'

Epic utilizó trazado de conos en mallas de vóxeles para el asombroso sistema de IG de su demo Unreal Engine 4 'Elemental'.

 

Desde entonces, NVIDIA ha estado trabajando en la siguiente generación de esta tecnología (VXGI), que introduce nuevos algoritmos de software y técnicas especiales de aceleración en hardware dentro de la arquitectura Maxwell.

La caja de Cornell

En 1984, un grupo de investigadores de la Universidad Cornell elaboraron una escena sencilla destinada a probar la precisión de los gráficos de renderizado. La idea era mantener la simplicidad de la escena para poder comparar fácilmente las imágenes generadas por ordenador con las imágenes fotográficas.

 

Imagen generada con la tecnología de renderizado NVIDIA iray

 

La imagen anterior se ha generado con nuestra moderna tecnología de renderizado iray, que utiliza la potencia de varias GPUs trabajando en paralelo en la nube para renderizar modelos casi fotográficos y casi en tiempo real. Esta imagen se aproxima mucho al aspecto que tendría la caja de Cornell en la vida real.

Sin embargo, el objetivo de VXGI es procesar la luz en tiempo real, y aplicar trazado de rayos a toda la escena conlleva demasiada carga computacional, así que es preciso utilizar aproximaciones.

 

Vista transparente generada con los valores de opacidad de los vóxeles

 

La imagen anterior muestra una vista de la escena reproducida con los valores de opacidad de los vóxeles. Cada cubo muestra una vista básica de la geometría subyacente, que podemos usar para acelerar los cálculos de iluminación.

 

Cálculo del color y la intensidad de la luz que incide en los vóxeles utilizando técnicas rápidas de iluminación directa ya existentes

 

La vista que reproduce la luz emitida por los vóxeles es donde se produce la magia. Imagina que cada cubo (vóxel) recibe luz directa de las fuentes que haya en la escena. Podemos calcular correctamente el color y la intensidad de la luz que incide en los vóxeles utilizando técnicas de iluminación directa ya existentes y muy rápidas. La novedad reside en que, en la siguiente fase, estos vóxeles iluminados también actuarán como fuentes de luz para generar la luz indirecta.

 

Vista de la luz reflejada desde las superficies iluminadas por las fuentes de luz directa originales

 

Los colores de la imagen pueden resultar algo confusos. Para empezar, fíjate en las paredes. La pared roja de la imagen anterior ahora presenta leves tonos verdes y la pared anteriormente verde ahora muestra suaves tonos rojizos. Este efecto se debe al hecho de que cada pared recibe parte del color emitido por la pared opuesta de la sala. A su vez, la pared roja también ilumina suavemente la bola que tiene cerca, y así sucesivamente. Efectivamente, estamos viendo la luz que se refleja desde las superficies iluminadas por las fuentes de luz directa originales.

 

El efecto de todas las luces combinadas produce escenas increíblemente realistas

 

Cuando combinamos el efecto de todas las luces actuando a la vez, podemos generar escenas increíblemente realistas. Pero la clave de todo es que, utilizando VXGI, podemos hacerlo en tiempo real.