Articulo de referencia

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 "áre...

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 los gráficos por computadora 3D , el trazado de rayos es una técnica para modelar el transporte de la luz que se utiliza 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 trazado de rayos , el trazado de rayos recursivo , el trazado de rayos de distribución , el mapeo de fotones y el trazado de rutas , 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 de renderizado relativamente largo, como imágenes CGI estáticas 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 crítica en el renderizado de cada fotograma . [ 2 ]

Sin embargo, desde 2018, la aceleración por hardware para el trazado de rayos en tiempo real se ha convertido en un estándar en las nuevas tarjetas gráficas comerciales, y las API gráficas han seguido la misma tendencia, 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 menor impacto en los tiempos de renderizado de fotogramas.

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 aberración cromática ). También se puede utilizar para trazar 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 renderizar reverberación y ecos realistas . [ 4 ] De hecho, cualquier fenómeno físico de onda o partícula con movimiento aproximadamente lineal puede simularse con trazado de rayos .

Las técnicas de renderizado basadas en el trazado de rayos, que muestrean la luz en un dominio, suelen generar múltiples rayos y a menudo recurren a la eliminación de ruido para reducir el ruido resultante.

Historia

El dibujo "Un dibujante realizando un dibujo en perspectiva de una mujer reclinada", de Albrecht Dürer, posiblemente de 1532, muestra a un hombre utilizando una cuadrícula para crear una imagen. Se atribuye a este artista alemán del Renacimiento la primera descripción de esta técnica.
Grabado en madera de Durero que muestra la invención de Jacob de Keyser. Con el dispositivo de Keyser, el punto de vista del artista se fijaba mediante un gancho insertado en la pared. Este gancho estaba unido por un hilo de seda a un instrumento similar a una mira telescópica, con un elemento vertical puntiagudo en la parte frontal y una mirilla en la parte posterior. El artista apuntaba al objeto y trazaba su contorno en el cristal, manteniendo el ocular alineado con el hilo para conservar el ángulo de visión correcto.

La idea del trazado de rayos se remonta al siglo XVI, cuando fue descrita por Albrecht Dürer , a quien se le atribuye su invención. [ 5 ] Dürer describió varias técnicas para proyectar escenas 3D sobre un plano de imagen. Algunas de estas proyectan geometría seleccionada sobre el plano de imagen, como se hace hoy con la rasterización . Otras determinan qué geometría es visible a lo largo de un rayo dado, 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 logrado 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 a sombrear en la escena para identificar la superficie visible. La superficie más cercana intersectada por el rayo era la visible. Este algoritmo de renderizado basado en el trazado de rayos no recursivo se denomina hoy en día " ray casting ". Su algoritmo luego trazaba rayos secundarios hacia 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", donde se utilizó 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 un cortometraje (30 segundos) "realizado con el hardware de visualización de la Universidad de Maryland equipado con una cámara de 16 mm. El cortometraje mostraba el helicóptero y una sencilla posición de artillería a nivel del suelo. El helicóptero fue programado para realizar una serie de maniobras, incluyendo 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 trazado de rayos se dio 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 video en la imagen adjunta. El programa de computadora de Roth registraba un punto de borde en la ubicación de un píxel si el rayo intersectaba un plano delimitado diferente al de sus vecinos. Por supuesto, un rayo podía intersecar múltiples planos en el espacio, pero solo se registraba como visible el punto de la superficie más cercano a la cámara. La plataforma era una DEC PDP-10 , una pantalla de tubo de almacenamiento Tektronix y una impresora que creaba una imagen de la pantalla en papel térmico enrollable. Roth amplió el marco, introdujo el término trazado de rayos en el contexto de los gráficos por computadora y el modelado sólido , 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 espejos 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 suavizado de bordes . [ 12 ] Whitted también mostró sombras trazadas con rayos. Produjo una película de trazado de rayos recursivo llamada The Compleat Angler [ 13 ] en 1979 mientras era ingeniero en Bell Labs. El algoritmo de trazado de rayos profundamente recursivo de Whitted replanteó la renderización, pasando 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 caminos imparcial , que proporciona el marco de ecuaciones de renderizació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 grandes películas que utilizaban imágenes generadas por ordenador se aproximaba mediante luces adicionales. La renderización basada en trazado de rayos acabó cambiando esto al permitir el transporte de luz basado en la física. Entre los primeros largometrajes renderizados completamente mediante trazado de rayos 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 construye una imagen extendiendo rayos en una escena y haciéndolos rebotar en las superficies y hacia las fuentes de luz para aproximar el 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 en entornos de gráficos 3D por computadora , con un fotorrealismo superior al de las técnicas de renderizado por rayos o por líneas de exploración . Funciona trazando una trayectoria 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 ella.

En el trazado de rayos, las escenas se describen matemáticamente mediante un programador o un artista visual (normalmente utilizando herramientas intermedias). Las escenas también pueden incorporar datos de imágenes y modelos capturados mediante técnicas como la fotografía digital.

Normalmente, cada rayo debe comprobarse para determinar si intersecta con un subconjunto de todos los objetos de la escena. Una vez identificado el objeto más cercano, el algoritmo estima la luz incidente en el punto de intersección, analiza las propiedades del material del objeto y combina 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 contraintuitivo o "inverso" enviar rayos alejándolos de la cámara en lugar de dirigirlos hacia ella (como ocurre con la luz en la realidad), pero hacerlo resulta muchísimo más eficiente. Dado que la gran mayoría de los rayos de luz de una fuente luminosa no llegan directamente al ojo del observador, una simulación "directa" podría suponer un enorme desperdicio de recursos computacionales en trayectorias de luz que nunca se registran.

