stringtranslate.com

Trazado de rayos (gráficos)

Este trazado recursivo de rayos 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 . ( c.  2008 )

En gráficos de 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 el ray casting , el trazado de rayos recursivo, el trazado de rayos de distribución , el mapeo de fotones y el trazado de trayectorias , 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 en las que se podía tolerar un tiempo relativamente largo para renderizar, como imágenes CGI fijas y efectos visuales (VFX) de cine y televisión , pero era menos adecuado para aplicaciones en tiempo real 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, permitiendo a los desarrolladores utilizar trazado de rayos híbrido y renderizado basado en rasterización en juegos y otras aplicaciones en tiempo real con un menor impacto 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áusticos , 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 de sonido 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 los videojuegos al generar reverberaciones y ecos realistas . [4] De hecho, cualquier fenómeno de onda o partícula física con un movimiento aproximadamente lineal se puede simular con el trazado de rayos .

Las técnicas de renderizado basadas en trazado de rayos que implican el muestreo de luz sobre un dominio generan artefactos de ruido en la imagen que pueden solucionarse 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 que utiliza una cuadrícula para crear una imagen. Se le atribuye al artista renacentista alemán la primera descripción de la técnica.
Grabado en madera de Durero que representa la invención de Jacob de Keyser. Con este dispositivo, el punto de vista del artista se fijaba mediante un gancho insertado en la pared. Este se conectaba mediante una cuerda de seda a un instrumento similar a una mira de pistola, con un elemento vertical puntiagudo en la parte delantera y una mirilla en la parte trasera. El artista apuntaba al objeto y trazaba su contorno sobre el cristal, manteniendo el ocular alineado con la cuerda para mantener el ángulo de visión correcto.

La idea del trazado de rayos se remonta al 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 en 3D sobre un plano de imagen. Algunas de ellas proyectan la geometría elegida sobre el plano de la imagen, como se hace con la rasterización en la actualidad. Otras 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 un ordenador para el trazado de rayos con el fin de 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 (determinar la superficie más cercana a la cámara en cada punto de la imagen) trazando un rayo a través de cada punto que se iba a sombrear en la escena para identificar la superficie visible. La superficie más cercana intersecada por el rayo era la visible. Este algoritmo de renderizado no recursivo basado en el trazado de rayos se denomina hoy " ray casting ". Su algoritmo luego trazó rayos secundarios hasta la fuente de luz desde cada punto que se estaba sombreando 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 "3-D Visual Simulation", en la que se utilizó el trazado de rayos para crear imágenes sombreadas de sólidos. En el punto de intersección de los rayos con la 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 emplazamiento de cañón simple a nivel del suelo. El helicóptero estaba programado para realizar una serie de maniobras que incluían giros, despegues y aterrizajes, etc., hasta que finalmente es derribado y se estrella". Se utilizó una computadora CDC 6600. MAGI produjo un video 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 flip book en el curso de gráficos por ordenador de Bob Sproull en Caltech . Las páginas escaneadas se muestran como un vídeo a la derecha. El programa informático de Roth anotaba un punto de borde en una ubicación de píxel si el rayo intersectaba un plano delimitado diferente al de sus vecinos. Por supuesto, un rayo podía intersectar varios planos en el espacio, pero solo se anotaba como visible el punto de la superficie más cercano a la cámara. 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 enrollable. Roth amplió el marco, introdujo el término proyección de rayos en el contexto de los gráficos por ordenador 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 usar el trazado de rayos para el anti-aliasing . [12] Whitted también mostró sombras trazadas por rayos. Produjo una película recursiva trazada por 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ó la representación de ser principalmente una cuestión de determinación de la visibilidad de la superficie a ser una cuestión de transporte de luz. 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 trayectoria imparcial , que proporciona el marco de ecuación de representación 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 ordenador se aproximaba con luces adicionales. La renderización basada en el trazado de rayos acabó cambiando eso al permitir el transporte de luz basado en la física. Entre las primeras películas renderizadas completamente con trazado de trayectorias se 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 crea una imagen extendiendo rayos en una escena y haciéndolos rebotar en 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 informáticos en 3D , con más fotorrealismo que las técnicas de proyección de rayos o de renderización por líneas de escaneo . Funciona trazando una trayectoria desde un ojo imaginario a través de cada píxel de una pantalla virtual y calculando el color del objeto visible a través de él.

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

