stringtranslate.com

Trazado de rayos (gráficos)

Este trazado de rayos recursivo de esferas de colores reflectantes sobre una superficie blanca demuestra los efectos de la poca profundidad de campo , las fuentes de luz de "área" y la interreflexión difusa .

En gráficos por computadora en 3D , el trazado de rayos es una técnica para modelar el transporte de luz para su uso en una amplia variedad de algoritmos de renderizado para generar imágenes digitales .

En un espectro de costo computacional y fidelidad visual, las técnicas de renderizado basadas en trazado de rayos, como ray casting , trazado de rayos recursivo, trazado de rayos de distribución , mapeo de fotones y trazado de ruta , son generalmente más lentas y de mayor fidelidad que los métodos de renderizado de líneas de exploración . [1] Por lo tanto, el trazado de rayos se implementó por primera vez en aplicaciones donde se podía tolerar un tiempo relativamente largo para renderizar, como imágenes fijas CGI y efectos visuales de cine y televisión (VFX), pero era menos adecuado para aplicaciones en tiempo real como como los videojuegos , donde la velocidad es fundamental para renderizar cada fotograma . [2]

Sin embargo, desde 2019, la aceleración de hardware para el trazado de rayos en tiempo real se ha convertido en estándar en las nuevas tarjetas gráficas comerciales, y las API de gráficos han seguido su ejemplo, lo que permite a los desarrolladores utilizar el trazado de rayos híbrido y la renderización basada en rasterización en juegos y otras aplicaciones en tiempo real con un impacto menor en los tiempos de renderizado de cuadros.

El trazado de rayos es capaz de simular una variedad de efectos ópticos , [3] como reflexión , refracción , sombras suaves , dispersión , profundidad de campo , desenfoque de movimiento , cáusticas , oclusión ambiental y fenómenos de dispersión (como la aberración cromática ). También se puede utilizar para rastrear la trayectoria de las ondas sonoras de manera similar a las ondas de luz, lo que lo convierte en una opción viable para un diseño de sonido más inmersivo en videojuegos al generar ecos y reverberaciones realistas . [4] De hecho, cualquier fenómeno físico de onda o partícula con movimiento aproximadamente lineal se puede simular con trazado de rayos .

Las técnicas de renderizado basadas en trazado de rayos que implican muestrear luz sobre un dominio generan artefactos de ruido en la imagen que pueden abordarse rastreando una gran cantidad de rayos o utilizando técnicas de eliminación de ruido .

Historia

"Dibujante haciendo un dibujo en perspectiva de una mujer reclinada" de Alberto Durero, posiblemente de 1532, muestra a un hombre usando un diseño de cuadrícula para crear una imagen. Al artista del Renacimiento alemán se le atribuye la primera descripción de la técnica.
Xilografía de Durero de la invención de Jacob de Keyser. Con el dispositivo de Keyser, el punto de vista del artista quedaba fijado mediante un gancho insertado en la pared. Este estaba unido mediante una cuerda de seda a un instrumento estilo mira de pistola, con un elemento vertical puntiagudo en la parte delantera y una mirilla en la parte posterior. El artista apuntó al objeto y trazó su contorno en el cristal, manteniendo el ocular alineado con la cuerda para mantener el ángulo de visión correcto.

La idea del trazado de rayos surge ya en el siglo XVI, cuando fue descrito por Alberto Durero , a quien se le atribuye su invención. [5] Durero describió múltiples técnicas para proyectar escenas tridimensionales en un plano de imagen. Algunos de estos proyectan geometría elegida en el plano de la imagen, como se hace hoy con la rasterización . Otros determinan qué geometría es visible a lo largo de un rayo determinado, como se hace con el trazado de rayos. [6] [7]

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. [8] Appel utilizó el trazado de rayos para la visibilidad primaria (determinando la superficie más cercana a la cámara en cada punto de la imagen) trazando un rayo a través de cada punto para sombrearse en la escena para identificar la superficie visible. La superficie más cercana atravesada por el rayo era la visible. Este algoritmo de renderizado no recursivo basado en el trazado de rayos se denomina hoy " ray casting ". Luego, su algoritmo rastreó rayos secundarios hasta la fuente de luz desde cada punto sombreado para determinar si el punto estaba en sombra o no.

Más tarde, en 1971, Goldstein y Nagel de MAGI (Mathematical Applications Group, Inc.) [9] publicaron "Simulación visual 3-D", en el que se utilizaba el trazado de rayos para crear imágenes sombreadas de sólidos. En el punto de intersección rayo-superficie encontrado, calcularon la normal de la superficie y, conociendo la posición de la fuente de luz, calcularon el brillo del píxel en la pantalla. Su publicación describe una película corta (30 segundos) “realizada utilizando el hardware de visualización de la Universidad de Maryland equipado con una cámara de 16 mm. La película mostraba el helicóptero y un sencillo emplazamiento de armas a nivel del suelo. El helicóptero fue programado para realizar una serie de maniobras que incluían giros, despegues y aterrizajes, etc., hasta que finalmente fue derribado y estrellado”. Se utilizó una computadora CDC 6600 . MAGI produjo un vídeo de animación llamado MAGI/SynthaVision Sampler en 1974. [10]

Libro animado creado en 1976 en Caltech

Otro ejemplo temprano de proyección de rayos se produjo en 1976, cuando Scott Roth creó una animación de libro animado en el curso de gráficos por computadora de Bob Sproull en Caltech . Las páginas escaneadas se muestran como un vídeo a la derecha. El programa de computadora de Roth notó un punto de borde en la ubicación de un píxel si el rayo cruzaba un plano delimitado diferente al de sus vecinos. Por supuesto, un rayo podría cruzar varios planos en el espacio, pero sólo el punto de la superficie más cercano a la cámara se consideró visible. La plataforma era un DEC PDP-10 , una pantalla de tubo de almacenamiento Tektronix y una impresora que crearía una imagen de la pantalla en papel térmico enrollado. Roth amplió el marco, introdujo el término ray casting en el contexto de los gráficos por computadora y el modelado de sólidos , y en 1982 publicó su trabajo mientras estaba en GM Research Labs. [11]