Por lo tanto, en el trazado de rayos, el atajo consiste en presuponer que un rayo determinado interseca el marco de visión. Tras alcanzar un número máximo de reflexiones o si un rayo recorre una cierta distancia sin intersecarse, el rayo deja de moverse y se actualiza el valor del píxel.

Calcular rayos para ventana gráfica rectangular

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

  • miR3{\displaystyle E\in \mathbb {R^{3}} }posición de los ojos
  • TR3{\displaystyle T\in \mathbb {R^{3}} }posición objetivo
  • θ[0,π]{\displaystyle \theta \in [0,\pi ]}campo de visión : para los humanos, podemos asumirπ/2 rad=90{\displaystyle \approx \pi /2{\text{ rad}}=90^{\circ }}
  • metro,knorte{\displaystyle m,k\in \mathbb {N} }Número de píxeles cuadrados en la dirección vertical y horizontal de la ventana gráfica
  • i,jnorte,1ik1jmetro{\displaystyle i,j\in \mathbb {N} ,1\leq i\leq k\land 1\leq j\leq m}número de píxeles reales
  • vR3{\displaystyle {\vec {v}}\in \mathbb {R^{3}} }vector vertical que indica dónde está arriba y abajo, generalmentev=[0,1,0]{\displaystyle {\vec {v}}=[0,1,0]}- Componente de rotación que determina la rotación de la ventana gráfica alrededor del punto C (donde el eje de rotación es la sección ET).

Esquema de la ventana gráfica con píxeles, ojo E y objetivo T, centro de la ventana gráfica C

La idea es encontrar la posición del centro de cada píxel de la ventana gráfica.PAGij{\displaystyle P_{ij}}lo que nos permite encontrar la línea que va desde el ojomi{\displaystyle E}a través de ese píxel y finalmente obtener el rayo descrito por el puntomi{\displaystyle E}y vectorRij=PAGijmi{\displaystyle {\vec {R}}_{ij}=P_{ij}-E}(o su normalización)rij{\displaystyle {\vec {r}}_{ij}}). Primero necesitamos encontrar las coordenadas del píxel inferior izquierdo de la ventana gráficaPAG1metro{\displaystyle P_{1m}}y encontrar el siguiente píxel realizando un desplazamiento en direcciones paralelas a la ventana gráfica (vectoresbnorte{\displaystyle {\vec {b}}_{n}},vnorte{\displaystyle {\vec {v}}_{n}}) multiplicado por el tamaño del píxel. A continuación, presentamos fórmulas que incluyen la distanciad{\displaystyle d}entre el ojo y la ventana gráfica. Sin embargo, este valor se reducirá durante la normalización del rayo.rij{\displaystyle {\vec {r}}_{ij}}(así que bien podrías aceptarlo)d=1{\displaystyle d=1}y eliminarlo de los cálculos).

Precálculos: vamos a encontrar y normalizar el vector.t{\displaystyle {\vec {t}}}y vectoresb,v{\displaystyle {\vec {b}},{\vec {v}}}que son paralelas a la ventana gráfica (todas representadas en la imagen superior)

t=Tmi,b=t×v{\displaystyle {\vec {t}}=T-E,\qquad {\vec {b}}={\vec {t}}\times {\vec {v}}}
tnorte=t||t||,bnorte=b||b||,vnorte=tnorte×bnorte{\displaystyle {\vec {t}}_{n}={\frac {\vec {t}}{||{\vec {t}}||}},\qquad {\vec {b}}_{n}={\frac {\vec {b}}{||{\vec {b}}||}},\qquad {\vec {v}}_{n}={\vec {t}}_{n}\times {\vec {b}}_{n}}

tenga en cuenta que el centro de la ventana gráficado=mi+tnorted{\displaystyle C=E+{\vec {t}}_{n}d}A continuación, calculamos los tamaños de la ventana gráfica.hincógnita,hy{\displaystyle h_{x},h_{y}}dividido por 2 incluyendo la relación de aspecto inversametro1k1{\displaystyle {\frac {m-1}{k-1}}}

gramoincógnita=hincógnita2=dbroncearseθ2,gramoy=hy2=gramoincógnitametro1k1{\displaystyle g_{x}={\frac {h_{x}}{2}}=d\tan {\frac {\theta }{2}},\qquad g_{y}={\frac {h_{y}}{2}}=g_{x}{\frac {m-1}{k-1}}}

y luego calculamos los vectores de desplazamiento del siguiente píxelqincógnita,qy{\displaystyle q_{x},q_{y}}en direcciones paralelas a la ventana de visualización (b,v{\displaystyle {\vec {b}},{\vec {v}}}), y el píxel inferior izquierdo centralpag1metro{\displaystyle p_{1m}}

qincógnita=2gramoincógnitak1bnorte,qy=2gramoymetro1vnorte,pag1metro=tnortedgramoincógnitabnortegramoyvnorte{\displaystyle {\vec {q}}_{x}={\frac {2g_{x}}{k-1}}{\vec {b}}_{n},\qquad {\vec {q}}_{y}={\frac {2g_{y}}{m-1}}{\vec {v}}_{n},\qquad {\vec {p}}_{1m}={\vec {t}}_{n}d-g_{x}{\vec {b}}_{n}-g_{y}{\vec {v}}_{n}}

Cálculos: notaPAGij=mi+pagij{\displaystyle P_{ij}=E+{\vec {p}}_{ij}}y RayRij=PAGijmi=pagij{\displaystyle {\vec {R}}_{ij}=P_{ij}-E={\vec {p}}_{ij}}entonces