Por lo general, cada rayo debe probarse para ver si se cruza 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.

Puede parecer contra-intuitivo o "hacia atrás" enviar rayos fuera de la cámara en lugar de hacia dentro (como lo hace la luz real en la realidad), pero hacerlo es mucho más eficiente. Dado que la gran mayoría de los rayos de luz de una fuente de luz dada no llegan directamente al ojo del espectador, una simulación "hacia adelante" podría desperdiciar una enorme cantidad de cálculos en trayectorias de luz que nunca se registran.

Por lo tanto, el atajo que se toma en el trazado de rayos es presuponer que un rayo determinado intersecta 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 normalización vectorial y producto vectorial ):

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 el punto y el vector (o su normalización ). Primero, debemos encontrar las coordenadas del píxel inferior izquierdo de la ventana gráfica y encontrar el siguiente píxel haciendo un desplazamiento a lo largo de direcciones paralelas a la ventana gráfica (vectores i ) multiplicado 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 del rayo (por lo que también puede aceptarlo y eliminarlo de los cálculos).

Cálculos previos: busquemos y normalicemos el vector y los vectores que son paralelos a la ventana gráfica (todos representados 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 al centro del píxel inferior izquierdo

Cálculos: nota y raya 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, a una superficie que interrumpe su progreso. Uno puede pensar en este "rayo" como una corriente de fotones que viajan a lo largo del mismo camino. En un vacío perfecto, este rayo será una línea recta (ignorando los efectos relativistas ). Cualquier combinación de cuatro cosas podría suceder con este rayo de luz: absorción , reflexión , refracción y fluorescencia . Una superficie puede absorber parte del rayo de luz, lo que resulta en una pérdida de intensidad de la luz reflejada y/o refractada. También puede reflejar todo o parte del rayo de luz, en una o más direcciones. Si la superficie tiene alguna propiedad transparente o translúcida , refracta una parte del rayo de luz en sí misma en una dirección diferente mientras absorbe parte (o todo) del espectro (y posiblemente altere el color). Con menos frecuencia, una superficie puede absorber una parte de la luz y volver a emitir fluorescentemente la luz en un color de longitud de onda más larga en una dirección aleatoria, aunque esto es lo suficientemente raro como para descartarlo de 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 no más. Por ejemplo, una superficie no puede reflejar el 66 % de un rayo de luz entrante y refractar el 50 %, ya que la suma de ambos supondría un 116 %. A partir de aquí, los rayos reflejados y/o refractados pueden incidir en otras superficies, donde sus propiedades absorbentes, refractivas, reflectantes y fluorescentes afectan a su vez al avance de los rayos entrantes. Algunos de estos rayos viajan de tal manera que inciden en nuestro ojo, lo que nos hace ver la escena y, por lo tanto, contribuyen a la imagen final generada.

Algoritmo de proyección de rayos

La idea detrás del ray casting, el predecesor del trazado de rayos recursivo, es trazar rayos desde el 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, donde 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. Usando 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 será bloqueada o en sombra. El sombreado de la superficie se calcula utilizando modelos de sombreado de gráficos de computadora 3-D tradicionales. Una ventaja importante que ofrecía el ray casting sobre los algoritmos de línea de exploración más antiguos era su capacidad para tratar fácilmente con superficies y sólidos no planos, como conos y esferas . Si una superficie matemática puede ser intersecada por un rayo, se puede renderizar utilizando el ray casting. Se pueden crear objetos elaborados utilizando técnicas de modelado de sólidos y renderizarlos fácilmente.

Algoritmo de proyección de rayos de volumen

En el método de proyección de rayos de volumen, se traza cada rayo de modo que se pueda tomar una muestra del color o la densidad a lo largo del rayo y luego combinarlos para obtener un color de píxel final. Esto se suele utilizar cuando los objetos no se pueden representar fácilmente mediante superficies explícitas (como triángulos), por ejemplo, al renderizar nubes o exploraciones médicas en 3D.

Visualización del algoritmo de marcha de rayos SDF

Algoritmo de marcha de rayos SDF

En el método de marcha de rayos SDF, o trazado de esferas, [16] cada rayo se traza en varios pasos para aproximarse a un punto de intersección entre el rayo y una superficie definida por una función de distancia con signo (SDF). La SDF se evalúa para cada iteración con el fin de poder dar pasos tan grandes como sea posible sin omitir ninguna parte de la superficie. Se utiliza un umbral para cancelar la iteración posterior 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 la apertura (en este caso un hexágono ).
La cantidad de reflexiones o rebotes que puede generar un "rayo" y cómo se ve afectado cada vez que encuentra una superficie se controla mediante configuraciones del software. En esta imagen, se permitió que cada rayo se reflejara hasta 16 veces. Por lo tanto, se pueden ver múltiples "reflexiones de reflexiones" en estas esferas. (Imagen creada con Cobalt ).
La cantidad de refracciones que puede realizar un “rayo” y cómo se ve afectado cada vez que encuentra una superficie que permite la transmisión de luz se controla mediante configuraciones del software. Aquí, cada rayo se configuró para refractarse o reflejarse (la “profundidad”) hasta 9 veces . Se utilizaron reflexiones de Fresnel y las cáusticas son visibles. (Imagen creada con V-Ray ).

Los algoritmos anteriores trazaban rayos desde el ojo hasta la escena hasta que impactaban en un objeto, pero determinaban el color del rayo sin trazar recursivamente más rayos. El trazado recursivo de rayos continúa el proceso. Cuando un rayo impacta en una superficie, pueden proyectarse 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 trazadas por rayos.

Ventajas sobre otros métodos de renderizado

La popularidad de la renderización basada 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 renderización, como la rasterización , que se centra más en la simulación realista de la geometría. Efectos como los reflejos y las sombras , que son difíciles de simular utilizando 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 a un nivel básico de paralelización , [20] pero la divergencia de las trayectorias de los rayos hace que sea bastante difícil lograr una alta utilización bajo paralelismo en la práctica. [21]

Desventajas

Una desventaja importante 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 en comparación con la cantidad de píxeles en pantalla). Hasta fines de la década de 2010, el trazado de rayos en tiempo real generalmente se consideraba imposible en el hardware de consumo para tareas no triviales. Los algoritmos de líneas de escaneo y otros algoritmos utilizan la coherencia de datos para compartir cálculos entre píxeles, mientras que el trazado de rayos normalmente comienza 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 anti-aliasing espacial y mejorar la calidad de la imagen donde sea necesario.

