¿Cuál es la diferencia entre el trazado de rayos y la rasterización?

by anasillas

19 de marzo de 2018 por Brian Caulfield

Ya hemos visto esta película. Literalmente.

No hay muchas personas fuera de la industria de los gráficos por computación que sepan lo que es el trazado de rayos, pero tampoco hay muchas personas en el mundo que no lo hayan visto.

Tan solo acércate al cine más cercano, compra una entrada y unas palomitas.

El trazado de rayos es la técnica moderna que usan las películas para generar o mejorar los efectos especiales. Piensa en las sombras, refracciones y reflejos realistas. Cuando se logran los efectos correctos, las naves espaciales en las películas de ciencia ficción dan miedo. Hace que los automóviles sean furiosos. Hace que el fuego, el humo y las explosiones de la guerra sean realistas.

El trazado de rayos produce imágenes que pueden combinarse con las que captura la cámara. Las películas de acción combinan a la perfección los efectos generados por computación con las imágenes capturadas en el mundo real. Las películas animadas usan las luces y las sombras en escenas generadas digitalmente de la misma forma que cualquier toma capturada en la realidad.

La forma más fácil de reconocer el trazado de rayos es mirar a tu alrededor. Los objetos que estás viendo están iluminados por rayos de luz. Ahora da la vuelta y sigue el camino de esos rayos hacia atrás desde tu ojo hacia los objetos con los que la luz interactúa. Eso es el trazado de rayos.

Si has ido ver una película recientemente, has visto el trazado de rayos en acción.

Sin embargo, históricamente, el hardware de computación no era lo suficientemente rápido para usar estas técnicas en tiempo real, como en los video juegos. Los cineastas pueden usar todo el tiempo que necesiten para renderizan un solo cuadro, así que pueden hacer en granjas de renderización. Los videojuegos tienen tan solo una fracción de segundo. Como resultado, la mayoría de los gráficos en tiempo real utilizan otra técnica, la rasterización.

¿Qué es la rasterización?

Los gráficos de computación en tiempo real utilizan desde hace tiempo una técnica llamada “rasterización” para mostrar objetos tridimensionales en una pantalla de dos dimensiones. Es rápida y los resultados son muy buenos, aunque no llegan a ser tan buenos como los del trazado de rayos.

Con la rasterización, los objetos en la pantalla se crean a partir de una red de triángulos, o polígonos, virtuales que crear modelos 3D de los objetos. En esta red virtual, las esquinas de cada triángulo, conocidos como vértices, se intersectan con los vértices de otros triángulos de diferentes tamaños y formas. Cada vértice cuenta con mucha información asociada, lo que incluye su posición en el espacio, al igual que información sobre colores, texturas y su “estado normal”, que se usa para determinar la superficie del objeto que enfrenta.

Luego, las computadoras convierten los triángulos de los modelos 3D en píxeles, o puntos, en una pantalla 2D. Cada pixel se puede asignar a un valor de color inicial en los datos almacenados en los vértices de los triángulos.

El procesamiento posterior de los píxeles, o “sombreado”, lo que incluye el cambio de color del pixel según cómo recibe las luces de la escena, y la aplicación de una o más texturas al pixel, se combinan para generar el color final que se aplica.

Esto requiere muchos recursos de computación. Se pueden usar millones de polígonos para todos los modelos de objetos en una escena y una pantalla 4K tiene casi 8 millones de píxeles. Cada cuadro o imagen que se muestra en una escena se actualiza entre 30 y 90 veces en cada segundo en la pantalla.

Además, se usan búfers de memoria, un espacio temporal que se reserva para acelerar los procesos, para renderizar cuadros de forma anticipada, antes de que se muestren en la pantalla. También se usa un “z-búfer” o de profundidad para almacenar información sobre la profundidad de los píxeles, a fin de garantizar que los objetos en primer plano en la ubicación del pixel en una una pantalla x-y se muestren en pantalla y los objetos en segundo plano permanezcan ocultos.

Esta es la razón por la que los juegos modernos y con muchos gráficos utilizan GPU potentes.

¿Qués es el trazado de rayos?

El trazado de rayos es diferente. En el mundo real, los objetos 3D que vemos están iluminados por fuentes de luz, y los fotones pueden rebotar de un objeto a otro antes de llegar a los ojos del espectador.

Algunos objetos pueden bloquear la luz y crean sombras. Además, la luz puede reflejarse de un objeto a otro, como cuando vemos las imágenes de un objeto reflejado en la superficie de otro. Y luego hay refracciones, cuando la luz cambia a medida que pasa a través de objetos transparentes o semitransparentes, como vidrio o agua.

El trazado de rayos captura estos efectos, al recorrer el camino inverso, desde tu ojo (o cámara), una técnica que se describió por primera vez en 1969, en el el trabajo de Arthur Appel de IBM, “Algunas técnicas para la renderización por máquina del sombreado de sólidos.” Traza el camino de un rayo de luz a través de cada pixel en una superficie de visualización 2D en un modelo 3D de la escena.