pagij=pag1metro+qincógnita(i1)+qy(j1){\displaystyle {\vec {p}}_{ij}={\vec {p}}_{1m}+{\vec {q}}_{x}(i-1)+{\vec {q}}_{y}(j-1)}
rij=Rij||Rij||=pagij||pagij||{\displaystyle {\vec {r}}_{ij}={\frac {{\vec {R}}_{ij}}{||{\vec {R}}_{ij}||}}={\frac {{\vec {p}}_{ij}}{||{\vec {p}}_{ij}||}}}

Descripción detallada del algoritmo informático de trazado de rayos y su origen.

¿Qué sucede en la naturaleza (simplificado)?

En la naturaleza, una fuente de luz emite un rayo que viaja, finalmente, hasta una superficie que interrumpe su trayectoria. Podemos imaginar este "rayo" como un flujo de fotones que viajan por el mismo camino. En el vacío perfecto, este rayo sería una línea recta (ignorando los efectos relativistas ). Con este rayo de luz pueden ocurrir cuatro fenómenos: absorción , reflexión , refracción y fluorescencia . Una superficie puede absorber parte del rayo, lo que resulta en una pérdida de intensidad de la luz reflejada y/o refractada. También puede reflejar la totalidad o parte del rayo en una o más direcciones. Si la superficie tiene propiedades transparentes o translúcidas , refracta una porción del haz de luz hacia sí misma en una dirección diferente, absorbiendo parte (o la totalidad) del espectro (y posiblemente alterando el color). Con menos frecuencia, una superficie puede absorber parte de la luz y reemitirla fluorescentemente en un color de mayor longitud de onda en una dirección aleatoria, aunque esto es tan raro que puede descartarse en la mayoría de las aplicaciones de renderizado. Entre absorción, reflexión, refracción y fluorescencia, toda la luz incidente debe ser considerada, y nada más. Una superficie no puede, por ejemplo, reflejar el 66% de un rayo de luz incidente y refractar el 50%, ya que la suma de ambos porcentajes sería del 116%. A partir de ahí, los rayos reflejados y/o refractados pueden incidir sobre otras superficies, donde sus propiedades de absorción, refracción, reflexión y fluorescencia afectan nuevamente la trayectoria de los rayos incidentes. Algunos de estos rayos viajan de tal manera que llegan a nuestros ojos, permitiéndonos ver la escena y contribuyendo así a la imagen final.

Algoritmo de trazado de rayos

La idea detrás del trazado de rayos, predecesor del trazado de rayos recursivo, consiste en trazar rayos desde el ojo, uno por píxel, y encontrar el objeto más cercano que bloquea su trayectoria. Imagine una imagen como una mosquitera, donde cada cuadrado de la pantalla es un píxel. Este es 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 parte de la suposición simplificadora de que si una superficie está frente a una luz, la luz llegará a esa superficie sin ser bloqueada ni quedar en sombra. El sombreado de la superficie se calcula utilizando modelos de sombreado tradicionales de gráficos por computadora 3D. Una ventaja importante que ofrecía el trazado de rayos sobre los algoritmos de escaneo más antiguos era su capacidad para manejar 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 renderizar utilizando el trazado de rayos. Se pueden crear objetos complejos utilizando técnicas de modelado sólido y renderizarlos fácilmente.

Algoritmo de trazado de rayos volumétricos

En el método de trazado de rayos volumétricos, cada rayo se traza para muestrear el color y/o la densidad a lo largo del mismo y luego combinarlos para obtener el color final del píxel. Este método se utiliza a menudo 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 trazado de rayos SDF

Algoritmo de marcha de rayos SDF

En el trazado 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). La SDF se evalúa en cada iteración para poder dar pasos lo más grandes posible sin omitir ninguna parte de la superficie. Se utiliza un umbral para cancelar la iteración posterior cuando se alcanza un punto lo suficientemente cercano a la superficie. Este método se utiliza a menudo para la representación fractal 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 ).
El número de reflexiones, o rebotes, que puede producir un rayo, y cómo se ve afectado cada vez que incide sobre una superficie, se controla mediante la configuración del software. En esta imagen, se permitió que cada rayo se reflejara hasta 16 veces. Por lo tanto, se pueden observar múltiples "reflexiones de reflexiones" en estas esferas. (Imagen creada con Cobalt ).
El número de refracciones que puede experimentar un rayo, y cómo se ve afectado cada vez que incide sobre una superficie que permite la transmisión de la luz , se controla mediante la configuración del software. En este caso, cada rayo se configuró para refractarse o reflejarse (la "profundidad") hasta 9 veces . Se utilizaron reflexiones de Fresnel y se aprecian las cáusticas . (Imagen creada con V-Ray ).

Los algoritmos anteriores trazaban rayos desde el ojo hacia la escena hasta que chocaban con un objeto, pero determinaban el color del rayo sin trazar más rayos de forma recursiva. El trazado de rayos recursivo continúa el proceso. Cuando un rayo choca con una superficie, pueden proyectarse rayos adicionales debido a la reflexión, la refracción y la sombra.: [ 18 ]

  • Se traza un rayo de reflexión en la dirección de la reflexión especular. El objeto más cercano con el que intersecta es lo que se verá en el reflejo.
  • Un rayo refractado que viaja a través de un material transparente funciona de manera similar, con la salvedad de que un rayo refractado puede entrar o salir del material. Turner Whitted extendió la lógica matemática para rayos que atraviesan un sólido transparente para incluir los efectos de la refracción. [ 19 ]
  • Se traza un rayo de sombra hacia cada fuente de luz. Si se encuentra algún objeto opaco entre la superficie y la luz, la superficie está en sombra y la luz no la ilumina.

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