El trazado de rayos recursivo de estilo Whitted maneja la interreflexión y los efectos ópticos como la refracción, pero no es generalmente fotorrealista . Se produce un realismo mejorado cuando se evalúa por completo la ecuación de renderizado , 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 trayectorias es un algoritmo para evaluar la ecuación de renderizado y, por lo tanto, brinda simulaciones de mayor fidelidad de la iluminación del mundo real.

Dirección invertida del 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 inverso , ya que es la dirección opuesta a la que viajan los fotones. Sin embargo, existe confusión con esta terminología. El trazado de rayos inicial siempre se hacía desde el ojo, y los primeros investigadores, como James Arvo, usaban el término trazado de rayos inverso para referirse a disparar rayos desde las luces y recopilar los resultados. Por lo tanto, es más claro distinguir el trazado de rayos basado en el ojo del basado en la luz .

Si bien la iluminación directa generalmente se muestrea mejor utilizando el trazado de rayos basado en el ojo, 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 desde una amplia región reflectante hacia un área estrecha de superficie (casi) difusa. Un algoritmo que proyecta rayos directamente desde las luces hacia objetos reflectantes, rastreando sus trayectorias hasta el ojo, muestreará mejor este fenómeno. Esta integración de rayos basados ​​en el ojo y en la luz a menudo se expresa como trazado de trayectoria bidireccional, en el que las trayectorias se trazan tanto desde el ojo como desde las luces, y las trayectorias se unen posteriormente mediante un rayo de conexión después de cierta longitud. [22] [23]