El siguiente avance revolucionario llegó una década después. En un documento de 1979, “Un modelo de iluminación mejorado para la visualización con sombras”, de Turner Whitted, ahora con NVIDIA Research, demostró cómo capturar los reflejos, las sombras y las refracciones.

El documento de Turner Whitted de 1979 dio comienzo a un renacimiento del trazado de rayos que cambió la forma de hacer películas.

Con la técnica de Whitted, cuando un rayo se encuentra con un objeto en la escena, la información del color y de luz en el punto de impacto en la superficie del objeto contribuye al color del pixel y el nivel de iluminación. Si el rayo rebota o viaja a través de la superficie de diferentes objetos antes de llegar a la fuente de luz, la información sobre el color y la iluminación de todos estos objetos puede contribuir al color del pixel final.

Otros documentos en la década de 1980, aportaron la base intelectual para la revolución de los gráficos por computación que modificó la forma de hacer películas.

En 1984, Robert Cook, Thomas Porter y Loren Carpenter de Lucasfilm detallaron la forma en que el trazado de rayos se podía incorporar a diferentes técnicas de filmación comunes, como el desenfoque de movimiento, la profundidad de campo, las penumbras, la traslucencia y las reflexiones borrosas, que, hasta ese momento, solo se podían crear con las cámaras.

Dos años después, el profesor Jim Kajiya de CalTech presentó el documento “La ecuación de renderización”, en el que analizaba la forma en que los gráficos de computación se generaban para representar de una mejor manera cómo se esparce la luz en una escena.

La combinación de esta investigación con las GPU modernas da como resultado imágenes generadas por computación que capturan sombras, reflexiones y refracciones de forma tal que no puedan distinguirse de fotografías o videos del mundo real. Este realismo es la razón por la que el trazado de rayos ha conquistado el cine moderno.

Esta imagen generada por computadora, creada por Enrico Cerica con OctaneRender, muestra la distorsión en el vidrio con trazado de rayos en los accesorios de iluminación, la iluminación difusa en la ventana y en vidrio templado en la lámpara sobre el reflejo del piso en la imagen del cuadro.

A medida que la potencia de las las GPU sigue creciendo, el próximo paso es aumentar la disponibilidad del trazado de rayos. Por ejemplo, con las herramientas de trazado de rayos como Arnold de Autodesk, V-Ray de Chaos Group o Renderman de Pixar, y una GPU potente, los diseñadores de productos y los arquitectos usan el trazado de rayos para generar bocetos fotorrealistas de sus productos en segundos, lo que les permite mejorar la colaboración y omitir la costosa generación de prototipos.

El trazado de rayos demostró ser una herramienta muy útil para los arquitectos y diseñadores de luces, ya que usan sus capacidades para modelar la forma en que la luz interactúa con sus diseños.

A medida que aumenta la potencia de computación de las GPU, los videojuegos marcan la próxima frontera de esta tecnología. El lunes, NVIDIA presentó NVIDIA RTX, una tecnología de trazado de rayos que ofrece la renderización en tiempo real y de calidad cinematográfica para los desarrolladores de juegos. Es el producto de 10 años de trabajo en arquitecturas de GPU y algoritmos de gráficos por computación.

Consiste en en un motor de trazado de rayos que se ejecuta en GPU con la arquitectura NVIDIA Volta. Se diseñó para usar el trazado de rayos en diferentes interfaces. NVIDIA se asoció con Microsoft para que RTX sea completamente compatible mediante la nueva API DirectX Raytracing (DXR) de Microsoft.

Para que los desarrolladores de juegos aprovechen estas nuevas capacidades, NVIDIA también anunció que el NVIDIA GameWorks SDK sumará un módulo de eliminación de ruido en el trazado de rayos. El GameWorks SDK actualizado se lanzará próximamente e incluirá reflexiones brillantes y áreas de sombras con trazado de rayos.

Todo esto les brindará a los desarrolladores de juegos la capacidad de usar las técnicas de trazado de rayos en su trabajo para crear refracciones, sombras y reflexiones más realistas. Como resultado, los juegos que disfrutas en tu casa tendrán más características cinematográficas, propias de un éxito de Hollywood.

La desventaja: Tendrás que preparar tus propias palomitas.

Consulta “Renderización basada físicamente: De la teoría a la implementación”, de Matt Phar, Wenzel Jakob y Greg Humphreys. Ofrece teorías matemáticas y técnicas prácticas para poner en práctica la renderización fotorrealista moderna en el trabajo.

¿Quieres saber qué significa esto para los gamers? Consulta “Tecnología NVIDIA RTX: Ahora, el trazado de rayos en tiempo real llegó a los juegos”, en GeForce.com.