Ventajas sobre otros métodos de renderizado

La popularidad de la renderización basada en trazado de rayos radica en su fundamento 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 reflejos y sombras , difíciles de simular con otros algoritmos, son un resultado natural del algoritmo de trazado de rayos. La independencia computacional de cada rayo permite un nivel básico de paralelización , [ 20 ] pero la divergencia de las trayectorias de los rayos dificulta bastante el logro de una alta utilización en paralelismo en la práctica. [ 21 ]

Desventajas

Una desventaja importante del trazado de rayos es su rendimiento, aunque en teoría puede ser más rápido que el renderizado tradicional por líneas de exploración, dependiendo de la complejidad de la escena y la cantidad de píxeles en pantalla. Hasta finales de la década de 2010, el trazado de rayos en tiempo real se consideraba prácticamente imposible en hardware de consumo para tareas complejas. Los algoritmos de líneas de exploración y otros algoritmos utilizan la coherencia de datos para compartir cálculos entre píxeles, mientras que el trazado de rayos normalmente reinicia el proceso, tratando cada rayo de forma independiente. Sin embargo, esta separación ofrece otras ventajas, como la posibilidad de generar más rayos según sea necesario para realizar el suavizado espacial y mejorar la calidad de la imagen cuando sea preciso.

El trazado de rayos recursivo al estilo Whitted maneja la interreflexión y los efectos ópticos como la refracción, pero generalmente no es fotorrealista . El realismo mejora cuando la ecuación de renderizado se evalúa completamente, ya que conceptualmente incluye todos los efectos físicos del flujo de luz. Sin embargo, esto es inviable debido a los recursos computacionales 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, proporciona simulaciones de iluminación del mundo real con mayor fidelidad.

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

El proceso de enviar rayos desde el ojo hasta la fuente de luz para generar una imagen se denomina a veces trazado de rayos inverso , ya que se trata de la dirección opuesta a la que viajan los fotones. Sin embargo, esta terminología suele generar confusión. El trazado de rayos inicial siempre se realizaba desde el ojo, y los primeros investigadores, como James Arvo, utilizaban el término trazado de rayos inverso para referirse a enviar rayos desde las fuentes de luz y recopilar los resultados. Por lo tanto, resulta más claro distinguir entre el trazado de rayos basado en el ojo y el basado en la luz .

Si bien la iluminación directa generalmente se muestrea mejor mediante 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, trazando sus trayectorias hasta el ojo, muestreará mejor este fenómeno. Esta integración de rayos basados ​​en el ojo y en la luz se expresa a menudo como trazado de trayectorias bidireccional, en el que las trayectorias se trazan tanto desde el ojo como desde las luces, y posteriormente se unen mediante un rayo de conexión después de cierta longitud. [ 22 ] [ 23 ]

El mapeo de fotones es otro método que utiliza el trazado de rayos basado en la luz y en el ojo; en una pasada inicial, los fotones energéticos se trazan a lo largo de rayos desde la fuente de luz para calcular una estimación del flujo radiante en función del espacio tridimensional (el mapa de fotones homónimo). En una pasada 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, reduciendo el cálculo, a costa de un sesgo estadístico.

