Las gráficas por computadora hoy son algo que quizás vemos con mucha más frecuencia de la que imaginamos. Probablemente se encuentre en imágenes impresas en etiquetas de algunos productos, en anuncios de televisión, en muchísimas películas en donde hay efectos especiales, etcétera. Y la meta es que estas imágenes sean, en muchos casos, tan realistas como las de verdad. Hoy podemos ver imágenes de un realismo impresionante pero muchas veces aún se notan que son hechas por computadoras.
Pues bien, investigadores de la Universidad de California, en San Diego (UCSD) han desarrollado un algoritmo gráfico que hace que la luz reflejada en los modelos creados sea más realista que con los algoritmos conocidos.
El código permite calcular la cantidad de luz que se recibirá en un modelo y cuánta de ella se reflejará, incluso en superficies como agua, piel, cristal y metal. Pero aún más, el nuevo algoritmo corre unas 100 veces más rápido que los algoritmos usados hasta ahora, como agua, piel, cristal y metal.
Esto es lo que se llama la técnica de «render» para las gráficas por computadora y son complejas de ejecutar en tiempo real, pues hay muchas superficies no homogéneas y eso hace que el asunto sea complicado en los cálculos que la máquina tiene que hacer. Y estas técnicas, sin embargo, son lo suficientemente rápidas pero aún así, falta un trabajo en los detalles de forma que cuando se observa la imagen «renderizada», se nota si se analiza con cuidado.
El algoritmo desarrollado por el Profesor Ravi Ramamoorthu y sus colegas en la UCSD ha llevado a resultados más realistas pues «rompe» cada pixel en una miríada de lo que han denominado «microfacetas». Cada una de ellas actúa como un pequeñísimo espejo suave, que refleja la luz en una dirección particular. Si se toman juntas las decenas de miles de estos pequeñísimos espejos, se puede generar entonces una representación mucho más realista de lo que hoy se hace.
Las microfacetas no son una novedad realmente, pues ya se habían usado antes en otros sistemas de render, pero el procesarlas con precisión requería una cantidad de cálculos que simplemente resultaba impráctico por el tamaño del problema. Este sistema introduce una reducción de los cálculos por un factor de 100 y es 40% más demandante del hardware que el usar una «superficie suave simplificada» para realizar los cálculos de luz necesarios.
El punto inicial para los investigadores era calcular, para cada microfaceta, lo que se llama el «vector normal», el cual es una línea perpendicular a la superficie de la faceta en cuestión. Con la ayuda de este vector, los investigadores pueden predecir exactamente dónde se reflejará la luz.
A la izquierda el nuevo algoritmo. A la derecha, en algoritmo anterior
Los científicos determinaron cuáles puntos en las microfacetas podrían reflejar la luz y cuáles no, basándose en el ángulo formado por el rayo de luz que va a incidir en la superficie y el vector normal de la faceta. Una cámara virtual, correspondiente al punto de vista desde donde se hace el render, podría solamente tomar la luz reflejada por la faceta si pasa que ésta se encuentra en la trayectoria del rayo reflejado.
Sistemas anteriores trabajan calculando la reflexión de un rayo de luz a la vez, requiriendo una enorme cantidad de recursos de cómputo. Los científicos en este estudio agruparon las microfacetas en pequeños parches y entonces aproximaron la cantidad de luz reflejada por parche. El resultado es que es 100 veces más rápido y además, por vez primera, se ha usado en animaciones por computadora en lugar de hacerlos solamente en fotografías fijas, cosa que se hace con mucha frecuencia con los algoritmos anteriores.
El siguiente paso en esta investigación es hacer render sobre imágenes muy complejas, nada suaves, que soporten una representación en muchas resoluciones, además de hacer que corra más rápido usando menos recursos. Vamos a ver cómo avanza esto.
Los resultados se mostrarán esta semana en SIGGRAPH 2016.