1. Ray Tracing

Ray Tracing #

El trazado de rayos (en inglés ray tracing) es un algoritmo para síntesis de imágenes que calcula el camino de la luz como píxeles en un plano de la imagen y simula sus efectos sobre las superficies virtuales en las que incida. Esta técnica es capaz de producir imágenes con un alto grado de realismo, de una forma mayor que el renderizado mediante líneas de exploración tradicional, aunque el coste computacional del trazado de rayos es mucho mayor.

Historia #

La idea del trazado de rayos se remonta al Siglo XVI cuando fue descrito por Albrecht Dürer, a quien se le atribuye su invención, en el libro Four Books on Measurement, describió una máquina llamada puerta de Dürer que usa un hilo sujeto al extremo de un lapiz que un asistente mueve a lo largo de los contornos del objeto para dibujar.

El uso de una computadora para el trazado de rayos para generar imágenes sombreadas fue realizado por primera vez por Arthur Appel en 1968 utlizando el trazado de rayos para la visibilidad primaria determinando la superficie más cercana a la cámara en cada punto de la imagen y trazó rayos secundarios a la luz fuente de cada punto sombreado para determinar si el punto estaba en la sombra o no.

Luego en 1971 Goldstein y Nagel publicaron “3-D Visual Simulation” en la que el trazado de rayos se usa para hacer imágenes sombreadas de sólidos simulando el proceso fotográfico al revés.

Turner Whitted fue el primero en mostrar el trazado de rayos recursivo para la reflexión en espejo y la refracción a través de objetos translúcidos, con un ángulo determinado por el índice de refracción del sólido, y en utilizar el trazado de rayos para suavizar.

Durante décadas la iluminación global en las principales peliculas que utilizan imágenes generadas por comuptadora se falsificó con luces adicionales. El renderizado basado en trazado de rayos cambió eso al permitir el transporte de luz basado en la física. Los primeros largometrajes interpretados en su totalidad utilizando el trazado de rutas incluyen Monster House (2006), Cloudy With a Chance of Meatballs(2009) y Monsters University (2013). [1]

Ray Tracing en los videojuegos #

Durante mucho tiempo se ha utilizado la rasterización para generar la imagen en la pantalla, la forma en que funciona la rasterización es que se hace el cálculo de la distancia de ciertos objetos, se puntualiza el lugar de dónde viene la luz y se determina qué objetos están delante de otros. A partir de esta información se determina el color que debe tener cada pixel en el monitor, dibujando la escena punto por punto como una imagen 2D.

Con el tiempo los desarrolladores han mejorado esta tecnología permitiendo a los objetos la capacidad de proyectar sombras básicas basadas en fuentes de luz y utilizando métodos como la oclusión ambiental para agregar sombras adicionales independientes de las fuentes de luz.

Sin embargo, la mayoría de los juegos no simulan realmente la forma en que se comporta la luz en el mundo real, sino que falsifican su comportamiento con algunas técnicas lo que dificulta generar reflejos y sombras realistas. Lo podemos ver en los espejos de los videojuegos que no reflejan apropiadamente las imágenes, por lo general son muy toscas.

El trazado de rayos es una técnica de renderizado que pretende simular la forma en que la luz rebota en los objetos, creando sombras reflejos y efectos de iluminación mas realistas.

Una fuente de luz como la lámpara de una habitación produce fotones que rebotan alrededor de la habitación hasta que alcanzan el ojo, el trazado de rayos realiza este proceso de forma inversa, rastrea los rayos individuales de la cámara de la escena y rastrea cómo cada rayo se cruza con diferentes objetos, proyecta sombras y reflexiones, y hace su camino de vuelta a la fuente de luz.

Esto pretende asegurar que la computadora no desperdicie poder de procesamiento en objetos que la cámara no ve, mientras que aún procede efectos de iluminación mucho más realistas. [2]

El trazado de rayos ha sido la gran apuesta que han realizado los grandes del sector de los videojuegos, NVIDIA y AMD desde el año 2018 y ha recibido un creciente apoyo por parte de los desarrolladores, lo cual ha permitido adoptar esta técnica en diferentes consolas de última generación como PS5, Xbox Series y X-Series S.

Algoritmo #

En el algoritmo de emisión de rayos lo que se pretende es determinar las superficies visibles que se encuentren dentro de la escena que se quiere sintetizar, trazando rayos desde el observador hasta la escena a través del plano de la imagen.

En su funcionamiento, se calculan las intersecciones del rayo con los diferentes objetos de la escena y la que esté más cerca al observador, determina cual es el objeto visible.

En el siguiente ejemplo, vemos tres esferas, reflejándose en el suelo y unas en otras.

Para simular los efectos de reflexión y refracción se trazan rayos recursivamente desde el punto de intersección que se está sombreando dependiendo de las características del material del objeto intersecado.

Para simular las sombras arrojadas se emiten rayos desde el punto de intersección hasta las fuentes de luz. Estos rayos se conocen con el nombre de rayos de sombra.

Realizando nuestro trabajo de investigación encontramos un blog en el que se indaga de una forma más amplia en el tema en cuestión, donde también encontramos varias preguntas de usuarios aleatorios sobre el funcionamiento e implementacion del algoritmo

En este link, podemos encontrar una implementacion del algoritmo: “https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing"

#

El trazado de rayos describe un método de imágenes visuales construidas en ambientes de gráficos en 3D, con mayor fotorrealismo que la emisión de rayos o el renderizado mediante línea de escaneo. Este funciona trazando la línea visual de un ojo imaginario a través de cada píxel en una pantalla virtual, y calculando el color del objeto visible a través de ella.

Es un algoritmo todavía en desarrollo debido a su abundante gasto de recursos, se espera que se optimice y se perfeccione en los próximos años.

Bibliografía #