Un problema adicional surge cuando la luz debe pasar a través de una abertura muy estrecha para iluminar la escena (por ejemplo, una habitación oscura con una puerta ligeramente entreabierta que da 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 a ninguna fuente de luz (como en el caso de lámparas de techo o focos ). En tales casos, solo un subconjunto muy pequeño de trayectorias transportará energía; el transporte de luz 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 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 ilustra un ejemplo sencillo de la trayectoria de rayos generada recursivamente desde la cámara (o el ojo) hasta la fuente de luz, utilizando el algoritmo descrito anteriormente. Una superficie difusa refleja la luz en todas direcciones.

Primero, se crea un rayo en el punto de vista del observador y se traza a través de un píxel hacia la escena, donde incide sobre una superficie difusa. Desde esa superficie, el algoritmo genera recursivamente un rayo de reflexión, que se traza a través de la escena hasta incidir sobre otra superficie difusa. Finalmente, se genera otro rayo de reflexión que se traza a través de la escena hasta incidir sobre la fuente de luz y ser 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 emite luz blanca y las dos superficies difusas son azules, el color resultante del píxel será azul.

Ejemplo

Nudo de trébol , creado con una ecuación paramétrica y trazado de rayos en Python.

Para ilustrar los principios del trazado de rayos, consideremos cómo se halla la intersección entre un rayo y una esfera. Esto representa simplemente la base matemática de la intersección entre una línea y una esfera , y la posterior determinación del color del píxel que se está calculando. Por supuesto, el proceso general del trazado de rayos es mucho más complejo, pero este ejemplo ilustra los algoritmos utilizados.

En notación vectorial , la ecuación de una esfera con centrodo{\displaystyle \mathbf {c} }y radior{\displaystyle r}es

incógnitado2=r2.{\displaystyle \left\Vert \mathbf {x} -\mathbf {c} \right\Vert ^{2}=r^{2}.}

Cualquier punto en un rayo que parte de un puntos{\displaystyle \mathbf {s} }con direcciónd{\displaystyle \mathbf {d} }(aquíd{\displaystyle \mathbf {d} }es un vector unitario ) se puede escribir como

incógnita=s+td,{\displaystyle \mathbf {x} =\mathbf {s} +t\mathbf {d} ,}

dóndet{\displaystyle t}es su distancia entreincógnita{\displaystyle \mathbf {x} }ys{\displaystyle \mathbf {s} }En nuestro problema, sabemosdo{\displaystyle \mathbf {c} },r{\displaystyle r},s{\displaystyle \mathbf {s} }(por ejemplo, la posición de una fuente de luz) yd{\displaystyle \mathbf {d} }y necesitamos encontrart{\displaystyle t}Por lo tanto, sustituimos porincógnita{\displaystyle \mathbf {x} }:

s+tddo2=r2.{\displaystyle \left\Vert \mathbf {s} +t\mathbf {d} -\mathbf {c} \right\Vert ^{2}=r^{2}.}

Dejarv =dmiF sdo{\displaystyle \mathbf {v} \ {\stackrel {\mathrm {def} }{=}}\ \mathbf {s} -\mathbf {c} }para simplificar; entonces

v+td2=r2{\displaystyle \left\Vert \mathbf {v} +t\mathbf {d} \right\Vert ^{2}=r^{2}}
v2+t2d2+2vtd=r2{\displaystyle \mathbf {v} ^{2}+t^{2}\mathbf {d} ^{2}+2\mathbf {v} \cdot t\mathbf {d} =r^{2}}
(d2)t2+(2vd)t+(v2r2)=0.{\displaystyle (\mathbf {d} ^{2})t^{2}+(2\mathbf {v} \cdot \mathbf {d} )t+(\mathbf {v} ^{2}-r^{2})=0.}

Sabiendo que d es un vector unitario, podemos hacer esta pequeña simplificación:

t2+(2vd)t+(v2r2)=0.{\displaystyle t^{2}+(2\mathbf {v} \cdot \mathbf {d} )t+(\mathbf {v} ^{2}-r^{2})=0.}

Esta ecuación cuadrática tiene soluciones

t=(2vd)±(2vd)24(v2r2)2=(vd)±(vd)2(v2r2).{\displaystyle t={\frac {-(2\mathbf {v} \cdot \mathbf {d} )\pm {\sqrt {(2\mathbf {v} \cdot \mathbf {d} )^{2}-4(\mathbf {v} ^{2}-r^{2})}}}{2}}=-(\mathbf {v} \cdot \mathbf {d} )\pm {\sqrt {(\mathbf {v} \cdot \mathbf {d} )^{2}-(\mathbf {v} ^{2}-r^{2})}}.}

Los dos valores det{\displaystyle t}Al resolver esta ecuación se encuentran dos tales ques+td{\displaystyle \mathbf {s} +t\mathbf {d} }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 desdes{\displaystyle \mathbf {s} }en 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 seat{\displaystyle t}Sea el mínimo. Además, supongamos que la esfera es el objeto más cercano en nuestra escena que interseca nuestro rayo, y que está hecha de un material reflectante. Necesitamos determinar 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

norte=ydoydo,{\displaystyle \mathbf {n} ={\frac {\mathbf {y} -\mathbf {c} }{\left\Vert \mathbf {y} -\mathbf {c} \right\Vert }},}

dóndey=s+td{\displaystyle \mathbf {y} =\mathbf {s} +t\mathbf {d} }es el punto de intersección encontrado anteriormente. La dirección de reflexión se puede encontrar mediante una reflexión ded{\displaystyle \mathbf {d} }con respecto anorte{\displaystyle \mathbf {n} }, eso es

r=d2(norted)norte.{\displaystyle \mathbf {r} =\mathbf {d} -2(\mathbf {n} \cdot \mathbf {d} )\mathbf {n} .}

Por lo tanto, el rayo reflejado tiene la ecuación

incógnita=y+r.{\displaystyle \mathbf {x} =\mathbf {y} +u\mathbf {r} .\,}

Ahora solo necesitamos calcular la intersección del último rayo con nuestro campo de visión para obtener el píxel que impactará nuestro rayo de luz reflejado. Finalmente, a este píxel se le asigna un color apropiado, 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 implica que el motor de renderizado deja de generar rayos reflejados/transmitidos cuando la intensidad calculada cae por debajo de un cierto umbral. Siempre debe existir una profundidad máxima predefinida, de lo contrario el programa generaría un número infinito de rayos. Sin embargo, no siempre es necesario alcanzar la profundidad máxima si las superficies no son altamente 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: sea 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 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 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, usar esto con una profundidad máxima de 15 resultó en una profundidad promedio del árbol de rayos de 1,7. [ 27 ]

Volúmenes delimitadores

Agrupar objetos en jerarquías de volúmenes delimitadores (BVH) reduce la cantidad de cálculos necesarios para el trazado de rayos. Un rayo proyectado se prueba primero para comprobar si intersecta con el volumen delimitador y, si lo hace, el volumen se divide recursivamente hasta que el rayo impacta en el objeto. El tipo óptimo de volumen delimitador dependerá de la forma del objeto o los objetos subyacentes. Por ejemplo, si los objetos son largos y delgados, una esfera delimitará principalmente espacio vacío en comparación con una caja. Además, es más fácil generar volúmenes delimitadores jerárquicos para cajas.

Cabe destacar que el uso de un sistema jerárquico como este (siempre que se implemente con cuidado) modifica el tiempo de cálculo de la intersección, pasando de una dependencia lineal con respecto al número de objetos a una dependencia intermedia entre lineal y logarítmica. Esto se debe a que, en un caso ideal, cada prueba de intersección dividiría las posibilidades por dos, dando como resultado una estructura de tipo árbol binario. Los métodos de subdivisión espacial, que se describen más adelante, intentan lograr esto. Además, esta estructura de aceleración hace que el cálculo del trazado de rayos dependa de la salida . Es decir, la complejidad de los cálculos de intersección de rayos depende del número de objetos que realmente intersecan los rayos y no (solo) del número de objetos en la escena.

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

  • Los subárboles deben contener objetos que estén cerca unos de otros, y cuanto más abajo se encuentre el árbol, más cerca deben estar los objetos.
  • El volumen de cada nodo debe ser mínimo.
  • La suma de los volúmenes de todos los volúmenes delimitadores debe ser mínima.
  • Se debe prestar mayor atención a los nodos cercanos a la raíz, ya que podar una rama cercana a la raíz eliminará más objetos potenciales que podar una que se encuentre más abajo en el árbol.
  • El tiempo empleado en construir la jerarquía debería ser mucho menor que el tiempo ahorrado al utilizarla.

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 Facultad de Ingeniería de la Universidad de Osaka por los profesores Ohmura Kouichi, Shirakawa Isao y Kawata Toru, con la participación de 50 estudiantes. Se trataba de un sistema informático de procesamiento masivamente paralelo con 514 microprocesadores (257 Zilog Z8001 y 257 iAPX 86 ), utilizado para gráficos 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 renderización de imágenes 3D reside en el cálculo de la luminancia de cada píxel que compone una superficie renderizada a partir del punto de vista, la fuente de luz y la posición del objeto. El sistema LINKS-1 se desarrolló para implementar una metodología de renderización de imágenes en la que cada píxel pudiera procesarse en paralelo de forma independiente mediante el trazado de rayos. Gracias al desarrollo de una nueva metodología de software específica para la renderización de imágenes de alta velocidad, LINKS-1 fue capaz de renderizar rápidamente imágenes de gran realismo". Se utilizó para crear un vídeo primitivo en 3D, similar a un planetario, del firmamento, realizado completamente con gráficos por ordenador. El vídeo se presentó en el pabellón de Fujitsu en la Exposición Internacional de Tsukuba de 1985. [ 28 ] Fue el segundo sistema en hacerlo después del Digistar de Evans & Sutherland 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 en ser 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 . Publicado inicialmente en 1987 en USENIX , el trazador de rayos de BRL-CAD fue una implementación temprana de un sistema de trazado de rayos distribuido en red paralela que logró varios fotogramas por segundo en rendimiento de renderizado. [ 30 ] Este rendimiento se logró mediante el motor de trazado de rayos LIBRT de BRL-CAD, altamente optimizado pero independiente de la plataforma, 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 comercial. El trazador de rayos de BRL-CAD, incluidas las herramientas REMRT/RT, continúa estando disponible y se sigue desarrollando hoy en día como software de código abierto . [ 31 ]

Desde entonces, se han realizado importantes esfuerzos e investigaciones para implementar el trazado de rayos a velocidades en tiempo real para diversos fines en configuraciones de escritorio independientes. Estos fines incluyen aplicaciones interactivas de gráficos 3D, como producciones de la demoscene , videojuegos y renderizado de imágenes. Algunos motores de software 3D en tiempo real basados ​​en el trazado de rayos han sido desarrollados por programadores aficionados desde finales de la década de 1990. [ 32 ]

En 1999, un equipo de la Universidad de Utah , liderado por Steven Parker, realizó una demostración interactiva de trazado de rayos en vivo durante el Simposio de Gráficos 3D Interactivos de 1999. Renderizaron un modelo de esfera de 35 millones de píxeles con una resolución de 512 x 512 píxeles, a una velocidad aproximada de 15 fotogramas por segundo en 60 CPU. [ 33 ]

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

Quake Wars: Ray Traced

La idea de que los videojuegos pudieran trazar sus gráficos en tiempo real recibió 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 la Universidad de Saarland luego demostró en CeBIT 2007. [ 34 ] Intel , un patrocinador 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, lo que consideró 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 utilizaba trazado de rayos para la renderización, ejecutándose en resolución HD básica (720p). ETQW operaba a 14–29 fotogramas por segundo en un sistema Xeon Tigerton de 16 núcleos (4 sockets, 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 pipeline de trazado de rayos, lo que permite cámaras personalizadas, intersecciones de primitivas de rayos, sombreadores, sombras, etc. Esta flexibilidad permite el trazado de rutas bidireccional, el transporte de luz de 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 demo del juego 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 en el 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 comparable a una unidad de textura en tamaño, latencia e interfaz con el núcleo del procesador. La unidad cuenta con recorrido BVH , descompresión de nodos BVH comprimidos, prueba de intersección rayo-AABB y prueba de intersección rayo-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, 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 ] Posteriormente aparecieron juegos 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 hardware de trazado de rayos dedicado en sus GPU para efectos de trazado de rayos en tiempo real, 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 introdujo el trazado de rayos acelerado por hardware en sus diseños de chips, comenzando con el chip A17 Pro para los modelos iPhone 15 Pro. [ 62 ] [ 63 ] Más tarde ese mismo año, Apple lanzó la familia de procesadores M3 con soporte para trazado de rayos habilitado por hardware. [ 64 ] Actualmente, esta tecnología es accesible en iPhones, iPads y computadoras Mac a través de la API Metal . Apple informa un aumento de rendimiento de hasta 4 veces con respecto al trazado de rayos basado en software anterior en el teléfono [ 63 ] y hasta 2,5 veces más rápido al comparar los chips M3 con los M1. [ 64 ] La implementación de hardware incluye aceleración de recorrido de estructura e intersecciones dedicadas de caja de rayos, y la API admite RayQuery (trazado de rayos en línea) así como las características de RayPipeline. [ 65 ]

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 [ 66 ] : dada la posición y dirección iniciales de un rayo de luz y un punto fijo, ¿el rayo finalmente alcanza ese punto?, entonces el artículo de referencia demuestra los siguientes resultados:

  • El trazado de rayos en sistemas ópticos 3D con un conjunto finito de objetos reflectantes o refractivos representados por un sistema de desigualdades cuadráticas racionales es indecidible .
  • El trazado de rayos en sistemas ópticos 3D con un conjunto finito de objetos refractivos representados por un sistema de desigualdades lineales racionales es indecidible.
  • El trazado de rayos en sistemas ópticos 3D con un conjunto finito de objetos rectangulares reflectantes o refractivos es indecidible.
  • El trazado de rayos en sistemas ópticos 3D con un conjunto finito de objetos reflectantes o parcialmente reflectantes representados por un sistema de desigualdades lineales, algunas de las cuales pueden ser irracionales, es indecidible.
  • El trazado de rayos en sistemas ópticos 3D con un conjunto finito de objetos reflectantes o parcialmente reflectantes representados por un sistema de desigualdades lineales racionales es un problema PSPACE -difícil.
  • Para cualquier dimensión igual o mayor que 2, el trazado de rayos con un conjunto finito de superficies reflectantes paralelas y perpendiculares representadas por desigualdades lineales racionales se encuentra en PSPACE.

Arquitectura de software

Middleware

API

Véase también

Referencias

  1. Shirley, Peter (9 de julio de 2003). Trazado de rayos realista . AK Peters/CRC Press; 2.ª edición. ISBN 978-1568814612.
  2. "Artículo patrocinado: Cambiando las reglas del juego: Trazado de rayos experimental basado en la nube" . www.gamasutra.com . Archivado del original el 9 de mayo de 2012. Consultado el 18 de marzo de 2021 .
  3. Ravenscraft, Eric. "¿Debería importarle a alguien realmente el trazado de rayos?" . Wired . ISSN 1059-1028 . Consultado el 27 de febrero de 2026 . 
  4. Kastbauer, Damian (28 de enero de 2010). "Los próximos grandes pasos en el diseño de sonido de videojuegos" . Gamasutra . Archivado del original el 9 de mayo de 2012. 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). "Dürer, el dibujo y el 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 mediante máquinas". Actas de la conferencia conjunta de computación de primavera del 30 de abril al 2 de mayo de 1968 - AFIPS '68 (Primavera) ( PDF) . págs. 37–45 . doi : 10.1145/1468075.1468082 . S2CID 207171023. Archivado (PDF) del original el 20 de julio de 2008. Recuperado el 9 de agosto de 2011 .  
  9. Goldstein, Robert; Nagel, Roger (enero de 1971), "Simulación visual 3D", Simulation , 16 (1): 25–31 , doi : 10.1177/003754977101600104 , S2CID 122824395 
  10. Syntha Vision Sampler . 1974 vía Internet Archive .
  11. Roth, Scott D. (febrero de 1982), "Ray Casting for Modeling Solids", 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 pantallas sombreadas. Archivado el 19 de octubre de 2012 en Wayback Machine . 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" . Computer Graphics World .
  15. Ms (28 de mayo de 2013). "This Animated Life: Lightspeed de Pixar aporta una nueva perspectiva a Monsters University" . This Animated Life . Archivado del original el 17 de julio de 2020. Recuperado el 26 de mayo de 2020 .
  16. Hart, John C. (junio de 1995), "Sphere Tracing: A Geometric Method for the Antialiased Ray Tracing of Implicit Surfaces" (PDF) , The Visual Computer
  17. Hart, John C.; Sandin, Daniel J.; Kauffman, Louis H. (julio de 1989), "Ray Tracing Deterministic 3-D Fractals" (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 del original (PDF) el 3 de marzo de 2016.
  19. Whitted, T. (1979). "Un modelo de iluminación mejorado para pantallas sombreadas" . Actas de la 6.ª conferencia anual sobre gráficos por computadora y técnicas interactivas . Association for Computing Machinery. CiteSeerX 10.1.1.156.1534 . ISBN  0-89791-004-4Archivado del original el 19 de octubre de 2012. Consultado el 9 de agosto de 2011 .
  20. Chalmers, A.; Davis, T.; Reinhard, E. (2002). Renderizado paralelo práctico . AK Peters. ISBN 1-56881-179-9.
  21. Aila, Timo; Laine, Samulii (2009). "Understanding the Efficiency of Ray Traversal on GPUs". HPG '09: Proceedings of the Conference on High Performance Graphics 2009. pp. 145–149 . doi : 10.1145/1572769.1572792 . ISBN  9781605586038. S2CID 15392840 . 
  22. Eric P. Lafortune y Yves D. Willems (diciembre de 1993). "Trazado de trayectorias bidireccional" . 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" . Archivado del original el 1 de junio de 2008. Consultado el 11 de junio de 2008 .
  26. Veach, Eric; Guibas, Leonidas J. (1997). "Transporte ligero de la metrópolis". SIGGRAPH '97: Actas de la 24.ª conferencia anual sobre gráficos por computadora y técnicas interactivas . pp. 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. Bibcode : 1983ICGA....3h..10H . 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 . Archivado del original el 7 de mayo de 2017. Recuperado el 15 de noviembre de 2018 .
  29. Defanti, Thomas A. (1984). Avances en informática. Volumen 23 (PDF) . Academic Press . pág. 121. ISBN  0-12-012123-9. Archivado (PDF) del original el 12 de enero de 2021. Recuperado el 16 de noviembre de 2018 .
  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 del original el 1 de septiembre de 2009. Consultado el 18 de enero de 2019 .
  32. Piero Foscari. "El ámbito del trazado de rayos en tiempo real" . ACM Transactions on Graphics . Archivado del original el 15 de septiembre de 2006. 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 3D 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). "Los rayos iluminan gráficos realistas" . BBC News . Archivado del original el 5 de octubre de 2007. Consultado el 17 de septiembre de 2007 .
  35. Peddie, Jon (2019). Ray Tracing: A Tool for All . Springer Nature Switzerland . 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?" . Tom's Hardware . Archivado del original el 17 de mayo de 2026. Recuperado el 4 de noviembre de 2022 .
  37. Valich, Theo (12 de junio de 2008). "Intel convierte ET: Quake Wars a trazado de rayos" . TG Daily. Archivado del original el 2 de octubre de 2008. Recuperado 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 los hermosos e innovadores efectos visuales de The Tomorrow Children en PS4" . Blog de PlayStation . Archivado del original el 11 de diciembre de 2015. Consultado el 7 de diciembre de 2015 .
  40. Kilgariff, Emmett; Moreton, Henry; Stam, Nick; Bell, Brandon (14 de septiembre de 2018). "Análisis en profundidad de la arquitectura Turing de NVIDIA" . Nvidia Developer . Archivado del original el 13 de noviembre de 2022. Consultado el 13 de noviembre de 2022 .
  41. Takahashi, Dean (20 de agosto de 2018). "Nvidia presenta los chips gráficos GeForce RTX para juegos con trazado de rayos en tiempo real" . VentureBeat . Archivado del original el 13 de noviembre de 2022. Recuperado el 13 de noviembre de 2022 .
  42. Chacos, Brad (14 de noviembre de 2018). "¡RTX activado! Battlefield V se convierte en el primer juego en admitir el trazado de rayos en tiempo real DXR" . PCWorld . Archivado del original el 13 de noviembre de 2022. Recuperado el 13 de noviembre de 2018 .
  43. "Rayos trazados en tiempo real con Radeon ProRender" . GPUOpen . 20 de marzo de 2018. Archivado del original el 13 de noviembre de 2022. Consultado el 13 de noviembre de 2022 .
  44. Harada, Takahiro (23 de noviembre de 2020). "Rayos trazados acelerados por hardware en AMD Radeon™ ProRender 2.0" . GPUOpen . Archivado del original el 13 de noviembre de 2022. Recuperado 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 . Archivado del original el 10 de septiembre de 2020. Recuperado el 9 de septiembre de 2020 .
  46. Lyles, Taylor (9 de septiembre de 2020). "Los procesadores 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 . Archivado del original el 9 de septiembre de 2020. Consultado el 10 de septiembre de 2020 .
  47. "AMD adelanta las cifras de rendimiento de la tarjeta Radeon RX 6000: ¿Apuntando a la 3080?" . anandtech.com . AnandTech . 8 de octubre de 2020. Archivado del original el 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. Archivado del original el 10 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 al de RTX" . Eurogamer . Archivado del original el 10 de septiembre de 2021. 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 Xbox 'Scarlet' de próxima generación en los avances del E3" . The Verge . Archivado del original el 9 de junio de 2019. Recuperado el 8 de octubre de 2019 .
  52. Chaim, Gartenberg (8 de octubre de 2019). "Sony confirma el nombre de PlayStation 5 y su fecha de lanzamiento para las fiestas 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 una GPU de 12 teraflops" . The Verge . Archivado del original el 24 de febrero de 2020. 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" . The Verge . Archivado del original el 9 de septiembre de 2020. Recuperado el 9 de septiembre de 2020 .
  55. Vandervell, Andy (4 de enero de 2020). "Entendiendo los rumores desenfrenados sobre Xbox Series X" . Wired . Archivado del original el 13 de noviembre de 2022. Recuperado el 13 de noviembre de 2022 .
  56. 93digital (4 de noviembre de 2021). "Imagination lanza la GPU de trazado de rayos más avanzada" . Imagination . Consultado el 17 de septiembre de 2023 .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  57. "Ray Tracing" . Imagination . Consultado el 17 de septiembre de 2023 .
  58. "Samsung presenta el revolucionario procesador Exynos 2200 con GPU Xclipse basada en la 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 Arm - Comunidad 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 smartphones premium" . www.qualcomm.com . Archivado del original el 2 de abril de 2023. 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 presentación del iPhone de otoño de Apple 2023 (comienza a las 10:00 PT/17:00 UTC)" . www.anandtech.com . Archivado del original el 12 de septiembre de 2023. Consultado el 17 de septiembre de 2023 .{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  63. 1 2 "Apple presenta el iPhone 15 Pro y el iPhone 15 Pro Max" . Sala de prensa de Apple . Archivado del original el 12 de septiembre de 2023. Consultado el 27 de octubre de 2024 .
  64. 1 2 "Apple presenta M3, M3 Pro y M3 Max, los chips más avanzados para una computadora personal" . Sala de prensa de Apple . Archivado del original el 8 de junio de 2026. Consultado el 27 de octubre de 2024 .
  65. "Descubre el trazado de rayos con Metal - WWDC20 - Vídeos" . Apple Developer . Consultado el 27 de octubre de 2024 .
  66. "Computabilidad y complejidad del trazado de rayos" (PDF) . CS.Duke.edu . Archivado (PDF) del original el 17 de enero de 2015. Recuperado el 4 de febrero de 2014 .
  • Trazado de rayos interactivo: ¿El sustituto de la rasterización?
  • El pescador completo (1978)
  • Cómo escribir un trazador de rayos simple (scratchapixel) Archivado el 28 de febrero de 2015 en Wayback Machine
  • Trazado de rayos de un toroide. Archivado el 12 de febrero de 2019 en Wayback Machine .
  • Serie de libros sobre trazado de rayos en un fin de semana
  • Trazado de rayos con vóxeles - Parte 1