Turner Whitted fue el primero en mostrar el trazado de rayos recursivo para la reflexión en espejo y para 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 el suavizado . [12] Whitted también mostró sombras con trazado de rayos. Produjo una película recursiva con trazado de rayos llamada The Compleat Angler [13] en 1979 mientras era ingeniero en Bell Labs. El algoritmo de trazado de rayos profundamente recursivo de Whitted reformuló el renderizado de ser principalmente una cuestión de determinación de la visibilidad de la superficie a una cuestión de transporte ligero. Su artículo inspiró una serie de trabajos posteriores de otros que incluyeron el trazado de rayos de distribución y, finalmente, el trazado de ruta imparcial , que proporciona el marco de ecuaciones de renderizado que ha permitido que las imágenes generadas por computadora sean fieles a la realidad.

Durante décadas, la iluminación global en las principales películas que utilizaban imágenes generadas por computadora se aproximaba con luces adicionales. El renderizado basado en trazado de rayos finalmente cambió eso al permitir el transporte de luz basado físicamente. Los primeros largometrajes renderizados íntegramente mediante trazado de ruta incluyen Monster House (2006), Cloudy with a Chance of Meatballs (2009), [14] y Monsters University (2013). [15]

Descripción general del algoritmo

El algoritmo de trazado de rayos construye una imagen extendiendo los rayos dentro de una escena y haciéndolos rebotar en las superficies y hacia fuentes de luz para aproximarse al valor de color de los píxeles.
Ilustración del algoritmo de trazado de rayos para un píxel (hasta el primer rebote)

El trazado de rayos ópticos describe un método para producir imágenes visuales construidas en entornos de gráficos por computadora en 3D , con más fotorrealismo que las técnicas de proyección de rayos o de renderizado de líneas de escaneo . Funciona trazando un camino desde 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 él.

Las escenas en el trazado de rayos las describe matemáticamente un programador o un artista visual (normalmente utilizando herramientas intermedias). Las escenas también pueden incorporar datos de imágenes y modelos capturados por medios como la fotografía digital.

Normalmente, se debe probar la intersección de cada rayo con algún subconjunto de todos los objetos de la escena. Una vez que se ha identificado el objeto más cercano, el algoritmo estimará la luz entrante en el punto de intersección, examinará las propiedades materiales del objeto y combinará esta información para calcular el color final del píxel. Ciertos algoritmos de iluminación y materiales reflectantes o translúcidos pueden requerir que se vuelvan a proyectar más rayos en la escena.

Al principio puede parecer contradictorio o "hacia atrás" enviar rayos lejos de la cámara, en lugar de dentro de ella (como lo hace en realidad la luz real), pero hacerlo es muchos órdenes de magnitud más eficiente. Dado que la inmensa mayoría de los rayos de luz de una fuente de luz determinada no llegan directamente al ojo del espectador, una simulación "directa" podría desperdiciar una enorme cantidad de cálculos en trayectorias de luz que nunca se registran.

Por lo tanto, el atajo tomado en el trazado de rayos es presuponer que un rayo determinado cruza el marco de visión. Después de un número máximo de reflexiones o de que un rayo recorra una cierta distancia sin intersección, el rayo deja de viajar y el valor del píxel se actualiza.

Calcular rayos para una ventana gráfica rectangular

En la entrada tenemos (en el cálculo utilizamos la normalización vectorial y el producto cruzado ):

La idea es encontrar la posición del centro de cada píxel de la ventana gráfica, lo que nos permite encontrar la línea que va desde el ojo a través de ese píxel y finalmente obtener el rayo descrito por punto y vector (o su normalización ). Primero necesitamos encontrar las coordenadas del píxel inferior izquierdo de la ventana gráfica y encontrar el siguiente píxel haciendo un desplazamiento en direcciones paralelas a la ventana gráfica (vectores i ) multiplicados por el tamaño del píxel. A continuación presentamos fórmulas que incluyen la distancia entre el ojo y la ventana gráfica. Sin embargo, este valor se reducirá durante la normalización de los rayos (por lo que es mejor aceptarlo y eliminarlo de los cálculos).

Cálculos previos: busquemos y normalicemos vectores y vectores que sean paralelos a la ventana gráfica (todos se muestran en la imagen de arriba)

tenga en cuenta que el centro de la ventana gráfica , a continuación calculamos los tamaños de la ventana gráfica divididos por 2, incluida la relación de aspecto inversa

y luego calculamos los vectores de desplazamiento del siguiente píxel a lo largo de direcciones paralelas a la ventana gráfica ( ), y el centro del píxel inferior izquierdo

Cálculos: nota y rayo así

Descripción detallada del algoritmo informático de trazado de rayos y su génesis.

Qué sucede en la naturaleza (simplificado)

En la naturaleza, una fuente de luz emite un rayo de luz que viaja, eventualmente, hasta una superficie que interrumpe su avance. Se puede pensar en este "rayo" como una corriente de fotones que viajan por el mismo camino. En un vacío perfecto, este rayo será una línea recta (ignorando los efectos relativistas ). Con este rayo de luz puede ocurrir cualquier combinación de cuatro cosas: absorción , reflexión , refracción y fluorescencia . Una superficie puede absorber parte del rayo de luz, provocando una pérdida de intensidad de la luz reflejada y/o refractada. También podría reflejar todo o parte del rayo de luz, en una o más direcciones. Si la superficie tiene propiedades transparentes o translúcidas , refracta una parte del haz de luz hacia sí misma en una dirección diferente mientras absorbe parte (o todo) del espectro (y posiblemente altera el color). Con menos frecuencia, una superficie puede absorber una parte de la luz y reemitir la luz de forma fluorescente en un color de longitud de onda más larga en una dirección aleatoria, aunque esto es lo suficientemente raro como para descartarlo en la mayoría de las aplicaciones de renderizado. Entre la absorción, la reflexión, la refracción y la fluorescencia, se debe tener en cuenta toda la luz entrante y nada más. Una superficie no puede, por ejemplo, reflejar el 66% de un rayo de luz entrante y refractar el 50%, ya que los dos sumarían el 116%. Desde aquí, los rayos reflejados y/o refractados pueden incidir en otras superficies, donde sus propiedades de absorción, refracción, reflexión y fluorescencia afectan nuevamente el avance de los rayos entrantes. Algunos de estos rayos viajan de tal manera que llegan a nuestros ojos, haciéndonos ver la escena y contribuyendo así a la imagen final renderizada.