El mapeo de fotones es otro método que utiliza tanto el trazado de rayos basado en la luz como en el ojo; en un paso inicial, los fotones energéticos se trazan a lo largo de los rayos desde la fuente de luz para calcular una estimación del flujo radiante como una función del espacio tridimensional (el mapa de fotones homónimo en sí). En un paso posterior, los rayos se trazan desde el ojo hacia 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 frente al trazado de trayectoria bidireccional es la capacidad de lograr una reutilización significativa de fotones, lo que reduce 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 bien iluminada), o una escena en la que la mayoría de los puntos no tienen línea de visión directa a ninguna fuente de luz (como con artefactos de iluminación dirigidos al techo o antorchas ). En tales casos, solo un subconjunto muy pequeño de caminos transportará energía; el transporte de luz de Metropolis es un método que comienza con una búsqueda aleatoria del espacio de caminos y, cuando se encuentran caminos energéticos, reutiliza esta información explorando el espacio cercano de rayos. [26]

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

A la derecha se muestra una imagen que muestra un ejemplo simple de una trayectoria de rayos generada de forma recursiva desde la cámara (o el ojo) hasta la fuente de luz utilizando el algoritmo anterior. Una superficie difusa refleja la luz en todas las direcciones.

En primer lugar, se crea un rayo en un punto de observación y se traza a través de un píxel hasta llegar a la escena, donde choca con una superficie difusa. A partir de esa superficie, el algoritmo genera de forma recursiva un rayo de reflexión, que se traza a través de la escena, donde choca con otra superficie difusa. Por último, se genera otro rayo de reflexión y se traza a través de la escena, donde choca con la fuente de luz y es absorbido. El color del píxel ahora depende de los colores de la primera y la segunda superficie difusa y del color de la luz emitida por 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 que intervienen en el trazado de rayos, pensemos en cómo se puede hallar la intersección entre un rayo y una esfera. Esto es simplemente la matemática detrás de la intersección de la línea con la esfera y la posterior determinación del color del píxel que se está calculando. Por supuesto, el proceso general del trazado de rayos implica mucho más, pero este es un ejemplo de los algoritmos utilizados.

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

Cualquier punto de un rayo que comience desde el 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 que se encuentran al resolver esta ecuación son los dos tales que son los puntos donde el rayo interseca la esfera.

Cualquier valor que sea negativo no se encuentra en el rayo, sino en la semirrecta opuesta ( es decir, la que comienza con dirección opuesta).

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

Supongamos ahora que existe al menos una solución positiva, y que sea la mínima. Además, supongamos que la esfera es el objeto más cercano en nuestra escena que intersecta 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

donde es el punto de intersección encontrado anteriormente. La dirección de reflexión se puede encontrar mediante una reflexión de con respecto a , es decir

Por lo tanto el rayo reflejado tiene ecuación