Algoritmo de emisión de rayos

La idea detrás de la proyección de rayos, el predecesor del trazado de rayos recursivo, es rastrear los rayos del ojo, uno por píxel, y encontrar el objeto más cercano que bloquea el camino de ese rayo. Piense en una imagen como una puerta mosquitera, en la que cada cuadrado de la pantalla es un píxel. Este es entonces el objeto que el ojo ve a través de ese píxel. Utilizando las propiedades del material y el efecto de las luces en la escena, este algoritmo puede determinar el sombreado de este objeto. Se hace la suposición simplificadora de que si una superficie se enfrenta a una luz, la luz llegará a esa superficie y no quedará bloqueada ni en sombra. El sombreado de la superficie se calcula utilizando modelos tradicionales de sombreado de gráficos por ordenador en 3D. Una ventaja importante que ofrecía la fundición de rayos sobre los algoritmos de líneas de exploración más antiguos era su capacidad para tratar fácilmente superficies y sólidos no planos, como conos y esferas . Si una superficie matemática puede ser intersectada por un rayo, se puede representar mediante fundición de rayos. Se pueden crear objetos elaborados utilizando técnicas de modelado sólido y renderizarlos fácilmente.

Algoritmo de emisión de rayos de volumen

En el método de proyección de rayos volumétricos, se traza cada rayo de modo que se puedan muestrear el color y/o la densidad a lo largo del rayo y luego combinarlos en un color de píxel final. Esto se utiliza a menudo cuando los objetos no se pueden representar fácilmente mediante superficies explícitas (como triángulos), por ejemplo, al representar nubes o escaneos médicos en 3D.

Visualización del algoritmo de marcha de rayos SDF.

Algoritmo de marcha de rayos SDF

En la marcha de rayos SDF, o trazado de esferas, [16] cada rayo se traza en múltiples pasos para aproximar un punto de intersección entre el rayo y una superficie definida por una función de distancia con signo (SDF). El SDF se evalúa en cada iteración para poder dar pasos tan grandes como sea posible sin perder ninguna parte de la superficie. Se utiliza un umbral para cancelar iteraciones adicionales cuando se alcanza un punto que está lo suficientemente cerca de la superficie. Este método se utiliza a menudo para la representación fractal en 3D. [17]

Algoritmo de trazado de rayos recursivo

El trazado de rayos puede crear imágenes fotorrealistas.
Además del alto grado de realismo, el trazado de rayos puede simular los efectos de una cámara debido a la profundidad de campo y la forma de apertura (en este caso un hexágono ).
El número de reflejos o rebotes que puede producir un "rayo" y cómo se ve afectado cada vez que encuentra una superficie se controla mediante la configuración del software. En esta imagen, a cada rayo se le permitió reflejarse hasta 16 veces. Así, en estas esferas se pueden ver múltiples "reflejos de reflejos". (Imagen creada con Cobalt ).
El número de refracciones que puede producir un "rayo" y cómo se ve afectado cada vez que encuentra una superficie que permite la transmisión de luz se controla mediante la configuración del software. Aquí, cada rayo se configuró para refractarse o reflejarse (la "profundidad") hasta 9 veces . Se utilizaron reflejos de Fresnel y se ven cáusticos . (Imagen creada con V-Ray ).

Los algoritmos anteriores rastreaban los rayos desde el ojo hacia la escena hasta que golpeaban un objeto, pero determinaban el color del rayo sin rastrear más rayos de forma recursiva. El trazado de rayos recursivo continúa el proceso. Cuando un rayo incide sobre una superficie, se pueden emitir rayos adicionales debido a la reflexión, la refracción y la sombra.: [18]

Estos rayos recursivos añaden más realismo a las imágenes con trazado de rayos.

Ventajas sobre otros métodos de renderizado

La popularidad del renderizado basado en trazado de rayos se debe a que se basa en una simulación realista del transporte de luz , en comparación con otros métodos de renderizado, como la rasterización , que se centra más en la simulación realista de la geometría. Efectos como reflejos y sombras , que son difíciles de simular con otros algoritmos, son un resultado natural del algoritmo de trazado de rayos. La independencia computacional de cada rayo hace que el trazado de rayos sea susceptible de un nivel básico de paralelización , [20] pero la divergencia de las trayectorias de los rayos hace que una alta utilización bajo paralelismo sea bastante difícil de lograr en la práctica. [21]

Desventajas

Una seria desventaja del trazado de rayos es el rendimiento (aunque, en teoría, puede ser más rápido que el renderizado tradicional de líneas de escaneo dependiendo de la complejidad de la escena frente al número de píxeles en la pantalla). Hasta finales de la década de 2010, el trazado de rayos en tiempo real se consideraba imposible en hardware de consumo para tareas no triviales. Los algoritmos de línea de exploración y otros algoritmos utilizan la coherencia de los datos para compartir cálculos entre píxeles, mientras que el trazado de rayos normalmente inicia el proceso de nuevo, tratando cada rayo del ojo por separado. Sin embargo, esta separación ofrece otras ventajas, como la capacidad de disparar más rayos según sea necesario para realizar un suavizado espacial y mejorar la calidad de la imagen cuando sea necesario.

El trazado de rayos recursivo de estilo Whitted maneja la interreflexión y efectos ópticos como la refracción, pero generalmente no es fotorrealista . Se produce un realismo mejorado cuando la ecuación de renderizado se evalúa completamente, ya que la ecuación incluye conceptualmente todos los efectos físicos del flujo de luz. Sin embargo, esto no es factible dados los recursos informáticos necesarios y las limitaciones en la fidelidad del modelado geométrico y de materiales. El trazado de ruta es un algoritmo para evaluar la ecuación de renderizado y, por lo tanto, proporciona simulaciones de mayor fidelidad de la iluminación del mundo real.

Dirección invertida de recorrido de la escena por los rayos.

El proceso de disparar rayos desde el ojo a la fuente de luz para generar una imagen a veces se denomina trazado de rayos hacia atrás , ya que es la dirección opuesta a la que realmente viajan los fotones. Sin embargo, existe confusión con esta terminología. Los primeros trazados de rayos siempre se realizaban desde el ojo, y los primeros investigadores, como James Arvo, utilizaron el término trazado de rayos hacia atrás para referirse a disparar rayos desde las luces y recopilar los resultados. Por lo tanto, es más claro distinguir entre el trazado de rayos basado en los ojos y el basado en la luz .