Ahora sólo nos queda calcular la intersección de este último rayo con nuestro campo de visión , para obtener el píxel en el que incidirá nuestro rayo de luz reflejado. Por último, se le asigna a este píxel un color adecuado, teniendo en cuenta cómo se combinan el color de la fuente de luz original y el de la esfera 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 umbral determinado. Siempre debe haber una profundidad máxima establecida o, de lo contrario, el programa generaría una cantidad infinita de rayos. Pero no siempre es necesario llegar a la profundidad máxima si las superficies no son muy reflectantes. Para comprobarlo, 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: supongamos que Kr = 0,5 para un conjunto de superficies. Entonces, desde la primera superficie, la contribución máxima es 0,5; para la reflexión desde la segunda: 0,5 × 0,5 = 0,25; desde la tercera: 0,25 × 0,5 = 0,125; desde la cuarta: 0,125 × 0,5 = 0,0625; desde 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 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 y Greenberg descubrieron que incluso para una escena muy reflectante, al usar esto con una profundidad máxima de 15 se obtuvo 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 ver si hay una intersección con el volumen delimitador y, luego, si hay una intersección, el volumen se divide recursivamente hasta que el rayo golpea el objeto. El mejor tipo de volumen delimitador se determinará según la forma del objeto o los objetos subyacentes. Por ejemplo, si los objetos son largos y delgados, 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 de la cantidad de objetos a algo entre lineal y logarítmica. Esto se debe a que, para 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 ofrecen 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 requerida ] Era un sistema informático de procesamiento paralelo masivo con 514 microprocesadores (257 Zilog Z8001 y 257 iAPX 86 ), utilizado para gráficos por computadora en 3D con trazado de rayos de alta velocidad. Según la Sociedad de Procesamiento de la Información de Japón : "El núcleo de la representación de imágenes en 3D es calcular la luminancia de cada píxel que compone una superficie renderizada desde el punto de vista, la fuente de luz y la posición del objeto dados. El sistema LINKS-1 se desarrolló para realizar una metodología de representación de imágenes en la que cada píxel pudiera procesarse en paralelo de forma independiente utilizando el 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 un vídeo 3D de los cielos , similar a un planetario, realizado completamente con gráficos de computadora. El vídeo se presentó en el pabellón de Fujitsu en la Exposición Internacional de 1985 en Tsukuba . [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 ordenador más potente del mundo en 1984. [29]

El siguiente trazador de rayos interactivo, y el primero conocido por haber sido etiquetado como "en tiempo real", fue reconocido 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 sólido BRL-CAD . Inicialmente publicado 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 logró varios cuadros por segundo en rendimiento de renderizado. [30] Este rendimiento se logró por medio del 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 sobre una red de productos básicos. El trazador de rayos de BRL-CAD, incluidas las herramientas REMRT/RT, continúan estando disponibles y desarrollados hoy en día como software de código abierto . [31]

Desde entonces, se han hecho considerables esfuerzos e investigaciones para implementar el trazado de rayos a velocidades de tiempo real para una variedad de propósitos en configuraciones de escritorio independientes. Estos propósitos incluyen aplicaciones de gráficos 3D interactivos como producciones de demoscenes , juegos de computadora y video y renderizado de imágenes. Algunos motores 3D de software en tiempo real basados ​​en el trazado de rayos han sido desarrollados por programadores de demos aficionados desde fines de la década de 1990. [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 sobre gráficos 3D interactivos de 1999. Renderizaron un modelo de 35 millones de esferas con una resolución de 512 por 512 píxeles, funcionando a aproximadamente 15 cuadros por segundo en 60 CPU. [33]

El proyecto Open RT incluyó un núcleo de software altamente optimizado para el 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 Saarland , fue diseñado para acelerar algunas de las operaciones de trazado de rayos que requieren un uso intensivo de recursos computacionales.

Quake Wars: Trazado de rayos

La idea de que los videojuegos pudieran trazar sus gráficos en tiempo real recibió atención de los medios a fines de la década de 2000. Durante ese tiempo, un investigador llamado Daniel Pohl, bajo la guía del profesor de gráficos Philipp Slusallek y en cooperación con la Universidad de Erlangen y la Universidad de Saarland en Alemania, equipó a Quake III y Quake IV con un motor que él mismo programó, que la Universidad de Saarland luego demostró en CeBIT 2007. [34] Intel , un mecenas de Saarland, quedó tan impresionado que contrató a Pohl y se embarcó en un programa de investigación dedicado a los gráficos trazados por rayos, que vio como una justificación para aumentar el 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 usaba trazado de rayos para renderizar, ejecutándose en una resolución básica HD (720p). ETQW funcionó a 14–29 cuadros 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 el trazado de rayos en tiempo real en las GPU de Nvidia. La API expone siete puntos de entrada programables dentro del flujo de trabajo del trazado de rayos, lo que permite cámaras personalizadas, intersecciones de rayos primitivos, sombreadores, sombreado, 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 para 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 separado, llamado 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 travesía BVH , descompresión de nodo BVH comprimido, prueba de intersección ray-AABB y prueba de intersección ray-triángulo. [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 sobre 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 por hacer que más API y motores de juego sean compatibles con la tecnología. [50] Las consolas de juegos domésticos actuales implementan componentes de hardware de trazado de rayos dedicados en sus GPU para efectos de trazado de rayos en tiempo real, lo que comenzó 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 ciertas formulaciones del problema de 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 iniciales de un rayo de luz y un punto fijo, ¿el rayo llega finalmente a ese punto?–, entonces el artículo de referencia demuestra los siguientes resultados:

Arquitectura de software

Software intermedio

API

Véase también

Referencias

  1. ^ Shirley, Peter (9 de julio de 2003). Realistic Ray Tracing . AK Peters/CRC Press; 2.ª edición. ISBN 978-1568814612.
  2. ^ "Artículo patrocinado: Cambiando el 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?". The Visual Computer . 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 de sólidos realizadas por máquinas". Actas de la conferencia conjunta de informática 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 en 3D", Simulation , 16 (1): 25–31, doi :10.1177/003754977101600104, S2CID  122824395
  10. ^ Muestrario de Syntha Vision. 1974 – vía Internet Archive .
  11. ^ Roth, Scott D. (febrero de 1982), "Fundición de rayos para modelar sólidos", Computer Graphics and Image Processing , 18 (2): 109–144, doi :10.1016/0146-664X(82)90169-1
  12. ^ Whitted T. (1979) Un modelo de iluminación mejorado para visualización sombreada . Actas de la sexta conferencia anual sobre gráficos por computadora y técnicas interactivas.
  13. ^ El pescador completo. Bell Laboratories. 1978 – vía Internet Archive .
  14. ^ "Comida para reír". Computer Graphics World .
  15. ^ Ms (28 de mayo de 2013). «This Animated Life: Pixar's Lightspeed Brings New Light to 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 antialias de superficies implícitas" (PDF) , The Visual Computer
  17. ^ Hart, John C.; Sandin, Daniel J.; Kauffman, Louis H. (julio de 1989), "Trazado de rayos de fractales tridimensionales deterministas" (PDF) , Computer Graphics , 23 (3): 289–296, doi :10.1145/74334.74363
  18. ^ Tomas Nikodym (junio de 2010). "Ray Tracing Algorithm For Interactive Applications" (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 visualización sombreada". 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 del recorrido de rayos en las 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). "Trazado de trayectorias bidireccionales". Actas de Compugraphics '93 : 145–153.
  23. ^ Péter Dornbach (1998). «Implementación del 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 Wayback Machine
  25. ^ "Mapeo de fotones - Zack Waters".
  26. ^ Veach, Eric; Guibas, Leonidas J. (1997). "Metropolis Light Transport". SIGGRAPH '97: Actas de la 24.ª conferencia anual sobre gráficos por ordenador y técnicas interactivas . págs. 65–76. doi :10.1145/258734.258775. ISBN 0897918967.S2CID 1832504  .
  27. ^ Hall, Roy A.; Greenberg, Donald P. (noviembre de 1983). "Un banco de pruebas para la síntesis de imágenes realistas". IEEE Computer Graphics and Applications . 3 (8): 10–20. CiteSeerX 10.1.1.131.1958 . doi :10.1109/MCG.1983.263292. S2CID  9594422. 
  28. ^ "【Universidad de Osaka】 LINKS-1 Computer Graphics System". Museo de Computación IPSJ . Sociedad de Procesamiento de la Información de Japón . Consultado el 15 de noviembre de 2018 .
  29. ^ Defanti, Thomas A. (1984). Avances en computadoras. Volumen 23 (PDF) . Academic Press . pág. 121. ISBN. 0-12-012123-9.
  30. ^ Véase Actas del 4º 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". Archivado desde el original el 1 de septiembre de 2009. Consultado el 18 de enero de 2019 .
  32. ^ Piero Foscari. "El reino del trazado de rayos en tiempo real". ACM Transactions on Graphics . Consultado el 17 de septiembre de 2007 .
  33. ^ Parker, Steven; Martin, William (26 de abril de 1999). "Trazado de rayos interactivo". Actas del simposio de 1999 sobre gráficos tridimensionales interactivos . 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). "Rays light up life-like graphics" (Los rayos iluminan gráficos realistas). BBC News . Consultado el 17 de septiembre de 2007 .
  35. ^ Peddie, Jon (2019). Ray Tracing: una herramienta para todos. Springer Nature Suiza . ISBN 978-3-030-17490-3. Recuperado 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?". Tom's Hardware . 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 Daily. 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). "Creación de los hermosos y revolucionarios efectos visuales de The Tomorrow Children para PS4". Blog de PlayStation . Consultado el 7 de diciembre de 2015 .
  40. ^ Kilgariff, Emmett; Moreton, Henry; Stam, Nick; Bell, Brandon (14 de septiembre de 2018). "NVIDIA Turing Architecture In-Depth". Nvidia Developer . Archivado desde el original el 13 de noviembre de 2022 . Consultado el 13 de noviembre de 2022 .
  41. ^ Takahashi, Dean (20 de agosto de 2018). «Nvidia presenta chips gráficos GeForce RTX para juegos con 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 on! Battlefield V se convierte en el primer juego compatible con el trazado de rayos en tiempo real DXR». PCWorld . Archivado desde el original el 13 de noviembre de 2022 . Consultado el 13 de noviembre de 2018 .
  43. ^ "Trazado de rayos en tiempo real con Radeon ProRender". GPUOpen . 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). "Trazado de rayos acelerado por hardware en AMD Radeon™ ProRender 2.0". GPUOpen . 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 revelará 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". The Verge . Consultado el 10 de septiembre de 2020 .
  47. ^ "AMD adelanta cifras de rendimiento de la tarjeta Radeon RX 6000: ¿apunta a la 3080?". anandtech.com . AnandTech . 8 de octubre de 2020 . Consultado el 25 de octubre de 2020 .
  48. ^ "AMD anuncia 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 que supera a RTX». Eurogamer . Consultado el 28 de octubre de 2020 .
  50. ^ Marrs, Adam; Shirley, Peter ; Wald, Ingo (2021). Ray Tracing Gems II: renderizado en tiempo real de próxima generación con DXR, Vulkan y OptiX . Apress . 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 próxima generación de Xbox 'Scarlet' en los adelantos del E3». The Verge . 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 vacaciones de 2020». The Verge . 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». The Verge . 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 más potencia de procesamiento que Xbox One». The Verge . Consultado el 9 de septiembre de 2020 .
  55. ^ Vandervell, Andy (4 de enero de 2020). "Dándole sentido a los rumores rampantes sobre Xbox Series X". Wired . 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 con trazado de rayos más avanzada». Imagination . Consultado el 17 de septiembre de 2023 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  57. ^ "Ray Tracing". Imagination . Consultado el 17 de septiembre de 2023 .
  58. ^ "Samsung presenta el revolucionario procesador Exynos 2200 con GPU Xclipse y arquitectura AMD RDNA 2". news.samsung.com . Consultado el 17 de septiembre de 2023 .
  59. ^ "Rendimiento de juego desatado con las nuevas GPU de Arm - Anuncios - Blogs de la comunidad de Arm - Comunidad de Arm". community.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 los 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, reveladas". www.qualcomm.com . Consultado el 17 de septiembre de 2023 .
  62. ^ Bonshor, Ryan Smith, Gavin. "Blog en vivo del evento Apple Otoño 2023 para el iPhone (comienza a las 10 a. m., hora del Pacífico/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