Si bien la iluminación directa generalmente se muestra mejor utilizando el trazado de rayos basado en ojos, ciertos efectos indirectos pueden beneficiarse de los rayos generados por las luces. Las cáusticas son patrones brillantes causados ​​por el enfoque de la luz de una amplia región reflectante en un área estrecha de una superficie (casi) difusa. Un algoritmo que proyecte rayos directamente desde las luces sobre objetos reflectantes, rastreando sus caminos hasta el ojo, mostrará mejor este fenómeno. Esta integración de rayos basados ​​en el ojo y rayos basados ​​en la luz a menudo se expresa como trazado de trayectoria bidireccional, en el que se trazan trayectorias tanto desde el ojo como desde las luces, y las trayectorias posteriormente se unen mediante un rayo conector después de cierta longitud. [22] [23]

El mapeo de fotones es otro método que utiliza el trazado de rayos tanto basado en la luz como en el ojo; En una pasada inicial, se trazan fotones energéticos a lo largo de los rayos de la fuente de luz para calcular una estimación del flujo radiante en función del espacio tridimensional (el propio mapa de fotones del mismo nombre). En una pasada posterior, se trazan rayos desde el ojo hasta la escena para determinar las superficies visibles, y el mapa de fotones se utiliza para estimar la iluminación en los puntos de la superficie visible. [24] [25] La ventaja del mapeo de fotones versus el rastreo de ruta bidireccional es la capacidad de lograr una reutilización significativa de fotones, reduciendo el cálculo, a costa del sesgo estadístico.

Un problema adicional ocurre cuando la luz debe pasar a través de una abertura muy estrecha para iluminar la escena (considere una habitación oscura, con una puerta ligeramente entreabierta que conduce a una habitación muy iluminada), o una escena en la que la mayoría de los puntos no tienen línea de visión directa. -vista a cualquier fuente de luz (como lámparas dirigidas al techo o antorchas ). En tales casos, sólo un subconjunto muy pequeño de caminos transportará energía; El transporte ligero de Metropolis es un método que comienza con una búsqueda aleatoria del espacio de trayectorias y, cuando se encuentran trayectorias energéticas, reutiliza esta información explorando el espacio de rayos cercano. [26]

Imagen que muestra rayos generados recursivamente desde el "ojo" (y a través de un plano de la imagen) hacia una fuente de luz después de encontrar dos superficies difusas.

A la derecha hay una imagen que muestra un ejemplo simple de una trayectoria de rayos generados recursivamente desde la cámara (u ojo) hasta la fuente de luz usando el algoritmo anterior. Una superficie difusa refleja la luz en todas direcciones.

Primero, se crea un rayo en un punto de visión y se traza a través de un píxel hasta la escena, donde incide en una superficie difusa. Desde esa superficie, el algoritmo genera recursivamente un rayo de reflexión, que se traza a través de la escena, donde incide en otra superficie difusa. Finalmente, se genera otro rayo de reflexión que se recorre a través de la escena, donde incide en la fuente de luz y es absorbido. El color del píxel depende ahora de los colores de la primera y segunda superficie difusa y del color de la luz emitida desde la fuente de luz. Por ejemplo, si la fuente de luz emitiera luz blanca y las dos superficies difusas fueran azules, entonces el color resultante del píxel es azul.

Ejemplo

Como demostración de los principios involucrados en el trazado de rayos, considere cómo se encontraría la intersección entre un rayo y una esfera. Esto es simplemente la matemática detrás de la intersección línea-esfera y la posterior determinación del color del píxel que se está calculando. Por supuesto, hay mucho más en el proceso general del trazado de rayos, pero esto demuestra un ejemplo de los algoritmos utilizados.

En notación vectorial , la ecuación de una esfera con centro y radio es

Cualquier punto en un rayo que comienza desde un punto con dirección (aquí hay un vector unitario ) se puede escribir como

¿Dónde está su distancia entre y ? En nuestro problema, sabemos , ( por ejemplo, la posición de una fuente de luz) y , y necesitamos encontrar . Por lo tanto, sustituimos por :

Por simplicidad; entonces

Saber que d es un vector unitario nos permite esta pequeña simplificación:

Esta ecuación cuadrática tiene soluciones.

Los dos valores de encontrados resolviendo esta ecuación son los dos tales que son los puntos donde el rayo cruza la esfera.

Cualquier valor negativo no se encuentra en el rayo, sino en la media línea opuesta (es decir, en la que comienza en dirección opuesta).

Si la cantidad bajo la raíz cuadrada (el discriminante ) es negativa, entonces el rayo no corta la esfera.

Supongamos ahora que existe al menos una solución positiva, y sea la mínima. Además, supongamos que la esfera es el objeto más cercano en nuestra escena que cruza nuestro rayo, y que está hecha de un material reflectante. Necesitamos encontrar en qué dirección se refleja el rayo de luz. Las leyes de la reflexión establecen que el ángulo de reflexión es igual y opuesto al ángulo de incidencia entre el rayo incidente y la normal a la esfera.

La normal a la esfera es simplemente

¿ Dónde está el punto de intersección encontrado antes? La dirección de reflexión se puede encontrar mediante una reflexión de con respecto a , es decir

Por tanto, el rayo reflejado tiene ecuación

Ahora solo necesitamos calcular la intersección de este último rayo con nuestro campo de visión , para obtener el píxel que impactará nuestro rayo de luz reflejado. Por último, a este píxel se le asigna un color apropiado, teniendo en cuenta cómo el color de la fuente de luz original y el de la esfera se combinan mediante la reflexión.

Control de profundidad adaptativo

El control de profundidad adaptativo significa que el renderizador deja de generar rayos reflejados/transmitidos cuando la intensidad calculada es inferior a un cierto umbral. Siempre debe haber una profundidad máxima establecida o de lo contrario el programa generaría un número infinito de rayos. Pero no siempre es necesario llegar a la máxima profundidad si las superficies no son muy reflectantes. Para probar esto, el trazador de rayos debe calcular y mantener el producto de los coeficientes globales y de reflexión a medida que se trazan los rayos.

Ejemplo: sea Kr = 0,5 para un conjunto de superficies. Entonces de la primera superficie el aporte máximo es 0.5, para la reflexión de la segunda: 0.5 × 0.5 = 0.25, la tercera: 0.25 × 0.5 = 0.125, la cuarta: 0.125 × 0.5 = 0.0625, la quinta: 0.0625 × 0.5 = 0.03125 , etc. Además, podríamos implementar un factor de atenuación de distancia como 1/D2, que también disminuiría la contribución de la intensidad.

Para un rayo transmitido podríamos hacer algo similar, pero en ese caso la distancia recorrida a través del objeto provocaría una disminución de intensidad aún más rápida. Como ejemplo de esto, Hall & Greenberg descubrieron que incluso para una escena muy reflectante, usar esto con una profundidad máxima de 15 daba como resultado una profundidad promedio del árbol de rayos de 1,7. [27]

Volúmenes delimitadores

Encerrar grupos de objetos en conjuntos de volúmenes delimitadores jerárquicos disminuye la cantidad de cálculos necesarios para el trazado de rayos. Primero se prueba un rayo proyectado para detectar una intersección con el volumen delimitador y luego, si hay una intersección, el volumen se divide recursivamente hasta que el rayo incide en el objeto. El mejor tipo de volumen delimitador estará determinado por la forma del objeto u objetos subyacentes. Por ejemplo, si los objetos son largos y delgados, entonces una esfera encerrará principalmente un espacio vacío en comparación con una caja. Las cajas también son más fáciles de generar volúmenes delimitadores jerárquicos.

Tenga en cuenta que el uso de un sistema jerárquico como este (suponiendo que se haga con cuidado) cambia el tiempo de cálculo de la intersección de una dependencia lineal del número de objetos a algo entre una dependencia lineal y logarítmica. Esto se debe a que, en un caso perfecto, cada prueba de intersección dividiría las posibilidades por dos y daría como resultado una estructura de tipo árbol binario. Los métodos de subdivisión espacial, que se analizan a continuación, intentan lograr esto.

Kay y Kajiya dan una lista de propiedades deseadas para volúmenes delimitadores jerárquicos:

Trazado de rayos interactivo

La primera implementación de un trazador de rayos interactivo fue el sistema de gráficos por computadora LINKS-1 construido en 1982 en la Escuela de Ingeniería de la Universidad de Osaka , por los profesores Ohmura Kouichi, Shirakawa Isao y Kawata Toru con 50 estudiantes. [ cita necesaria ] Era un sistema informático de procesamiento masivamente paralelo con 514 microprocesadores (257 Zilog Z8001 y 257 iAPX 86 ), utilizado para gráficos por computadora tridimensionales con trazado de rayos de alta velocidad. Según la Sociedad de Procesamiento de Información de Japón : "El núcleo de la representación de imágenes tridimensionales es calcular la luminancia de cada píxel que forma una superficie renderizada desde el punto de vista, la fuente de luz y la posición del objeto dados. El sistema LINKS-1 fue desarrollado para implementar una metodología de representación de imágenes en la que cada píxel podría procesarse en paralelo de forma independiente mediante trazado de rayos. Al desarrollar una nueva metodología de software específicamente para la representación de imágenes de alta velocidad, LINKS-1 pudo representar rápidamente imágenes altamente realistas". Se utilizó para crear uno de los primeros vídeos de los cielos parecido a un planetario en 3D, realizado íntegramente con gráficos por ordenador. El vídeo se presentó en el pabellón Fujitsu en la Exposición Internacional de Tsukuba de 1985. " [28] Fue el segundo sistema en hacerlo después del Evans & Sutherland Digistar en 1982. Los diseñadores afirmaron que el LINKS-1 era el mejor sistema del mundo. computadora más poderosa en 1984. [29]

El siguiente trazador de rayos interactivo, y el primero conocido en haber sido etiquetado como "en tiempo real", fue acreditado en la conferencia de gráficos por computadora SIGGRAPH de 2005 como las herramientas REMRT/RT desarrolladas en 1986 por Mike Muuss para el sistema de modelado de sólidos BRL-CAD . Publicado inicialmente en 1987 en USENIX , el trazador de rayos BRL-CAD fue una implementación temprana de un sistema de trazado de rayos distribuido en red paralela que lograba varios cuadros por segundo en el rendimiento de renderizado. [30] Este rendimiento se logró mediante el motor de trazado de rayos LIBRT altamente optimizado pero independiente de la plataforma en BRL-CAD y mediante el uso de geometría CSG implícita sólida en varias máquinas paralelas de memoria compartida a través de una red básica. El trazador de rayos de BRL-CAD, incluidas las herramientas REMRT/RT, sigue estando disponible y desarrollado hoy como software de código abierto . [31]

Desde entonces, se han realizado esfuerzos e investigaciones considerables para implementar el trazado de rayos a velocidades en tiempo real para una variedad de propósitos en configuraciones de escritorio independientes. Estos propósitos incluyen aplicaciones de gráficos interactivos en 3D, como producciones de escenas de demostración , juegos de computadora y de video , y renderizado de imágenes. Desde finales de la década de 1990, programadores de demostraciones aficionados han desarrollado algunos motores 3-D de software en tiempo real basados ​​en el trazado de rayos . [32]

En 1999, un equipo de la Universidad de Utah , dirigido por Steven Parker, demostró el trazado de rayos interactivo en vivo en el Simposio de 1999 sobre gráficos 3D interactivos. Representaron un modelo de 35 millones de esferas con una resolución de 512 por 512 píxeles, ejecutándose a aproximadamente 15 fotogramas por segundo en 60 CPU. [33]

El proyecto Open RT incluyó un núcleo de software altamente optimizado para trazado de rayos junto con una API similar a OpenGL para ofrecer una alternativa al enfoque actual basado en rasterización para gráficos 3D interactivos. El hardware de trazado de rayos , como la Unidad de Procesamiento de Rayos experimental desarrollada por Sven Woop en la Universidad de Sarre , fue diseñado para acelerar algunas de las operaciones computacionalmente intensivas del trazado de rayos.

Guerras Terremotos Ray Trazado

La idea de que los videojuegos pudieran trazar sus gráficos en tiempo real recibió la atención de los medios a finales de la década de 2000. Durante ese tiempo, un investigador llamado Daniel Pohl, bajo la dirección del profesor de gráficos Philipp Slusallek y en cooperación con la Universidad de Erlangen y la Universidad de Saarland en Alemania, equipó Quake III y Quake IV con un motor que él mismo programó, que luego la Universidad de Saarland demostró en CeBIT 2007. [34] Intel , patrocinador de Saarland, quedó tan impresionado que contrató a Pohl y se embarcó en un programa de investigación dedicado a los gráficos con trazado de rayos, que consideró que justificaba el aumento del número de núcleos de sus procesadores. [35] : 99–100  [36] El 12 de junio de 2008, Intel demostró una versión especial de Enemy Territory: Quake Wars , titulada Quake Wars: Ray Traced , que utilizaba trazado de rayos para renderizar y se ejecutaba en resolución HD básica (720p). ETQW funcionaba a entre 14 y 29 fotogramas por segundo en un sistema Xeon Tigerton de 16 núcleos (4 zócalos, 4 núcleos) que funcionaba a 2,93 GHz. [37]

En SIGGRAPH 2009, Nvidia anunció OptiX , una API gratuita para trazado de rayos en tiempo real en GPU de Nvidia. La API expone siete puntos de entrada programables dentro del proceso de trazado de rayos, lo que permite cámaras personalizadas, intersecciones con primitivos de rayos, sombreadores, sombras, etc. Esta flexibilidad permite el trazado de rutas bidireccional, el transporte de luz Metropolis y muchos otros algoritmos de renderizado que no se pueden implementar con recursión de cola. [38] Los renderizadores basados ​​en OptiX se utilizan en Autodesk Arnold, Adobe AfterEffects , Bunkspeed Shot, Autodesk Maya , 3ds max y muchos otros renderizadores.

En 2014, una demostración del videojuego de PlayStation 4 The Tomorrow Children , desarrollado por Q-Games y Japan Studio , demostró nuevas técnicas de iluminación desarrolladas por Q-Games, en particular el trazado de rayos de cono de vóxel en cascada , que simula la iluminación en tiempo real y utiliza Reflejos más realistas en lugar de reflejos del espacio de la pantalla . [39]

Nvidia presentó sus GPU GeForce RTX y Quadro RTX en septiembre de 2018, basadas en la arquitectura Turing que permite el trazado de rayos acelerado por hardware. El hardware de Nvidia utiliza un bloque funcional independiente, denominado públicamente "núcleo RT". Esta unidad es algo comparable a una unidad de textura en tamaño, latencia e interfaz con el núcleo del procesador. La unidad presenta recorrido BVH , descompresión de nodos BVH comprimidos, pruebas de intersección de rayos-AABB y pruebas de intersección de triángulos de rayos. [40] La GeForce RTX, en forma de modelos 2080 y 2080 Ti, se convirtió en la primera marca de tarjeta gráfica orientada al consumidor que puede realizar trazado de rayos en tiempo real [41] y, en noviembre de 2018, Battlefield V de Electronic Arts. se convirtió en el primer juego en aprovechar sus capacidades de trazado de rayos, lo que logra a través de la nueva API de Microsoft, DirectX Raytracing . [42] AMD, que ya ofrecía trazado de rayos interactivo además de OpenCL a través de su Radeon ProRender , [43] [44] presentó en octubre de 2020 la serie Radeon RX 6000 , sus GPU Navi de segunda generación con soporte para trazado de rayos acelerado por hardware en un evento en línea. [45] [46] [47] [48] [49] Desde entonces aparecieron juegos posteriores que renderizan sus gráficos por tales medios, lo que se ha atribuido a las mejoras en el hardware y los esfuerzos para hacer que más API y motores de juegos sean compatibles con la tecnología. [50] Las consolas de juegos domésticas actuales implementan componentes de hardware de trazado de rayos dedicados en sus GPU para efectos de trazado de rayos en tiempo real, que comenzaron con las consolas de novena generación PlayStation 5 , Xbox Series X y Series S. [51] [52] [53] [54] [55]

El 4 de noviembre de 2021, Imagination Technologies anunció su GPU IMG CXT con trazado de rayos acelerado por hardware. [56] [57] El 18 de enero de 2022, Samsung anunció su SoC Exynos 2200 AP con trazado de rayos acelerado por hardware. [58] El 28 de junio de 2022, Arm anunció su Immortalis-G715 con trazado de rayos acelerado por hardware. [59] El 16 de noviembre de 2022, Qualcomm anunció su Snapdragon 8 Gen 2 con trazado de rayos acelerado por hardware. [60] [61] El 12 de septiembre de 2023, Apple anunció su Apple A17 con trazado de rayos acelerado por hardware. [62]

Complejidad computacional

Se han demostrado varios resultados de complejidad para determinadas formulaciones del problema del trazado de rayos. En particular, si la versión de decisión del problema de trazado de rayos se define de la siguiente manera [63] (dada la posición y dirección inicial de un rayo de luz y algún punto fijo, el rayo eventualmente llega a ese punto), entonces el artículo al que se hace referencia demuestra los siguientes resultados:

Ver también

Referencias

  1. ^ Shirley, Peter (9 de julio de 2003). Trazado de rayos realista . AK Peters/Prensa CRC; 2da edición. ISBN 978-1568814612.
  2. ^ "Función patrocinada: Cambiando las reglas del juego: trazado de rayos experimental basado en la nube". www.gamasutra.com . Consultado el 18 de marzo de 2021 .
  3. ^ "Disney explica por qué su animación 2D parece tan realista". Engadget . Consultado el 18 de marzo de 2021 .
  4. ^ "Los próximos grandes pasos en el diseño de sonido de juegos". www.gamasutra.com . 28 de enero de 2010 . Consultado el 18 de marzo de 2021 .
  5. ^ Georg Rainer Hofmann (1990). "¿Quién inventó el trazado de rayos?". La computadora visual . 6 (3): 120–124. doi :10.1007/BF01911003. S2CID  26348610..
  6. ^ Steve Luecking (2013). "Durero, dibujo y pensamiento digital - Conferencia FATE 2013". brian-curtis.com . Consultado el 13 de agosto de 2020 .
  7. ^ Steve Luecking. "Stephen J. Luecking" . Consultado el 13 de agosto de 2020 .
  8. ^ Appel, Arthur (30 de abril de 1968). "Algunas técnicas para sombrear representaciones mecánicas de sólidos". Actas de la conferencia informática conjunta de primavera del 30 de abril al 2 de mayo de 1968 sobre AFIPS '68 (primavera) (PDF) . págs. 37–45. doi :10.1145/1468075.1468082. S2CID  207171023.
  9. ^ Goldstein, Robert; Nagel, Roger (enero de 1971), "Simulación visual 3-D", Simulación , 16 (1): 25–31, doi :10.1177/003754977101600104, S2CID  122824395
  10. ^ Muestra de Syntha Vision. 1974 - vía Internet Archive .
  11. ^ Roth, Scott D. (febrero de 1982), "Ray Casting for Modeling Solids", Procesamiento de imágenes y gráficos por computadora , 18 (2): 109–144, doi :10.1016/0146-664X(82)90169-1
  12. ^ Whitted T. (1979) Un modelo de iluminación mejorado para pantallas sombreadas . Actas de la sexta conferencia anual sobre gráficos por computadora y técnicas interactivas
  13. ^ El pescador completo. Laboratorios Bell. 1978 - vía Internet Archive .
  14. ^ "Comida para reír". Mundo de los gráficos por computadora .
  15. ^ Sra (28 de mayo de 2013). "Esta vida animada: Lightspeed de Pixar trae nueva luz a Monsters University". Esta vida animada . Consultado el 26 de mayo de 2020 .
  16. ^ Hart, John C. (junio de 1995), "Trazado de esferas: un método geométrico para el trazado de rayos suavizado de superficies implícitas" (PDF) , The Visual Computer
  17. ^ Hart, John C.; Sandín, Daniel J.; Kauffman, Louis H. (julio de 1989), "Fractales tridimensionales deterministas de trazado de rayos" (PDF) , Computer Graphics , 23 (3): 289–296, doi :10.1145/74334.74363
  18. ^ Tomas Nikodym (junio de 2010). "Algoritmo de trazado de rayos para aplicaciones interactivas" (PDF) . Universidad Técnica Checa, FEE . Archivado desde el original (PDF) el 3 de marzo de 2016.
  19. ^ Whitted, T. (1979). "Un modelo de iluminación mejorado para pantallas sombreadas". Actas de la sexta conferencia anual sobre gráficos por computadora y técnicas interactivas . CiteSeerX 10.1.1.156.1534 . ISBN  0-89791-004-4.
  20. ^ Chalmers, A.; Davis, T.; Reinhard, E. (2002). Representación paralela práctica . AK Peters. ISBN 1-56881-179-9.
  21. ^ Aila, Timo; Laine, Samulii (2009). "Comprensión de la eficiencia de Ray Traversal en GPU". HPG '09: Actas de la conferencia sobre gráficos de alto rendimiento 2009 . págs. 145-149. doi :10.1145/1572769.1572792. ISBN 9781605586038. S2CID  15392840.
  22. ^ Eric P. Lafortune e Yves D. Willems (diciembre de 1993). "Seguimiento de ruta bidireccional". Actas de Compugraphics '93 : 145-153.
  23. ^ Peter Dornbach (1998). «Implementación de algoritmo de trazado de rayos bidireccional» (PDF) . Consultado el 11 de junio de 2008 .
  24. ^ Iluminación global mediante mapas de fotones Archivado el 8 de agosto de 2008 en la Wayback Machine.
  25. ^ "Mapeo de fotones: Zack Waters".
  26. ^ Veach, Eric; Guibas, Leónidas J. (1997). "Transporte Ligero de Metrópolis". SIGGRAPH '97: Actas de la 24ª conferencia anual sobre gráficos por computadora y técnicas interactivas . págs. 65–76. doi :10.1145/258734.258775. ISBN 0897918967. S2CID  1832504.
  27. ^ Salón, Roy A.; Greenberg, Donald P. (noviembre de 1983). "Un banco de pruebas para la síntesis de imágenes realistas". Aplicaciones y gráficos por computadora IEEE . 3 (8): 10–20. CiteSeerX 10.1.1.131.1958 . doi :10.1109/MCG.1983.263292. S2CID  9594422. 
  28. ^ "【Universidad de Osaka】 Sistema de gráficos por computadora LINKS-1". Museo de Computación IPSJ . Sociedad de Procesamiento de Información de Japón . Consultado el 15 de noviembre de 2018 .
  29. ^ Defanti, Thomas A. (1984). Avances en informática. Volumen 23 (PDF) . Prensa académica . pag. 121.ISBN 0-12-012123-9.
  30. ^ Véanse las actas del cuarto taller de gráficos por computadora, Cambridge, MA, EE. UU., octubre de 1987. Usenix Association, 1987, págs. 86–98.
  31. ^ "Acerca de BRL-CAD" . Consultado el 18 de enero de 2019 .
  32. ^ Piero Foscari. "El reino del trazado de rayos en tiempo real". Transacciones ACM sobre gráficos . Consultado el 17 de septiembre de 2007 .
  33. ^ Parker, Steven; Martín, William (26 de abril de 1999). "Trazado de rayos interactivo". Actas del simposio de 1999 sobre gráficos interactivos en 3D . I3D '99. vol. 5. págs. 119-126. CiteSeerX 10.1.1.6.8426 . doi :10.1145/300523.300537. ISBN  1581130821. S2CID  4522715 . Consultado el 30 de octubre de 2019 .
  34. ^ Mark Ward (16 de marzo de 2007). "Los rayos iluminan gráficos realistas". Noticias de la BBC . Consultado el 17 de septiembre de 2007 .
  35. ^ Peddie, Jon (2019). Trazado de rayos: una herramienta para todos. Springer Naturaleza Suiza . ISBN 978-3-030-17490-3. Consultado el 2 de noviembre de 2022 .
  36. ^ Abi-Chahla, Fedy (22 de julio de 2009). "¿Cuándo reemplazará el trazado de rayos a la rasterización?". Hardware de Tom . Archivado desde el original el 3 de noviembre de 2022 . Consultado el 4 de noviembre de 2022 .
  37. ^ Valich, Theo (12 de junio de 2008). "Intel convierte ET: Quake Wars en trazado de rayos". TG diario. Archivado desde el original el 2 de octubre de 2008 . Consultado el 16 de junio de 2008 .
  38. ^ Nvidia (18 de octubre de 2009). "Nvidia OptiX". NVIDIA . Consultado el 6 de noviembre de 2009 .
  39. ^ Cuthbert, Dylan (24 de octubre de 2015). "Creando las imágenes hermosas e innovadoras de The Tomorrow Children en PS4". Blog de PlayStation . Consultado el 7 de diciembre de 2015 .
  40. ^ Kilgariff, Emmett; Moreton, Enrique; Stam, Nick; Bell, Brandon (14 de septiembre de 2018). "Arquitectura NVIDIA Turing en profundidad". Desarrollador Nvidia . Archivado desde el original el 13 de noviembre de 2022 . Consultado el 13 de noviembre de 2022 .
  41. ^ Takahashi, decano (20 de agosto de 2018). "Nvidia presenta chips gráficos GeForce RTX para juegos de trazado de rayos en tiempo real". VentureBeat . Archivado desde el original el 13 de noviembre de 2022 . Consultado el 13 de noviembre de 2022 .
  42. ^ Chacos, Brad (14 de noviembre de 2018). "¡RTX activado! Battlefield V se convierte en el primer juego que admite el trazado de rayos en tiempo real DXR". Mundo PC . Archivado desde el original el 13 de noviembre de 2022 . Consultado el 13 de noviembre de 2018 .
  43. ^ "Rastreo de rayos en tiempo real con Radeon ProRender". GPUAbierto . 20 de marzo de 2018. Archivado desde el original el 13 de noviembre de 2022 . Consultado el 13 de noviembre de 2022 .
  44. ^ Harada, Takahiro (23 de noviembre de 2020). "Rastreo de rayos acelerado por hardware en AMD Radeon ™ ProRender 2.0". GPUAbierto . Archivado desde el original el 13 de noviembre de 2022 . Consultado el 13 de noviembre de 2022 .
  45. ^ Garreffa, Anthony (9 de septiembre de 2020). "AMD presentará las tarjetas gráficas Big Navi RDNA 2 de próxima generación el 28 de octubre". TweakTown . Consultado el 9 de septiembre de 2020 .
  46. ^ Lyles, Taylor (9 de septiembre de 2020). "Las CPU Zen 3 de próxima generación de AMD y la GPU Radeon RX 6000 'Big Navi' se revelarán el próximo mes". El borde . Consultado el 10 de septiembre de 2020 .
  47. ^ "AMD se burla de los números de rendimiento de la tarjeta Radeon RX 6000: ¿apunta a 3080?". anandtech.com . AnandTech . 8 de octubre de 2020 . Consultado el 25 de octubre de 2020 .
  48. ^ "AMD anuncia las presentaciones de Ryzen" Zen 3 "y Radeon" RDNA2 "para octubre: comienza un nuevo viaje". anandtech.com . AnandTech . 9 de septiembre de 2020 . Consultado el 25 de octubre de 2020 .
  49. ^ Judd, Will (28 de octubre de 2020). "AMD presenta tres tarjetas gráficas Radeon 6000 con trazado de rayos y rendimiento superior a RTX". Eurogamer . Consultado el 28 de octubre de 2020 .
  50. ^ Marrs, Adán; Shirley, Pedro ; Wald, Ingo (2021). "Ray Tracing Gems II: renderizado en tiempo real de próxima generación con DXR, Vulkan y OptiX" . Presione . págs. 213–214, 791–792. hdl : 20.500.12657/50334. ISBN 9781484271858.
  51. ^ Warren, Tom (8 de junio de 2019). "Microsoft insinúa la Xbox 'Scarlet' de próxima generación en los avances del E3". El borde . Consultado el 8 de octubre de 2019 .
  52. ^ Chaim, Gartenberg (8 de octubre de 2019). "Sony confirma el nombre de PlayStation 5 y la fecha de lanzamiento para las fiestas navideñas de 2020". El borde . Consultado el 8 de octubre de 2019 .
  53. ^ Warren, Tom (24 de febrero de 2020). "Microsoft revela más especificaciones de Xbox Series X y confirma GPU de 12 teraflops". El borde . Consultado el 25 de febrero de 2020 .
  54. ^ Warren, Tom (9 de septiembre de 2020). "Microsoft revela las especificaciones de Xbox Series S y promete cuatro veces la potencia de procesamiento de Xbox One". El borde . Consultado el 9 de septiembre de 2020 .
  55. ^ Vandervell, Andy (4 de enero de 2020). "Dar sentido a la rampante fábrica de rumores sobre Xbox Series X". Cableado . Archivado desde el original el 13 de noviembre de 2022 . Consultado el 13 de noviembre de 2022 .
  56. 93digital (4 de noviembre de 2021). "Imagination lanza la GPU de trazado de rayos más avanzada". Imaginación . Consultado el 17 de septiembre de 2023 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  57. ^ "Trazado de rayos". Imaginación . Consultado el 17 de septiembre de 2023 .
  58. ^ "Samsung presenta el revolucionario procesador Exynos 2200 con GPU Xclipse con tecnología de arquitectura AMD RDNA 2". noticias.samsung.com . Consultado el 17 de septiembre de 2023 .
  59. ^ "Rendimiento de juegos desatado con las nuevas GPU de Arm - Anuncios - Blogs de Arm Community - Arm Community". comunidad.arm.com . 28 de junio de 2022 . Consultado el 17 de septiembre de 2023 .
  60. ^ "Snapdragon 8 Gen 2 define un nuevo estándar para teléfonos inteligentes premium". www.qualcomm.com . Consultado el 17 de septiembre de 2023 .
  61. ^ "Nuevo Snapdragon 8 Gen 2: 8 experiencias móviles extraordinarias, presentadas". www.qualcomm.com . Consultado el 17 de septiembre de 2023 .
  62. ^ Bonshor, Ryan Smith, Gavin. "Blog en vivo del evento de iPhone de otoño de Apple 2023 (comienza a las 10 a. m. PT/17:00 UTC)". www.anandtech.com . Consultado el 17 de septiembre de 2023 .{{cite web}}: CS1 maint: multiple names: authors list (link)
  63. ^ "Computabilidad y complejidad del trazado de rayos" (PDF) . CS.Duke.edu .

enlaces externos