

El trazado de rayos es un algoritmo de renderizado en gráficos por computadora que simula cómo la luz interactúa con los objetos y los medios participantes para generar imágenes realistas ( físicamente plausibles ) . Se basa en algoritmos de trazado de rayos anteriores y más limitados.
El trazado de rayos se utiliza para crear imágenes fotorrealistas con fines artísticos y para aplicaciones como la representación arquitectónica y el diseño de productos . También se emplea para renderizar fotogramas de películas de animación y efectos visuales para cine y televisión. Gracias a su gran precisión e imparcialidad , se utiliza habitualmente para generar imágenes de referencia al evaluar la calidad de otros algoritmos de renderizado .
Esta técnica utiliza el método de Monte Carlo para calcular estimaciones de la iluminación global y simular cómo los diferentes materiales reflejan (o dispersan), transmiten, absorben y emiten luz. Puede incorporar modelos sencillos de los efectos de la apertura y el objetivo ( profundidad de campo y bokeh ) y la velocidad de obturación ( desenfoque por movimiento ), o una simulación más realista de los componentes ópticos de una cámara .
El algoritmo funciona describiendo la iluminación en una escena mediante la ecuación de renderizado o la ecuación de transporte de luz , y encontrando una solución aproximada mediante la integración de Monte Carlo . Una versión ineficiente (pero precisa) del algoritmo puede ser muy simple e implica trazar un rayo desde la cámara, permitiendo que este rayo rebote en direcciones aleatorias al chocar con diferentes objetos en la escena, y calculando la cantidad de luz transmitida a lo largo de la trayectoria hasta la cámara cada vez que la trayectoria encuentra una fuente de luz. Este proceso se repite muchas veces para cada píxel (cada repetición, con la trayectoria generada y la luz transmitida, se llama muestra ), y los resultados se promedian. Una diferencia principal entre este algoritmo y el trazado de rayos estándar es que se traza una única trayectoria sin ramificaciones cada vez, mientras que el trazado de rayos de estilo Whitted o de estilo Cook muestrea recursivamente trayectorias ramificadas (por ejemplo, cuando la luz es reflejada y refractada por un objeto de vidrio).
Las versiones más prácticas incorporan mejoras como métodos cuasi-Monte Carlo (técnicas que distribuyen las muestras de manera más uniforme), muestreo de importancia (tomar más muestras de rutas que probablemente transporten más luz) y estimación del siguiente evento (permitir una forma muy limitada de ramificación y muestrear rutas adicionales que se conecten a las luces de forma más directa).
Debido a que el trazado de rayos utiliza muestras aleatorias, la imagen final presenta ruido, que disminuye a medida que se toman más muestras. Generalmente, las imágenes requieren miles de muestras por píxel (spp) para reducir el ruido a un nivel aceptable, y a menudo se utilizan técnicas de eliminación de ruido (por ejemplo, basadas en redes neuronales ). La eliminación de ruido suele ser necesaria cuando el trazado de rayos se utiliza para la renderización en tiempo real en videojuegos , ya que se pueden tomar relativamente pocas muestras.
Se han desarrollado muchos algoritmos alternativos para el trazado de rayos, aunque no siempre superan a las implementaciones más directas. Estos incluyen el trazado de rayos bidireccional (que traza trayectorias hacia adelante desde la fuente de luz y hacia atrás desde la cámara), el transporte de luz de Metropolis y métodos para combinar el trazado de rayos con el mapeo de fotones . Los videojuegos suelen utilizar versiones sesgadas del trazado de rayos para mejorar el rendimiento (por ejemplo, limitando el número de rebotes en cada trayectoria). Se ha desarrollado una familia de técnicas llamada ReSTIR que puede ayudar al trazado de rayos en tiempo real compartiendo datos entre píxeles cercanos y fotogramas consecutivos.
Historia
Como todos los métodos de trazado de rayos , el trazado de rutas se basa en el trazado de rayos , que Arthur Appel utilizó para la renderización de gráficos por computadora a finales de la década de 1960. En 1980, John Turner Whitted publicó un algoritmo recursivo de trazado de rayos que permite renderizar imágenes de escenas que contienen superficies reflectantes y objetos transparentes refractivos. En 1984, Cook et al. describieron una forma de trazado de rayos llamada trazado de rayos distribuido , que utiliza la integración de Monte Carlo para renderizar efectos como profundidad de campo, desenfoque de movimiento, reflexión de superficies rugosas y luces de área. Ese mismo año, se publicó el método de radiosidad (que no es un método de trazado de rayos), el primer método basado en la física para renderizar iluminación global difusa . En 1986, Jim Kajiya publicó un artículo que exploraba cómo usar el trazado de rayos distribuido para renderizar iluminación global basada en la física, y este artículo también introdujo y denominó el método llamado "trazado de rutas". El trazado de trayectorias y otras técnicas de trazado de rayos distribuidos fueron perfeccionadas a finales de la década de 1980 y principios de la de 1990 por investigadores como James Arvo y Peter Shirley , y por Greg Ward en el software de código abierto Radiance . [ 1 ] : 15.9 [ 2 ] [ 3 ]
A pesar de ser teóricamente capaz de renderizar cualquier iluminación, la forma original del trazado de rayos a veces puede ser muy ineficiente (o ruidosa) para renderizar la luz que se refleja o refracta antes de iluminar una superficie visible, incluyendo la iluminación global difusa donde la luz entra en un área a través de huecos estrechos, porque traza trayectorias solo desde la cámara. Para solucionar esto, Eric Lafortune e Yves Willems publicaron en 1993, y Eric Veach y Leonidas Guibas en 1997, variaciones del trazado de rayos que trazan trayectorias tanto desde la cámara como desde las fuentes de luz, llamadas trazado de rayos bidireccional . En 1997, Veach y Guibas también publicaron un método alternativo llamado transporte de luz de Metropolis , que combina el trazado de rayos bidireccional con el método de Metropolis . La extensa tesis doctoral de Veach describió ambas técnicas, junto con los fundamentos teóricos del trazado de rayos; posteriormente, el libro Physically Based Rendering (que ganó un Premio Óscar al Logro Técnico en 2014) ayudó a que la información sobre el trazado de rayos estuviera más disponible. [ 3 ] [ 4 ]
El trazado de rayos requiere trazar una gran cantidad de trayectorias de luz para producir una imagen con una cantidad de ruido visualmente aceptable. Esto hacía que el trazado de rayos fuera muy lento en las computadoras disponibles en las décadas de 1980 y 1990, y el ruido seguía siendo un problema al intentar reproducir el estilo de las primeras películas de animación por computadora. La mayoría de las películas de animación producidas hasta alrededor de 2010, por estudios como Pixar , utilizaban renderizado basado en rasterización , con trazado de rayos utilizado selectivamente para reflejos (y posteriormente para iluminación global precalculada o almacenada en caché). Sin embargo, la velocidad de las computadoras aumentó rápidamente durante la década de 1990. Blue Sky Studios fue pionero en el uso del trazado de rayos Monte Carlo para la iluminación global en animación, incluso en el cortometraje de 1998 " Bunny ", pero no revelaron las técnicas precisas utilizadas. [ 3 ] [ 4 ]
El trazado de rayos se volvió gradualmente más práctico para la producción cinematográfica a principios de la década de 2000. El renderizador Arnold , desarrollado por Marcos Fajardo, fue utilizado por Sony Pictures Imageworks para producir el largometraje Monster House , estrenado en 2006. Pixar reescribió su software RenderMan para usar el trazado de rayos y estrenó su primer largometraje con esta técnica, Buscando a Dory, en 2016. Aunque el trazado de rayos aún tenía un alto costo computacional, los estudios de animación descubrieron que requería menos mano de obra humana, por ejemplo, porque ya no era necesario simular la iluminación global colocando luces manualmente. La cantidad de ruido presente en las imágenes con trazado de rayos seguía causando dificultades, particularmente al renderizar el desenfoque de movimiento (que se usaba ampliamente en las primeras películas animadas), pero se desarrollaron técnicas de reducción de ruido para solucionarlo. También se necesitaban nuevas técnicas para renderizar cabello y pelaje, y para manejar las escenas extremadamente grandes que a veces requieren las películas. [ 3 ] [ 4 ] [ 6 ]
Los renderizadores como Arnold y Hyperion de Disney originalmente solo usaban CPU para renderizar, pero a medida que las GPU se volvieron más capaces (y se lanzaron API como CUDA , OpenCL y OptiX ), los investigadores y desarrolladores comenzaron a adaptar algoritmos e implementaciones para usar GPU. Las GPU pueden reducir drásticamente el tiempo de renderizado: por ejemplo, usar una GPU de gama alta para acelerar partes del código de renderizado puede hacerlo más de 30 veces más rápido que usar solo una CPU de gama alta. [ 6 ] [ 4 ] [ 7 ]
Descripción

El artículo de Kajiya de 1986 definió una ecuación integral recursiva llamada ecuación de renderizado , que describe una forma simplificada del transporte de luz . El uso de la integración de Monte Carlo para la integral del lado derecho de la ecuación conduce de forma bastante directa al algoritmo de trazado de caminos: [ 8 ]
Esto expresa I(x,x ' ) , la luz que llega al punto x desde el punto x ' , como el producto de un término geométrico , g(x,x') , que es 0 si hay algo que bloquea la luz entre los dos puntos y 1 en caso contrario, y la cantidad de luz que sale del punto x ' y viaja hacia x . La luz que sale del punto x ' es la suma de la luz emitida por la superficie en x ' , y la integral de la luz que llega a x ' desde todos los demás puntos de la escena (el dominio de integración S ) y se refleja hacia x . El factor ρ(x,x',x ' ' ) , que calcula cuánta luz se refleja, debe tener en cuenta los ángulos en los que la luz llega y sale, y las características del material de la superficie, expresadas típicamente como una función de distribución de reflectancia bidireccional (BRDF) o una función de distribución de transmisión bidireccional (BTDF). [ 8 ] [ 1 ] : 31.13
La ecuación se suele denominar ecuación de transporte de luz (ETL) y se escribe frecuentemente mediante la integración sobre direcciones en lugar de superficies. (En la versión de Kajiya de la ecuación, el término geométrico garantiza que solo un punto de la superficie pueda aportar luz desde cualquier dirección dada). La renderización real también implica una ecuación relacionada, denominada ecuación de medición , que expresa la cantidad de luz recibida por la cámara a lo largo de rayos específicos. [ 9 ] [ 10 ] [ 11 ] [ 12 ] : 89
La versión de la ecuación utilizada por Kajiya asume que la luz tiene una sola longitud de onda (la longitud de onda no aparece como parámetro en ninguna de las funciones). Se trata de una simplificación para la óptica geométrica y no considera fenómenos como la difracción , la polarización y la fluorescencia . Integra únicamente sobre superficies y no maneja medios participantes (regiones del espacio que dispersan, absorben y emiten luz). Sin embargo, en el artículo se mencionaron extensiones para manejar estos casos y múltiples longitudes de onda, y se comprendieron bien (y no existe ninguna limitación fundamental del algoritmo de trazado de rayos que impida la representación de estos efectos). [ 8 ]
Kajiya describió cómo los métodos de trazado de rayos más antiguos encuentran soluciones aproximadas a la ecuación de renderizado. También demostró que la ecuación de renderizado es equivalente a la ecuación de radiosidad resuelta por el método de renderizado de radiosidad ; sin embargo, el método de radiosidad asume que las superficies son lambertianas , y su uso para materiales no lambertianos produce valores inexactos (sesgados). El sesgo adicional se debe a que el método de radiosidad utiliza aproximaciones de elementos finitos de las superficies. Kajiya adaptó los métodos de trazado de rayos distribuidos existentes para resolver la ecuación de renderizado (es decir, para encontrar valores de radiancia en puntos elegidos de las superficies para una solución de estado estacionario o de equilibrio para el transporte de luz en la escena) de manera imparcial, utilizando la integración de Monte Carlo. [ 8 ] [ 12 ] : 9 [ 1 ] : 31.10 [ 13 ] : 626
En el trazado de rayos recursivo al estilo Whitted , la integral del lado derecho de la ecuación se reemplaza por una suma de las contribuciones de rayos específicos reflejados y refractados, y la luz directa que llega al punto desde todas las fuentes de luz en la escena (las luces pueden ser puntuales o direccionales, por lo que la iluminación se puede evaluar fácilmente, o se puede usar alguna aproximación para otros tipos de luces). Se puede agregar un "término ambiental" constante para aproximar la iluminación global . El trazado de rayos distribuido introdujo el uso de la integración de Monte Carlo para renderizar la reflexión gruesa, muestreando múltiples direcciones en cada rebote en lugar de usar la contribución de una sola dirección, pero la iluminación global difusa generalmente todavía se aproximaba usando un término ambiental. [ 8 ]
El problema de usar la integración de Monte Carlo para la iluminación global difusa es la alta varianza del resultado (que requiere muchas muestras para reducir el ruido a un nivel aceptable). Para abordar esto, el artículo exploró primero enfoques de muestreo estratificado . El trazado de rayos distribuido permite trazar múltiples rayos ramificados en cada paso, y un método llamado "integración jerárquica", que utiliza la estratificación independiente del dominio de integración en cada paso, se había explorado previamente. Sin embargo, la iluminación global requiere muestrear dominios más grandes de direcciones o puntos de superficie. Se encontró que estratificar adaptativamente estos dominios para reducir la varianza era demasiado difícil. El muestreo de importancia , donde las muestras se eligen de una distribución no uniforme según cuánto es probable que contribuyan al resultado final, se identificó como un enfoque más viable. [ 8 ]
Al utilizar el muestreo de importancia, la integración jerárquica (a través del trazado de rayos recursivo) ya no es necesaria, y esto condujo a la formulación del trazado de trayectorias : [ 8 ] [ 1 ] : 31.17
Este diagrama también muestra un algoritmo alternativo para el trazado de rayos distribuido convencional. En lugar de trazar un árbol ramificado, se traza una trayectoria con rayos seleccionados probabilísticamente. Para escenas con mucha reflexión y refracción, esto reduce drásticamente la cantidad de intersecciones de rayos y objetos que se deben calcular para un píxel dado y acelera notablemente el trazado de rayos con muy poco trabajo de programación. Sin embargo, para esta nueva forma rápida de trazado de rayos —llamada trazado de trayectorias— hemos descubierto que es muy importante mantener la proporción correcta de rayos de reflexión, refracción y sombra que contribuyen a cada píxel.
— James T. Kajiya, "La ecuación de representación" [ 8 ]
Algoritmo
Los trazadores de rayos suelen implementarse utilizando funciones recursivas ; sin embargo, un trazador de trayectorias, por su naturaleza, no necesita ser recursivo y puede utilizar un bucle en su lugar.
Aquí se muestra un pseudocódigo para una función no recursiva que traza una única trayectoria. Puede utilizar la estimación del siguiente evento (NEE) o esperar hasta que la trayectoria alcance una luz por casualidad antes de acumular luz. Utiliza un muestreo ponderado por coseno de las direcciones de los rayos, que es eficaz para superficies difusas (y óptimo para superficies lambertianas ) y simplifica el código: [ 14 ] [ 15 ] [ 16 ]
función TracePath(cameraRay): rayo ← rayo de cámara rendimiento ← 1 valor ← 0 bucle : intersección ← FirstRayIntersection(rayo) si [usando NEE] : lightSample ← SampleLights() valor ← valor + rendimiento × CalcularCantidadDeLuz(rayo, intersección, muestraDeLuz) de lo contrario, si [el objeto de intersección es una luz] : valor ← valor + rendimiento × intersección.luz emitida nuevaDirección ← MuestraPonderadaPorCoseno(intersección.superficieNormal) rendimiento ← rendimiento × π × intersección.BRDF(−rayo.dirección, intersección.superficieNormal, nuevaDirección) rayo.inicio ← intersección.ubicación rayo.dirección ← nuevaDirección q ← CalcularProbabilidadDeTerminación(rendimiento) si random() < q: valor de retorno rendimiento ← rendimiento / (1 - q)
El código utiliza valores de "rayo" que consisten en un punto de inicio en el espacio 3D y un vector de dirección normalizado. Al simular una cámara estenopeica , el rayo de entrada de la cámara debe usar la ubicación de la cámara como punto de inicio y una dirección elegida en función de la ubicación del píxel. La función debe llamarse varias veces para cada píxel, utilizando el promedio de los resultados devueltos como valor final del píxel. La random()función debe devolver un valor entre 0 y 1.
Para simplificar, el código solo funciona con materiales de superficie opacos y asume que la escena está cerrada (los rayos nunca pueden salir de ella). Solo traza una única longitud de onda de luz, pero podría modificarse para trabajar con valores RGB o renderizado espectral (véase más abajo). Se asume que las fuentes de luz manejadas en el caso que no sea NEE son perfectamente difusas (de lo contrario, en lugar de un valor constante de emittedLight, sería necesario evaluar otra función para calcular la cantidad de luz emitida en la dirección opuesta al rayo).
El código utiliza un truco conocido como ruleta rusa para que la función sea imparcial, terminando el bucle de forma probabilística. Si ComputeTerminationProbabilitydevuelve un valor mayor que 0 (o eventualmente lo hace, por ejemplo, cuando throughputcae por debajo de un umbral), el bucle terminará (devolviendo el valor acumulado). Siempre que "q" sea mayor que 0 y el bucle continúe, throughputse incrementa para compensar el hecho de que otras rutas muestreadas pueden haber terminado en ese punto. Esto garantiza que el resultado tenga el valor esperado correcto . [ 17 ] : 2.2.4 [ 18 ] : 13.2.1 [ 12 ] : 67-68
El valor "q" se puede calcular utilizando cualquier heurística (incluso se podría usar una probabilidad constante), pero para que sea efectivo, si throughputcae a un valor muy bajo (cercano a cero), entonces q debería estar cerca de 1. Si se utilizan probabilidades de terminación mayores, las rutas tenderán a ser más cortas, pero la varianza será mayor (habrá menos rutas largas, pero el rendimiento en esas rutas aumentará por un factor mayor, lo que tenderá a producir píxeles brillantes dispersos). [ 17 ] : 2.2.4 [ 19 ] : 5.3.2
CosineWeightedSampleMuestrea direcciones en el hemisferio en un punto de una superficie, con una probabilidad proporcional al coseno del ángulo entre la dirección y la normal de la superficie (equivalente a integrar usando la medida del ángulo sólido proyectado ). Esto se hace comúnmente para superficies difusas y simplifica el código porque el factor coseno en la fórmula de rendimiento y el factor de probabilidad inversa (necesario para el muestreo de importancia ) se cancelan. De lo contrario, el muestreo de dirección generalmente intenta usar probabilidades proporcionales al producto de la BRDF y el factor coseno. Para superficies perfectamente especulares, solo es posible una única dirección y se debe usar un código ligeramente diferente. [ 12 ] : 77,82,172,254 [ 16 ]
El valor BRDF se multiplica por π para cancelar el factor 1/ π incluido en el BRDF por convención. (Esta convención proviene del hecho de que la integral del coseno del ángulo entre la dirección y la normal de la superficie sobre todo el hemisferio es π , por lo que el BRDF para una superficie lambertiana perfecta, no absorbente, debe incluir un factor de normalización de 1/ π para que se evalúe a 1). El factor 1/ π también puede verse como parte de la PDF para el muestreo ponderado por coseno (que también incluye el factor coseno que se ha cancelado), y como necesitamos dividir por la PDF, multiplicamos por π . El código de trazado de ruta de ejemplo a menudo calcula explícitamente la PDF completa para el muestreo ponderado por coseno y luego divide por ella (y multiplica el BRDF por el factor coseno, ya que ya no se cancela); esto es también lo que el código debe hacer si utiliza una distribución distinta a la distribución ponderada por coseno para las direcciones de muestreo. [ 1 ] : 14.9.2
Componentes de un trazador de rayos moderno
Para mejorar el rendimiento y convertir el trazado de rayos en un algoritmo útil para la representación de imágenes complejas y realistas, se incorporan diversas técnicas y mejoras al motor de renderizado .
Muestreo
Muestreo de importancia
El muestreo por importancia es una técnica estándar para reducir la varianza (en este contexto, la magnitud cuadrática media del error) del resultado de la integración de Monte Carlo . Puede reducir significativamente el número de muestras necesarias para renderizar una imagen trazada con una cantidad aceptable de ruido. Consiste en elegir una función de densidad de probabilidad (FDP) que sea aproximadamente proporcional al valor que se está integrando y extraer muestras de esa densidad de probabilidad en lugar de una distribución uniforme . [ 17 ] : 2.2.2 [ 12 ] : 47
Los materiales de superficie no reflejan la misma cantidad de luz en todas las direcciones, por lo que un tipo común de muestreo de importancia utilizado en el trazado de rayos consiste en extraer muestras (en este caso, direcciones de un hemisferio alrededor de un punto de la superficie) de una función de densidad de probabilidad (PDF) que tenga la misma forma que la función de distribución de reflectancia bidireccional (BRDF) utilizada para el material (véase #Funciones de distribución de dispersión más adelante) al elegir una dirección para el siguiente rayo en una trayectoria. Esto es especialmente eficaz para materiales brillantes o relucientes. [ 12 ] : 254
Muestreo de importancia múltiple
El muestreo por importancia requiere seleccionar una única función de densidad de probabilidad (FDP) de la cual extraer las muestras utilizadas para la integración de Monte Carlo , pero a menudo en el trazado de trayectorias, existen múltiples FDP alternativas que se pueden utilizar. Por ejemplo, esto puede ocurrir al integrar una función que es el producto de otras dos funciones, si se conocen buenas FDP para muestrear las dos funciones individualmente, pero no para muestrear el producto. Se debe elegir una de las FDP o encontrar algún método para combinarlas. [ 17 ] : 2.2.3
Un caso común es el muestreo de la cantidad de luz directa de una fuente de luz que se refleja en un punto de la superficie de un objeto hacia la cámara. Al elegir la dirección del rayo a muestrear en el punto de la superficie del objeto, se puede seleccionar un punto aleatorio en la superficie de la fuente de luz (sin utilizar información sobre el material de la superficie del objeto) y luego calcular la dirección del rayo hacia ese punto, o bien se puede muestrear una dirección de rayo proporcional a la función de distribución de reflectancia bidireccional (BRDF) de la superficie del objeto (sin tener en cuenta la ubicación ni la forma de la fuente de luz). La primera estrategia garantiza que el rayo muestreado no pierda la luz, pero en una superficie brillante puede elegir una dirección en la que se refleje muy poca luz hacia la cámara, por lo que es más eficaz para superficies rugosas (difusas). La segunda estrategia suele ser eficaz para superficies brillantes porque probablemente elegirá una dirección en la que el valor de la BRDF sea alto, pero el rayo en la dirección elegida puede perder la luz. [ 12 ] : 252-257
En las formas más simples de trazado de rayos, generalmente se utiliza la primera estrategia para la luz directa, conocida como estimación del siguiente evento (NEE). El algoritmo continúa trazando la trayectoria para muestrear la luz indirecta, utilizando la segunda estrategia para seleccionar la dirección muestreada. Si el siguiente rayo incide por casualidad en la superficie de la luz (que suele ser también un objeto en la escena), la luz emitida por la superficie se ignora, ya que de lo contrario se contaría dos veces. Esto funciona bien para superficies difusas, pero no es óptimo para superficies brillantes. [ 18 ] : 13.2.3
Un método denominado muestreo de importancia múltiple (MIS) permite utilizar ambos tipos de muestreo conjuntamente, evitando situaciones en las que se elige una estrategia subóptima o se cuentan los valores dos veces (lo que provoca sesgo). El MIS calcula ponderaciones para combinar las dos muestras de manera que el resultado sea imparcial, y se asigna una mayor ponderación a la estrategia con mayor probabilidad de ser efectiva. Las ponderaciones se eligen mediante una heurística, y se obtendrá un resultado imparcial si las ponderaciones cumplen ciertas condiciones. Si bien se han ideado diversas heurísticas, algunas de las cuales pueden ser más efectivas en diferentes situaciones, la heurística de equilibrio es ampliamente aplicable. Una variante denominada modelo de una muestra selecciona una estrategia de muestreo en lugar de combinar múltiples muestras, y en esta variante la heurística de equilibrio siempre minimiza la varianza. [ 12 ] : 252-287 [ 17 ] : 2.2.3
El MIS se puede utilizar siempre que se disponga de múltiples funciones de densidad de probabilidad (FDP) alternativas para el muestreo de importancia, y ninguna de ellas sea claramente mejor en todas las situaciones (algunas FDP podrían cubrir solo parcialmente el dominio muestreado). Es un componente esencial del trazado de rutas bidireccional (véase más adelante). [ 12 ] : 251,297
Muestreo cuasi-Monte Carlo
El algoritmo básico de trazado de rayos utiliza un generador de números aleatorios para elegir las direcciones de los rayos que se muestrean en cada punto de la trayectoria (y en los puntos de las luces, si se utiliza la estimación del siguiente evento). Esto garantiza que el resultado sea imparcial y evita la creación de artefactos visibles en la imagen. Sin embargo, cuando se repite el trazado de rayos y se promedian las muestras, debido a que las direcciones muestreadas son completamente aleatorias, no se muestreará el dominio de integración de manera uniforme (habrá agrupaciones y huecos en las direcciones muestreadas). Esto es normal e inevitable para la integración Monte Carlo estándar , pero existen técnicas llamadas técnicas cuasi-Monte Carlo que pueden reducir la varianza al hacer que las muestras se distribuyan de manera más uniforme. Esto significa que las muestras ya no tienen las propiedades de aleatoriedad requeridas por la integración Monte Carlo estándar, por lo que debe hacerse con cuidado para evitar sesgos y artefactos. [ 20 ] : 8.2.2
La forma más sencilla de hacerlo es dividir el dominio que se está muestreando (por ejemplo, el hemisferio de direcciones de rayos que salen de una superficie) en segmentos y elegir un punto aleatorio en cada segmento. Esto se denomina muestreo estratificado , y sus inconvenientes son que el número de muestras que se toman debe conocerse de antemano, y aún puede producirse agrupamiento (las muestras de segmentos adyacentes pueden estar muy cerca si ambas se encuentran en el borde de un segmento). [ 17 ] : 2.2.1 [ 21 ]
Si no se conoce de antemano el número de muestras, se pueden utilizar métodos denominados secuencias de baja discrepancia para generar muestras que tienden a estar dispersas y cubrir el dominio de manera uniforme. Entre las secuencias más populares con esta propiedad se encuentran las secuencias de Halton y Sobol . Estas son secuencias predefinidas (no aleatorias), pero en los trazadores de rayos modernos se permutan ( se mezclan ) para hacerlas más aleatorias. [ 22 ] [ 23 ]
El muestreo estratificado y las secuencias de baja discrepancia pueden volverse menos efectivos a medida que aumenta la dimensión del dominio muestreado. El trazado de rayos implica la generación de muestras de muy alta dimensión. Por ejemplo, el trazado de rayos simple de superficies opacas (sin muestreo de luz) utiliza muestras cuya dimensión es igual al doble del número de rebotes en la trayectoria, porque cada dirección del rayo es una muestra 2D en un hemisferio. Si se utiliza el muestreo estratificado o una secuencia de baja discrepancia de forma independiente para cada rebote, es probable que existan correlaciones entre las direcciones de rebote, lo que causará sesgo en la imagen, y además las muestras completas (incluidas todas las direcciones de rebote) no cubrirán el dominio de manera uniforme. Los trazadores de rayos suelen utilizar secuencias de muy alta dimensión y baja discrepancia, pero esto significa que el muestreo de rebotes individuales (considerados independientemente como muestras 2D) puede no ser óptimo. Una técnica simple llamada relleno mejora esto, y una técnica más costosa llamada transporte óptimo segmentado genera secuencias donde todas las proyecciones de menor dimensión de las muestras multidimensionales tienden a distribuirse uniformemente, mediante la optimización repetida de cortes 1D. [ 21 ] [ 24 ]
Las técnicas anteriores garantizan que el conjunto de trayectorias muestreadas para cada píxel individual esté bien distribuido. Las técnicas basadas en ruido azul pueden ayudar a asegurar que las muestras de píxeles adyacentes tiendan a estar ampliamente separadas. Esto suele ser más importante cuando solo se traza un pequeño número de trayectorias por píxel. [ 25 ] : 8.1.6 [ 23 ] : 8.7.6
Renderizado espectral
Los gráficos por computadora suelen representar los valores de luz como vectores de componentes rojo, verde y azul . El color o albedo de las superficies se representa de manera similar como multiplicadores separados para rojo, verde y azul. Si bien este enfoque puede ser adecuado en algunas situaciones (por ejemplo, es preciso cuando se suman los valores de luz), cuando se aplica al trazado de rayos equivale a simular una escena iluminada por exactamente tres longitudes de onda de luz, lo cual no es realista. Los trazadores de rayos modernos ofrecen la opción de usar muestras aleatorias de longitudes de onda en el espectro visible de la luz, lo que se denomina renderizado espectral . Este es ahora un enfoque estándar cuando el objetivo es un renderizado realista y basado en la física. [ 1 ] : 331 [ 26 ]
Por razones de rendimiento, normalmente se muestrean varias longitudes de onda (por ejemplo, cuatro) a la vez (se traza una única trayectoria, pero los cálculos de iluminación se realizan para múltiples longitudes de onda). Esto también puede reducir el ruido de color que se produce con el muestreo espectral. Las longitudes de onda se convierten normalmente en valores RGB cuando se acumulan las contribuciones de las trayectorias. [ 26 ]
Este enfoque permite simular la dispersión cromática (por ejemplo, los "arcoíris" visibles cuando la luz incide sobre un objeto de vidrio tallado). También permite renderizar escenas con fuentes de luz y materiales más realistas, y modelar correctamente la iluminación global difusa y los medios participantes, cuando la luz rebota varias veces entre superficies coloreadas o se dispersa por medios volumétricos coloreados (sin colores exagerados ni cambios de color antinaturales). [ 26 ]
Guía de caminos
Cuando la iluminación indirecta varía considerablemente con la dirección, el muestreo de direcciones utilizando únicamente la función de distribución de dispersión bidireccional (BSDF) del material de la superficie puede resultar ineficiente. En tales casos, la guía de trayectorias construye una representación de la iluminación indirecta en la escena y la utiliza para extraer muestras. Los métodos prácticos pueden realizar esto iterativamente durante el renderizado, aprendiendo un campo de radiancia espacio-direccional aproximado de forma imparcial. [ 27 ] [ 28 ]
Estructuras de datos espaciales
aceleración de la intersección rayo-objeto
Una de las operaciones más comunes y costosas que realiza un trazador de rayos es encontrar el primer objeto, y el punto de superficie correspondiente, intersectado por un rayo de luz que parte de un punto determinado y viaja en una dirección específica (una operación similar, pero más sencilla, consiste en comprobar si hay algo que bloquee la luz entre dos puntos en el espacio). Para acelerar este proceso, los trazadores de rayos utilizan una estructura de datos espaciales 3D . La estructura más utilizada actualmente es la jerarquía de volúmenes delimitadores (BVH), y las GPU recientes proporcionan una versión acelerada por hardware de esta. Sin embargo, también se han utilizado otras estructuras, como árboles k -d y octrees . Algunos trazadores de rayos requieren que todos los objetos se representen mediante mallas triangulares , lo que simplifica el código y las estructuras de datos (la aceleración por hardware también suele estar optimizada para triángulos). [ 29 ] [ 1 ] : 1067-1107 [ 30 ] : xvii
aceleración del muestreo de luz
La generación de muestras de luz directa (para la estimación del siguiente evento ) es más eficaz si se utiliza el muestreo por importancia , que requiere muestrear las luces proporcionalmente a su brillo e (idealmente) inversamente proporcional al cuadrado de la distancia a la luz. Cuando la escena tiene un gran número de luces, resulta prohibitivamente costoso examinar todas las luces y calcular ponderaciones antes de elegir un pequeño número de luces para muestrear. [ 31 ]
El muestreo de luz BVH , que utiliza una estructura de datos de árbol espacial, puede acelerar el muestreo teniendo en cuenta la ubicación de las luces. (Un enfoque que solo considera el brillo, llamado muestreo de potencia , utiliza una estructura de datos no espacial más simple). Las luces cercanas se agrupan en el árbol y se almacena el brillo total de las luces en cada rama. Los límites espaciales de las ramas permiten omitir rápidamente las luces que se encuentran detrás de la superficie para la que se estima la luz directa, y también permiten ponderar grupos de luces según su dirección y distancia. El uso de un árbol para el muestreo es imparcial porque los datos agregados solo se utilizan para calcular las probabilidades de muestreo, no la cantidad de luz utilizada para la renderización. Un algoritmo sesgado llamado lightcuts utiliza un árbol similar, pero aproxima grupos de luces distantes (ramas del árbol) tratándolas como una sola luz, en lugar de muestrear luces individuales según su importancia. [ 31 ] [ 19 ] : 7.8
Convertir muestras en imágenes
Filtración
Si el trazado de rayos solo utiliza rayos de cámara que corresponden a los centros exactos de los píxeles de la imagen, puede producirse un aliasing severo . Los trazadores de rayos suelen eliminar o reducir el aliasing filtrando las frecuencias superiores a las que puede representar la resolución de la imagen. Para ello, utilizan un núcleo de filtro, como un filtro gaussiano , o filtros como los de Mitchell-Netravali o el filtro de Lanczos , que mejoran la nitidez pero pueden introducir artefactos de anillo . Se muestrean ubicaciones alrededor del centro del píxel, ponderadas por el núcleo del filtro (denominado muestreo de importancia del filtro ), o bien se muestrean ubicaciones en el plano de la cámara de forma uniforme (normalmente con muestreo estratificado, de modo que se toma el mismo número de muestras en el cuadrado alrededor de cada píxel) y luego se añaden muestras a cualquier píxel cuyos núcleos se intersequen con la muestra (denominado muestreo de importancia ponderado ). Este último enfoque puede reducir ligeramente la varianza, pero puede no ser compatible con los eliminadores de ruido (por ejemplo, las muestras ocasionales muy brillantes llamadas "luciérnagas" se distribuyen por un vecindario de píxeles y no se pueden eliminar fácilmente). [ 11 ] : 5.4.3 [ 32 ]
Eliminación de ruido
Incluso cuando se promedian miles de trayectorias, el resultado del trazado de trayectorias suele contener ruido visible. Si bien la forma más fiable (e imparcial) de reducir el ruido es trazar más trayectorias (o realizar mejoras como un mejor muestreo de importancia), se han utilizado muchos enfoques sesgados para eliminar o reducir el ruido. [ 33 ] [ 34 ]
Las imágenes trazadas a menudo contienen píxeles brillantes, conocidos coloquialmente como "luciérnagas", que pueden aparecer cuando una ruta considerada de baja prioridad por el muestreo de importancia (con poca probabilidad de producir un valor brillante) interseca una fuente de luz o un área brillante de la escena, o cuando la luz indirecta entra por un hueco estrecho y muy pocas rutas lo atraviesan. Aunque técnicamente estas muestras brillantes son necesarias para producir una imagen imparcial, subjetivamente resultan poco útiles y pueden aumentar considerablemente la varianza. Se han utilizado muchas heurísticas para identificar y eliminar las luciérnagas, por ejemplo, reemplazándolas con el promedio de los píxeles circundantes o distribuyendo su brillo a los píxeles cercanos. Esto es similar a la detección de valores atípicos en estadística. A veces se filtran muestras individuales, en lugar de los valores de píxeles acumulados. Se han probado técnicas relacionadas con la estimación de densidad , utilizando núcleos de ancho variable. [ 33 ]
Muchas técnicas utilizan la detección de bordes para permitir filtros de reducción de ruido que difuminan la imagen a la vez que preservan los bordes nítidos de los objetos. La detección de bordes para la reducción de ruido en una imagen renderizada suele utilizar datos distintos del brillo final, como la profundidad y el vector normal del primer punto intersectado por el rayo de la cámara. Los filtros que preservan los bordes y que no dependen de este tipo de datos (utilizando solo los valores de color y brillo de los píxeles) incluyen filtros bilaterales , filtros guiados y filtros de medias no locales . Se han probado técnicas basadas en ondículas y otros filtros multiescala, que pueden manejar las características de frecuencia variables de una imagen (por ejemplo, el desenfoque causado por la profundidad de campo). [ 33 ] [ 34 ]
En ocasiones, las contribuciones de luz directa e indirecta a un píxel se procesan y eliminan el ruido por separado, lo que permite preservar el detalle en la iluminación directa, al tiempo que se suaviza la luz indirecta (que suele ser más ruidosa). Algoritmos más complejos eliminan el ruido de la reflexión especular por separado (ya que varía de forma diferente con la ubicación del píxel), y algunos trabajan con muestras individuales y construyen un modelo estadístico para el campo de luz local alrededor de cada punto visible en una superficie. [ 33 ] [ 34 ]
Más recientemente, se han utilizado redes neuronales convolucionales para implementar filtros de reducción de ruido, entrenando la red neuronal con un gran conjunto de datos de copias ruidosas y sin ruido de las mismas imágenes. Estas redes neuronales pueden utilizar datos como profundidad y normal, albedo de superficie y rugosidad/brillo de superficie como parte de sus entradas. [ 33 ]
Un enfoque alternativo o complementario es el muestreo adaptativo , que toma muestras adicionales en regiones de la imagen donde la varianza es mayor (esto es difícil de hacer sin introducir sesgo). [ 35 ] [ 34 ]
Mapeo de tonos
El resultado del trazado de rayos son valores de brillo lineal para los píxeles, que luego deben convertirse en una imagen visible o un fotograma de vídeo o película. El rango de valores de brillo puede ser mayor que el que puede mostrar un monitor de ordenador estándar o que el que puede representar un formato de archivo que utiliza valores de color de 8 bits, como JPEG o PNG . Las imágenes suelen contener zonas muy brillantes o píxeles donde se ve directamente una fuente de luz, como el sol. Si se reduce el brillo de toda la imagen de forma que no se recorten los píxeles más brillantes , el resto de la escena a menudo quedará demasiado oscura. [ 36 ] : Ch20
Los métodos denominados mapeo tonal o reproducción tonal se utilizan a menudo para transformar (o mapear ) los valores de píxeles en imágenes de alto rango dinámico (HDR) al rango de valores permitidos por los formatos de archivo comunes y los monitores de ordenador u otras pantallas, intentando al mismo tiempo hacer visibles los detalles tanto en las sombras como en las zonas más brillantes, incorporando a menudo modelos de cómo responde la visión humana a las variaciones de brillo. El objetivo suele ser producir una impresión subjetiva del brillo real de la escena, a pesar del rango reducido de valores de píxeles. Existen muchos métodos y curvas de mapeo tonal diferentes, a menudo con parámetros para ajustarlos. Algunos métodos pretenden reproducir el aspecto de las imágenes capturadas en película fotográfica y pueden alterar los colores y la saturación de la imagen. [ 37 ] : 8.2.2 [ 36 ] : Ch20
No es necesario implementar el mapeo de tonos como parte del trazador de rayos. Si la imagen renderizada se exporta a un formato HDR lineal (por ejemplo, OpenEXR ), el mapeo de tonos se puede aplicar posteriormente (lo cual puede ser preferible, ya que el método o los parámetros del mapeo de tonos se pueden modificar sin volver a renderizar la imagen).
Funciones de distribución de dispersión
Los objetos reales nunca son espejos perfectamente lisos (aunque en los gráficos por computadora a menudo se simulan espejos perfectos por conveniencia y simplicidad). Cuando la luz incide sobre un objeto opaco, siempre se refleja (o dispersa ) en múltiples direcciones. La cantidad de luz que se refleja en cada dirección depende principalmente del ángulo con el que llega con respecto a la normal de la superficie . Los materiales brillantes, a menudo llamados materiales especulares , reflejan más luz en ángulos cercanos al ángulo en el que un espejo perfecto reflejaría la luz, produciendo un brillo distintivo (llamado brillo especular ) cuando se refleja una fuente de luz brillante. Por el contrario, los materiales que dispersan más la luz (reflejándola en un rango más amplio de direcciones sin un pico pronunciado) se denominan rugosos o difusos . En general, no existe una distinción clara entre materiales especulares y difusos; por ejemplo, una superficie difusa puede tener una capa de barniz que le confiere brillos especulares. [ 38 ] [ 39 ] [ 1 ] : 26.10,Ch27

Los materiales en los que la cantidad de luz reflejada en una dirección particular depende únicamente de los ángulos entre el rayo de luz incidente , el rayo saliente o reflejado y la normal a la superficie se denominan isótropos . En este caso, el material de la superficie no tiene una orientación particular (rotar la superficie alrededor de la normal no cambia la forma en que se refleja la luz). Los materiales en los que la orientación sí importa se denominan anisótropos e incluyen materiales como el acero cepillado o el aluminio. Aunque muchos materiales del mundo real son sutilmente anisótropos, la anisotropía suele ignorarse en los gráficos por computadora, ya que es más sencillo y eficiente tratar los materiales como isótropos. [ 38 ] [ 39 ]
Un caso extremo es un material "perfectamente rugoso" donde la cantidad de luz reflejada no depende del ángulo de la luz incidente y no hay reflejos. Un ejemplo de este tipo de material es el material lambertiano comúnmente utilizado en gráficos por computadora (no existe en el mundo real, pero un material llamado Spectralon , que es un polvo de polímero, es muy similar). Para un material lambertiano, la cantidad de luz reflejada es proporcional al coseno del ángulo entre el rayo saliente y la normal de la superficie. [ 16 ] [ 1 ] : 27.5.2


Los efectos mencionados anteriormente pueden describirse mediante una función denominada función de distribución de reflectancia bidireccional (BRDF). Los parámetros de estas funciones son las direcciones del rayo incidente y del rayo saliente con respecto a un sistema de referencia en la superficie (existen diversas formas de representar las direcciones numéricamente). El resultado de la función es un factor por el cual se debe multiplicar la cantidad de luz incidente para obtener la cantidad de luz saliente. La BRDF, tal como se define habitualmente, no incluye el factor de reflectancia lambertiana mencionado anteriormente (el coseno del ángulo entre el rayo saliente y la normal a la superficie), por lo que la BRDF para una superficie lambertiana es una función constante. Omitir este factor confiere a la BRDF la propiedad de reciprocidad : intercambiar los rayos incidente y saliente en los parámetros de la función no altera el resultado (por convención, ambas direcciones apuntan alejándose de la superficie). La BRDF se escala adecuadamente para su uso en las ecuaciones de transporte de luz (donde se multiplica por los valores de luz incidente y se integra), y devuelve un valor de 1/ π para un material lambertiano que no absorbe luz. [ 38 ] [ 1 ] : 26.10,Ch27 [ 12 ] : 3.6
Además de la reciprocidad, una propiedad importante de las BRDF válidas es que conservan la energía : cuando la BRDF se utiliza en ecuaciones de transporte de luz, la cantidad total de luz reflejada nunca debe ser mayor que la cantidad de luz que llega a la superficie. (Estas propiedades no se cumplen para longitudes de onda individuales cuando se observan efectos como la fluorescencia). La BRDF también debe devolver siempre un valor no negativo. [ 38 ] [ 1 ] : Ch27
Las BRDF pueden ser diferentes para cada longitud de onda de la luz. Por ejemplo, los materiales no metálicos suelen tener reflejos blancos, reflejando todas las longitudes de onda casi por igual en ciertos ángulos, a la vez que reflejan la luz de forma difusa dependiendo de la longitud de onda (lo que le da al material su color). Las BRDF que varían con la longitud de onda también pueden modelar materiales iridiscentes . [ 38 ] [ 40 ]
Las BRDF son una parte fundamental del trazado de rayos: se evalúan en cada vértice de la trayectoria donde un rayo interseca una superficie (para calcular el rendimiento de la parte restante de la trayectoria), y también al calcular la iluminación directa en los puntos de la superficie. Las BRDF no describen las propiedades de los materiales transparentes o parcialmente transparentes (para los cuales se necesitan otros tipos de funciones de distribución de dispersión). Sin embargo, las BRDF son útiles porque muchos materiales son prácticamente opacos a la luz visible, o tienen una cantidad muy pequeña de translucidez cerca de la superficie que puede ignorarse o aproximarse mediante la BRDF. [ 38 ]
Aunque los datos para las BRDF se pueden obtener midiendo la reflectancia de superficies reales, las BRDF utilizadas para la renderización en la práctica suelen ser funciones matemáticas (a menudo diseñadas para simular propiedades físicas simplificadas de superficies reales) que son razonablemente eficientes de evaluar y producen efectos similares a los de los materiales reales. A menudo tienen parámetros como la "rugosidad" que se pueden modificar fácilmente. En ocasiones, se superponen varias BRDF simples (a menudo llamadas lóbulos debido a la forma de las funciones). [ 39 ] [ 1 ] : Ch27
Las BRDF no incluyen, por sí solas, información sobre la textura de una superficie. En la representación realista, a menudo se codifican parámetros de color y "rugosidad" (y a veces orientación y cantidad de anisotropía) mediante mapeo de texturas y se utilizan para modificar la BRDF para puntos individuales en la superficie. [ 39 ] [ 41 ] [ 1 ] : 27.15
Un tipo de función similar que se utiliza cuando la luz atraviesa la superficie de un material transparente es la función de distribución de transmitancia bidireccional (BTDF). Un término que incluye tanto las BRDF como las BTDF es la función de distribución de dispersión bidireccional (BSDF). Para manejar la dispersión general en materiales transparentes, la renderización volumétrica utiliza una función similar (pero con una definición incompatible) llamada función de fase . [ 38 ] [ 42 ] [ 1 ] : 14.9
Renderizado volumétrico
El trazado de rayos volumétrico se utiliza para renderizar escenas que contienen medios participantes , que son regiones 3D del espacio (en lugar de las superficies de los objetos) que emiten luz, o en las que la luz puede ser absorbida o dispersada. A menudo se piensa que los medios participantes contienen partículas, de modo que un rayo de luz que pasa a través del medio tiene una probabilidad mayor de interactuar con una partícula (y ser absorbido o dispersado) cuanto más lejos viaja el rayo. Los trazadores de rayos que realizan renderizado volumétrico generalmente permiten combinarlo con el renderizado de superficies. La ecuación de renderizado de Kayija se puede generalizar para el trazado de rayos volumétrico; sin embargo, existen otras ecuaciones de transporte de luz volumétrica que pueden conducir a algoritmos más prácticos (así como la forma original de la ecuación de renderizado generalmente se convierte para usar integrales sobre las direcciones de los rayos para el trazado de rayos estándar). [ 43 ] [ 42 ] [ 8 ]
El trazado de rayos volumétrico se realiza comúnmente hacia atrás desde la cámara, como el trazado de rayos estándar, aprovechando la propiedad de reciprocidad de la mayoría de las interacciones de la luz. Los rayos de la cámara se muestrean (o las direcciones de los rayos para reflexiones o iluminación global que llega a un punto en una superficie) como de costumbre, y luego se generan eventos de dispersión cuando un rayo pasa a través de un medio participante que puede dispersar la luz. La probabilidad de estos eventos de dispersión (y la distancia que suele recorrer el rayo antes del siguiente evento) está relacionada con la densidad del material. Cuando un rayo se dispersa, se emite un nuevo rayo en la nueva dirección, de forma similar a la dispersión desde una superficie, con la probabilidad de cada nueva dirección determinada por una función de densidad de probabilidad llamada función de fase . [ 43 ] [ 42 ]
El trazado de rayos volumétrico también utiliza la integración para calcular cuánta luz se absorbe y se dispersa cuando un rayo pasa por el espacio (llamada atenuación ), y cuánta luz se emite de vuelta a lo largo del rayo (teniendo en cuenta la absorción y la dispersión a lo largo del rayo) si el medio participante es emisivo. [ 42 ]
Todas estas operaciones son mucho más sencillas y rápidas si el medio participante es homogéneo (tiene la misma densidad en todas partes con respecto a la dispersión, la absorción y la emisión). En ese caso, la integración se puede realizar analíticamente para calcular la atenuación y la emisión, y también existe una forma más sencilla de generar eventos de dispersión con la distribución de probabilidad correcta. Los materiales que normalmente se representan como medios homogéneos (que aún pueden tener formas complejas) incluyen el agua y el vidrio coloreado. La fórmula utilizada para la absorción homogénea se conoce como la ley de Beer-Lambert o ley de Beer. [ 42 ]
Cuando el medio participante es inhomogéneo (tiene densidad u otras propiedades que varían espacialmente), se deben utilizar algoritmos más complejos y lentos. Este tipo de medios incluye nubes, niebla, humo y fuego. Los datos de entrada para la representación de estos materiales suelen ser datos volumétricos (estructurados de forma similar a los vóxeles ). Para realizar operaciones como la integración, el código a menudo necesita recorrer el medio mediante rayos, consultando datos para puntos a lo largo del rayo. Esto se puede hacer de forma dispersa (examinando el material en solo unos pocos puntos, generalmente elegidos al azar) o densa (examinando puntos muy próximos), según el algoritmo. El algoritmo de dispersión nula, de uso común , trata el medio como homogéneo al elegir qué puntos muestrear, lo que le permite muestrear el medio de forma dispersa, y puede ser muy eficiente si el medio es casi homogéneo. [ 44 ] [ 45 ]
Trazado de trayectorias bidireccional
El muestreo de la integral se puede realizar mediante cualquiera de los dos enfoques distintos siguientes:
- El trazado de rayos inverso consiste en generar trayectorias partiendo de la cámara y rebotando por la escena hasta encontrar una fuente de luz. Se denomina "inverso" porque el inicio de la trayectoria desde la cámara y su movimiento hacia la fuente de luz es opuesto a la dirección real de la luz. Aun así, produce el mismo resultado, ya que todos los sistemas ópticos son reversibles.
- El trazado de luz (o trazado de trayectoria hacia adelante ) consiste en generar trayectorias que parten de las fuentes de luz y rebotan por la escena hasta que llegan a la cámara.
En ambos casos, se puede utilizar una técnica llamada estimación del siguiente evento para reducir la varianza. Esta técnica funciona muestreando directamente una característica importante (la cámara en el caso del trazado de luz , o una fuente de luz en el caso del trazado de ruta inverso ) en lugar de esperar a que una ruta la alcance por casualidad. Esta técnica suele ser eficaz, pero se vuelve menos útil cuando hay BRDF especulares o casi especulares. Para el trazado de ruta inverso , esto crea una alta varianza para las rutas cáusticas que interactúan con una superficie difusa y luego rebotan en una superficie especular antes de alcanzar una fuente de luz. La estimación del siguiente evento no se puede utilizar para muestrear estas rutas directamente desde la superficie difusa, porque la interacción especular se encuentra en el medio. Del mismo modo, no se puede utilizar para muestrear rutas desde la superficie especular porque solo hay una dirección en la que la luz puede rebotar. El trazado de luz tiene un problema similar cuando las rutas interactúan con una superficie especular antes de alcanzar la cámara. Debido a que esta situación es mucho más común, y a que los objetos de vidrio ruidosos (o completamente negros) resultan muy molestos visualmente, el trazado de rayos inverso es el único método que se utiliza en la práctica para el trazado de rayos unidireccional.
El trazado de trayectorias bidireccional proporciona un algoritmo que combina ambos enfoques y puede producir una varianza menor que cualquiera de los métodos por separado. Para cada muestra, se trazan dos trayectorias de forma independiente: una desde la fuente de luz y otra desde la cámara. Esto produce un conjunto de posibles estrategias de muestreo, donde cada vértice de una trayectoria se puede conectar directamente con cada vértice de la otra. Los algoritmos originales de trazado de luz y trazado de trayectorias inverso son casos especiales de estas estrategias. Para el trazado de luz , se conectan los vértices de la trayectoria de la cámara directamente con el primer vértice de la trayectoria de luz. Para el trazado de trayectorias inverso , se conectan los vértices de la trayectoria de luz con el primer vértice de la trayectoria de la cámara. Además, existen varias estrategias de muestreo completamente nuevas, donde se conectan vértices intermedios. La ponderación de todas estas estrategias de muestreo mediante el muestreo de importancia múltiple crea un nuevo muestreador que puede converger más rápido que el trazado de trayectorias unidireccional, aunque se requiere más trabajo para cada muestra. Esto funciona particularmente bien para cáusticas o escenas iluminadas principalmente mediante iluminación indirecta.
Transporte ligero de la metrópolis
El muestreo de importancia puede utilizarse para mejorar la eficiencia de la integración de Monte Carlo mediante el uso de una distribución de muestra aproximadamente proporcional al valor que se integra. Sin embargo, esto solo funciona si se conoce una buena distribución y existe una forma práctica de extraer muestras de ella. Las distribuciones de muestra utilizadas en el trazado de trayectorias suelen estar lejos de ser óptimas, especialmente si los rayos que parten de la cámara deben reflejarse o refractarse para alcanzar la luz. Una forma alternativa de realizar la integración de MC, el método de Metropolis , utiliza un paseo aleatorio para generar muestras con una distribución mejorada. Es un método de Monte Carlo de cadena de Markov (MCMC) que data de 1953 (extendido por Hastings en 1970), pero su primer uso publicado en el trazado de trayectorias, denominado transporte de luz de Metropolis (MLT), no se produjo hasta 1997, por Veach y Guibas (aunque otros investigadores habían explorado previamente el uso de MCMC para encontrar el estado de equilibrio para el transporte de luz ). [ 46 ] [ 47 ] [ 8 ]
En el muestreo de importancia estándar, las muestras se generan de forma independiente, por ejemplo, muestreando direcciones de rayos y puntos en luces de área dentro de una función de trazado de ruta que toma una lista de números aleatorios como entrada (o utiliza llamadas sucesivas a un generador de números pseudoaleatorios ). Con el método de Metropolis, las muestras (llamadas propuestas ) se generan a partir de otras muestras modificándolas aleatoriamente. En el contexto de MLT, las muestras son rutas completas desde la cámara hasta la fuente de luz, y las propuestas se llaman mutaciones (de rutas). El principal beneficio del algoritmo radica en su capacidad para generar nuevas rutas que son "cercanas" a las existentes, por lo que es probable que sean buenas rutas para el muestreo de importancia si la ruta original era buena. Si estas rutas se utilizaran en el muestreo de importancia estándar, el trazador de ruta necesitaría conocer la probabilidad absoluta de generar cada ruta, lo cual probablemente sea intratable de calcular, pero el método de Metropolis solo requiere conocer la probabilidad condicional de generar cada ruta mutada dada la ruta anterior (y la probabilidad condicional de la transformación inversa). [ 46 ] [ 47 ] [ 48 ]
Se utiliza una función objetivo (típicamente la luminancia de la luz que aporta a la imagen una trayectoria determinada) para guiar el muestreo. Una vez generada una nueva trayectoria a partir de una existente, se evalúa la función objetivo para la nueva trayectoria y, a continuación, el método de Metropolis proporciona una fórmula para decidir (probabilísticamente) si se debe utilizar la nueva trayectoria (continuando el recorrido aleatorio en el "espacio de trayectorias" en esa dirección) o mantener la trayectoria anterior e intentarlo de nuevo. Se dice que las trayectorias (propuestas) elegidas son aceptadas . Las trayectorias con una función objetivo más alta tienen mayor probabilidad de ser aceptadas, y las trayectorias inválidas (por ejemplo, si algún borde de la trayectoria está bloqueado por otro objeto) nunca se aceptan. [ 46 ] [ 47 ] [ 48 ]
Si bien el método Metropolis podría, en teoría, aplicarse al trazado de ruta unidireccional estándar (que parte de la cámara) y utilizarse para generar muestras para un solo píxel a la vez, Veach y Guibas estaban interesados en usarlo para escenarios de iluminación "difíciles" donde el trazado de ruta bidireccional suele ser útil; un paso inicial de generación de ruta y un paso de normalización (que estima el brillo general de la imagen) también harían que el método fuera ineficiente para píxeles individuales. MLT permite que las rutas generadas "vaguen" por toda la imagen, contribuyendo a cualquier píxel (de forma similar a las rutas utilizadas para las cáusticas en el trazado de ruta bidireccional). [ 47 ] [ 12 ]
MLT necesita generar una muestra inicial imparcial para usarla como ruta "semilla" antes de poder comenzar a generar mutaciones. Esto generalmente se hace mediante remuestreo, generando muestras (ponderadas) con una distribución proporcional a la función objetivo. Se utilizan nuevas rutas semilla cada cierto número de mutaciones para ayudar a asegurar que todo el espacio de rutas se muestree adecuadamente. El algoritmo original seleccionó rutas semilla de conjuntos de rutas generadas por trazado de ruta bidireccional. [ 47 ] [ 12 ]
Mutaciones utilizadas en el algoritmo MLT original [ 47 ] [ 12 ] En las siguientes descripciones, un "vértice especular" es un punto de la superficie donde se produce reflexión o refracción con muy poca dispersión de la luz (por ejemplo, un punto en la superficie del vidrio o del agua, o en un espejo), y un "vértice difuso" es un punto en una trayectoria que dispersa la luz de forma difusa hacia la cámara.
- Mutación bidireccional: una porción elegida al azar del camino (en cualquiera de los extremos, o en el medio, quizás de longitud cero) se reemplaza por un nuevo subcamino (quizás de longitud cero).
- Perturbación de la lente: el primer vértice no especular después de que la cámara se desplaza ligeramente cambiando la dirección del rayo de la cámara y encontrando el nuevo primer vértice en una superficie difusa.
- Perturbación cáustica: similar a la perturbación de lente, pero omite un vértice difuso inmediatamente después de la cámara y cualquier vértice especular subsiguiente, y luego perturba la dirección del rayo de luz que regresa desde la fuente de luz o el siguiente vértice difuso.
- Perturbación multicadena: permite perturbar un vértice difuso al que se llega a través de vértices especulares tanto de la cámara como de la fuente de luz (por ejemplo, para cáusticas en el fondo de una piscina).
- Mutación de subtrayectoria de lente: reemplaza el rayo de la cámara y los vértices especulares subsiguientes para generar una trayectoria para un nuevo píxel (generalmente un píxel cercano). Este reemplazo se realiza de forma estratificada para asegurar la cobertura de toda la imagen.
Espacio de muestra primario Transporte ligero de Metrópolis
Debido a que MLT, tal como se propuso originalmente, genera trayectorias de una manera muy diferente al trazado de trayectorias estándar (incluido el trazado de trayectorias bidireccional), puede ser difícil agregar MLT a los trazadores de trayectorias existentes o incorporarlo como parte de un trazador de trayectorias que realiza múltiples tipos de trazado de trayectorias. El transporte de luz de Metropolis en el espacio de muestra primario (PSSMLT) resuelve esto aprovechando el hecho de que en el trazado de trayectorias estándar la generación de muestras está impulsada por un suministro de números aleatorios (o números cuasialeatorios de secuencias de baja discrepancia) que se utilizan para seleccionar las direcciones de los rayos y otras variables aleatorias en cada etapa del trazado de trayectorias. La secuencia de números aleatorios, generalmente números en el intervalo [0, 1) , utilizada para generar una muestra individual particular es una representación de la muestra en un dominio llamado espacio de muestra primario . El trazado de trayectorias puede verse como una integración de Monte Carlo utilizando muestreo uniforme en este espacio de muestra (en lugar de utilizar muestreo de importancia en el espacio de trayectorias). [ 46 ] [ 48 ]
Dado que los trazadores de ruta suelen proporcionar múltiples formas de generar estos números aleatorios, generalmente es posible permitir que la generación de los números se base en el método de Metropolis. Esto permite que una implementación de MLT utilice código estándar de trazado de ruta para evaluar las muestras, lo que reduce considerablemente la cantidad de código nuevo que se debe escribir. Se pueden generar rutas mutadas modificando ligeramente los números aleatorios, en lugar de realizar operaciones complejas sobre las rutas. Debido a que las probabilidades de transición de ruta a ruta en PSSMLT suelen ser simétricas (la probabilidad es la misma en ambas direcciones), los cálculos son mucho más sencillos. [ 46 ] [ 48 ]
Sin embargo, PSSMLT suele ser mucho menos eficaz que el MLT tradicional porque normalmente no puede modificar una pequeña parte de la ruta y conservar el resto (lo que mejora enormemente la eficiencia para explorar rutas largas en MLT). En lugar de los cinco tipos de mutación especializados que utiliza el MLT tradicional (por ejemplo, añadir o eliminar uno o más vértices de la ruta en medio de la misma), normalmente solo utiliza pasos grandes y pequeños que modifican todos los números. [ 46 ] [ 48 ]
El transporte de luz de Metropolis multiplexado (MMLT), diseñado para el espacio de muestra primario (y por lo tanto mucho más fácil de implementar que el MLT tradicional, pero no puede generar todos los tipos de mutaciones), aplica la heurística de equilibrio de muestreo de importancia múltiple (MIS) para elegir entre múltiples estrategias de trazado de ruta bidireccional para conectar rutas. Esto funciona como una dimensión adicional en el espacio de muestra. El MMLT aún no siempre supera al MLT tradicional, pero puede ser más robusto, reduciendo los artefactos de correlación. [ 46 ] [ 48 ]
Mapeo de fotones

El trazado de rayos tiene dificultades para renderizar las cáusticas : manchas brillantes de luz que aparecen cuando una fuente de luz pequeña o altamente direccional (como el sol) se refleja o refracta en una superficie brillante o un objeto transparente antes de iluminar otra superficie. El resultado suele ser muy ruidoso, con muchos "píxeles brillantes dispersos" (llamativos "luciérnagas"), o simplemente pueden faltar las cáusticas. El trazado de rayos bidireccional puede renderizar las cáusticas si se permite que las subtrazas de luz contribuyan a cualquier píxel de la imagen (rompiendo el modelo de renderizado píxel a píxel), pero aun así pueden faltar las cáusticas si se observan en un espejo. Este tipo de iluminación difícil también puede causar ruido en otras partes de la imagen. [ 49 ] [ 12 ] [ 50 ] : 16.2.2
Una técnica de renderizado diferente, denominada mapeo de fotones o estimación de densidad de fotones, permite renderizar cáusticas de forma más eficaz. El mapeo de fotones funciona como la parte de "seguimiento directo" o de "seguimiento de partículas" del trazado de ruta bidireccional, simulando las trayectorias de muchos "paquetes" de luz emitidos por una fuente de luz. Estos se denominan fotones en el algoritmo, pero generalmente no representan fotones físicos. Los fotones se rastrean a través de reflexiones y refracciones hasta que impactan en una superficie difusa ( mate ) o abandonan la escena. La información sobre los fotones que impactan en una superficie se acumula en una estructura de datos llamada mapa de fotones y se utiliza posteriormente, en lugar de utilizarse inmediatamente para renderizar un píxel en particular. El mapa de fotones se implementa utilizando una estructura espacial como un árbol k -d o una cuadrícula hash. El mapeo de fotones presenta un sesgo , ya que utiliza un filtro de estimación de densidad para suavizar los datos y permitir estimar la intensidad de la luz en un punto arbitrario de una superficie. Si se utiliza un número insuficiente de muestras de luz, la imagen puede presentar un aspecto borroso o con manchas debido al filtro. El mapeo de fotones generalmente se combina con alguna forma de trazado de rayos , lo que permite una iluminación directa precisa y la reflexión y refracción de los rayos de la cámara, mientras que los mapas de fotones se utilizan solo para cáusticas y/o iluminación global difusa (a menudo con mapas separados para cada uno, porque las cáusticas requieren un muestreo más denso). [ 19 ] : 7.6 [ 1 ] : 31.19,32.6 [ 49 ]
Una variante temprana del mapeo de fotones utilizaba un mapa de fotones para "guiar" los rayos para la iluminación global (que se renderizaba mediante el trazado de rayos de distribución), en lugar de utilizar directamente la información de radiancia del mapa. Esto es similar a la guía de trayectorias en el trazado de trayectorias moderno. Otro método explorado fue el uso de datos de mapas de fotones como variables de control para reducir la varianza del trazado de trayectorias. Ambos enfoques pueden ser imparciales. [ 49 ] [ 28 ] : 2
Mapeo progresivo de fotones
Un algoritmo llamado mapeo progresivo de fotones está optimizado para permitir el seguimiento de un mayor número de fotones, sin que este número esté limitado por la memoria disponible. El seguimiento de más fotones puede reducir el sesgo. En lugar de comenzar con el mapeo de fotones, comienza con un "paso de cámara", en el que se trazan trayectorias desde la cámara hasta que impactan una superficie difusa. La información sobre estas subtrayectorias (llamadas puntos visibles ) se almacena en una estructura de datos espaciales. En el paso de mapeo de fotones, se trazan las subtrayectorias desde la fuente de luz hasta que impactan una superficie difusa, y luego se encuentran las subtrayectorias cercanas del paso de cámara. Las subtrayectorias de la cámara determinan cuánta luz de la subtrayectoria de luz se agrega a cada píxel de la imagen. [ 50 ]
En lugar de consumir memoria almacenando fotones (subtrayectorias de luz) en un árbol k -d (u otra estructura espacial), el mapeo progresivo de fotones almacena puntos visibles (subtrayectorias de la cámara), lo cual sigue siendo un problema porque una imagen trazada generalmente requiere una gran cantidad de rayos de cámara para cada píxel. Una variación llamada mapeo progresivo estocástico de fotones hace que el algoritmo sea más práctico al dividir la renderización en múltiples pares de pases de cámara y luz, almacenando típicamente solo una única subtrayectoria de cámara para cada píxel a la vez. El algoritmo también rastrea la cantidad de fotones cercanos encontrados para los puntos visibles de cada píxel y reduce el tamaño del núcleo del filtro en pases subsiguientes, lo que permite renderizar cáusticas nítidas incluso cuando los fotones se trazan en lotes más pequeños. [ 50 ]
marcos unificados
Un problema con los métodos de mapeo de fotones es que las superficies generalmente deben dividirse en superficies especulares (brillantes) y difusas, con diferentes estrategias para cada una, y esta clasificación no siempre es óptima. Técnicas posteriores, como la conexión y fusión de vértices (VCM) y el muestreo de trayectoria unificado (UPS), crean marcos que permiten usar tanto el mapeo de fotones como el trazado de trayectorias estándar en cualquier superficie, e intentan reducir aún más el sesgo. [ 51 ] [ 52 ] [ 27 ]
Los marcos unificados son formas de trazado de trayectorias bidireccional (BDPT), basadas en la combinación de trayectorias generadas por diferentes estrategias. Una misma trayectoria puede ser generada por múltiples estrategias, por lo que las trayectorias deben combinarse cuidadosamente, utilizando ponderaciones de muestreo de importancia múltiple (MIS). Las muestras de mapeo de fotones se representan como trayectorias donde una subtrayectoria de la cámara y una subtrayectoria de una fuente de luz se han unido en puntos cercanos (pero no exactamente coincidentes) en una superficie, o como trayectorias donde un vértice en una superficie se ha perturbado utilizando una distribución de probabilidad correspondiente al núcleo de filtro que se utilizó para suavizar la estimación de la densidad de fotones. Dado que las probabilidades de muestreo de todos los tipos de trayectorias se pueden calcular (independientemente de si utilizan o no la estrategia de mapeo de fotones), se pueden combinar utilizando ponderaciones MIS, como en el BDPT estándar. El algoritmo aún presenta sesgos, pero convergerá al resultado correcto más rápidamente que otras formas de mapeo de fotones a medida que aumenta el número de subtrayectorias de luz. [ 51 ] [ 52 ]
Reutilizar la misma subtrayectoria de luz para múltiples píxeles (como se hace en la mayoría de las formas de mapeo de fotones) puede causar correlaciones entre píxeles cercanos, lo que puede producir artefactos visibles y causar problemas a los eliminadores de ruido. El método VCM reduce esta correlación modificando aleatoriamente cada subtrayectoria de luz antes de usarla. [ 51 ]
Restablecer
Las mejoras en el rendimiento de la GPU y la aceleración del trazado de rayos han permitido el uso generalizado de esta técnica en videojuegos , pero para renderizar iluminación realista en escenas iluminadas por un gran número de luces y una iluminación global difusa con múltiples rebotes, es necesario lanzar muchos rayos. Esto resulta difícil de lograr en tiempo real a una velocidad de fotogramas aceptable, especialmente al renderizar entornos grandes y detallados (en particular, el trazado de rutas sin sesgo, con longitudes de ruta arbitrarias, no suele ser práctico en tiempo real). Un enfoque para abordar este problema consiste en compartir datos entre píxeles de la imagen o entre fotogramas consecutivos, de modo que se necesiten menos lanzamientos de rayos por píxel. Esto se suele hacer mediante reductores de ruido y suavizado temporal (que permiten usar menos muestras por píxel); sin embargo, pueden causar desenfoque de la imagen, artefactos de "efecto fantasma" entre fotogramas, fugas de luz alrededor de las esquinas y otros tipos de sesgo. Los algoritmos de reutilización basados en precomputación y almacenamiento en caché pueden no responder con la suficiente rapidez a los cambios de iluminación durante la renderización en tiempo real y pueden causar un sesgo significativo. [ 53 ]
Una familia de técnicas denominada remuestreo de reservorio espaciotemporal , o ReSTIR , permite compartir muestras entre píxeles cercanos y transferirlas al siguiente fotograma incluso cuando los objetos o la cámara se han movido. Esto se puede lograr sin introducir sesgo, o bien, se puede utilizar en modos con sesgo que ofrecen un mejor rendimiento y menos ruido. ReSTIR consta de pasos para generar nuevas muestras de luz directa o iluminación global para un píxel específico, pasos de reutilización espacial que intentan reutilizar muestras de píxeles cercanos y pasos de reutilización temporal que intentan reutilizar muestras del fotograma anterior (utilizando el flujo óptico , también conocido como reproyección temporal o retroproyección , para seleccionar un píxel correspondiente, teniendo en cuenta el movimiento de la cámara y los objetos de la escena). [ 53 ] [ 54 ] : 2,10
ReSTIR utiliza una forma de muestreo de reservorio ponderado , manteniendo una estructura de datos llamada reservorio para cada píxel. El reservorio almacena una sola muestra junto con un peso similar a los pesos utilizados en el muestreo de importancia . (También se pueden usar reservorios que almacenen más de una muestra: la implementación original de ReSTIR usaba 4 muestras por reservorio para su versión sesgada, pero solo 1 muestra para la versión no sesgada, que es más costosa). [ 55 ] : 15 [ 54 ] : 10
La versión más antigua de ReSTIR, ahora llamada ReSTIR DI, está diseñada para iluminación directa en escenas con muchas luces. Para generar muestras iniciales, utiliza una técnica antigua llamada muestreo de importancia remuestreado (RIS). Toma muchas muestras de luces de forma económica (sin considerar la visibilidad) y elige una en función de su brillo (esta es una forma aproximada o estocástica de muestreo de importancia). La muestra elegida (por ejemplo, un punto en una luz específica) se prueba para determinar si es visible (si no lo es, se puede tratar como una muestra de luz con brillo cero) y se almacena en el repositorio, junto con un peso. [ 54 ] : 4-6 [ 55 ] : 18
Durante los pasos de reutilización espacial, se elige aleatoriamente otro píxel de un vecindario alrededor del píxel objetivo (por ejemplo, todos los píxeles con una distancia menor a 30 píxeles). La muestra en el reservorio de este otro píxel se fusiona con el reservorio del píxel objetivo calculando múltiples ponderaciones de muestreo de importancia (MIS) para las dos muestras y eligiendo una muestra utilizando probabilidades proporcionales a las ponderaciones (un procedimiento similar al RIS). La ponderación en el reservorio se actualiza independientemente de si se eligió o no la muestra del otro píxel. Este proceso es costoso en versiones no sesgadas, ya que el cálculo de las ponderaciones MIS requiere conocer la visibilidad y el brillo de ambas muestras de luz en los puntos de la superficie correspondientes a ambos píxeles, lo que generalmente implica trazar dos rayos o trayectorias (este costo se puede reducir utilizando un patrón de reutilización recíproca). Algunas implementaciones examinan múltiples píxeles vecinos (por ejemplo, 4 vecinos) y eligen uno, lo que ayuda a reducir la varianza pero es más costoso, ya que requiere trazar más rayos. [ 54 ] : 5-6 [ 55 ] : 12,16
La reutilización temporal, que consiste en reutilizar muestras de un píxel correspondiente en el fotograma anterior, se implementa de forma similar a la reutilización espacial. Dado que la cámara y los objetos de la escena pueden haberse movido y la iluminación puede haber cambiado, es necesario calcular la visibilidad y el brillo de ambas muestras de luz en el punto de la superficie en ambos fotogramas para calcular los pesos correctos, lo que generalmente requiere trazar dos rayos adicionales. [ 54 ] : 6 [ 55 ] : 16,19
Una secuencia típica de pasos por fotograma (que probablemente requiera múltiples pasadas sobre todos los píxeles) sería: [ 55 ] : 16-17
- Generar nuevas muestras iniciales para los píxeles.
- Realizar reutilización temporal
- Realizar la reutilización del espacio (una o más veces)
- Renderiza los píxeles del fotograma actual utilizando las muestras que se encuentran ahora en los depósitos.
- Realizar la eliminación de ruido de la imagen renderizada.
Al combinar los pasos de esta manera, las muestras pueden propagarse rápidamente a los píxeles vecinos, lo que permite una gran cantidad de reutilización potencial de cualquier muestra "buena" que se encuentre. Esto puede ser útil en situaciones de iluminación difíciles (por ejemplo, cuando hay muchas luces pero la mayoría están en sombra); sin embargo, la reutilización excesiva de un pequeño número de muestras causa artefactos de correlación que pueden ser muy visibles. [ 55 ] : 16-17 [ 56 ] : 16-17
El trazado de rutas puede usar la versión imparcial de ReSTIR DI para calcular la luz directa para el primer punto de la superficie intersectado por el rayo de la cámara. Una versión más general de ReSTIR para trazado de rutas, llamada ReSTIR PT, extiende el algoritmo para admitir la reutilización de rutas arbitrarias en lugar de solo muestras de luz directa. Esto implica aplicar una transformación de mapeo de desplazamiento a una muestra para hacerla aplicable a la posición y orientación de la superficie necesarias para un píxel diferente o un fotograma diferente (los mapeos de desplazamiento se introdujeron como parte de la renderización en el dominio del gradiente). Por ejemplo, un mapeo de desplazamiento llamado desplazamiento de reconexión permite reutilizar la porción de una ruta después de la segunda intersección de la superficie, necesitando solo trazar un rayo para verificar la visibilidad entre la primera y la segunda intersecciones. El desplazamiento de reconexión es muy efectivo para la iluminación global difusa y es la base de un algoritmo simplificado llamado ReSTIR GI (que asume que todas las superficies son lambertianas en la segunda intersección) que se ha utilizado en juegos. [ 55 ] : 22 [ 57 ] : 8 [ 58 ]
ReSTIR está diseñado principalmente para la renderización en tiempo real, pero también puede utilizarse para acelerar la renderización fuera de línea. Si bien ReSTIR puede ser imparcial, sus posibles inconvenientes (que podrían hacerlo menos adecuado para la renderización fuera de línea) incluyen la correlación no deseada entre errores en píxeles adyacentes (que puede producir artefactos) y entre fotogramas (que puede impedir la convergencia), y el ruido de color (el brillo de los píxeles es correcto, pero el color presenta ruido que no disminuye con múltiples pasadas). Para mitigar estos problemas, se puede omitir la parte de reutilización temporal y, en su lugar, repetir varias veces el muestreo inicial y la reutilización espacial, promediando los resultados. [ 56 ] : 12,16
Actualmente existen muchas variantes de ReSTIR, que aplican la técnica a la renderización de volumen, a los efectos de profundidad de campo y desenfoque de movimiento, y la combinan con otras técnicas como la guía de trayectorias. Aunque la mayoría de las formas de ReSTIR funcionan en el espacio de la pantalla (con un reservorio para cada píxel), también existen versiones en el espacio del mundo que utilizan RIS y reutilización espaciotemporal para encontrar buenas muestras de luz para regiones del espacio en una cuadrícula 3D. [ 59 ] [ 60 ] [ 61 ] [ 62 ]
Véase también
- Arnold (software)
- Blender (software) : programa 3D que integra Cycles , un motor de renderizado acelerado por GPU basado en trazado de rayos.
- Renderizado de Octane
- Pixar RenderMan
- LuxCoreRenderer
- Trazado de trayectorias volumétrico
Referencias
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Hughes, John F.; Van Dam, Andries ; McGuire, Morgan; Sklar, David F.; Foley, James D .; Feiner, Steven K.; Akeley, Kurt (2014). Gráficos por computadora : principios y práctica (3.ª ed.). Addison-Wesley. ISBN 978-0-321-39952-6.
- ↑ Haines, Eric; Shirley, Peter (25 de febrero de 2019). «Terminología del trazado de rayos». Ray Tracing Gems: renderizado de alta calidad y en tiempo real con DXR y otras API . Berkeley, CA: Apress. doi : 10.1007/978-1-4842-4427-2 . ISBN 978-1-4842-4427-2.
- 1 2 3 4 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "1.6" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 27 de mayo de 2026 .
- 1 2 3 4 Jarosz, Wojciech; Christensen, Per H. (2016). "El camino hacia las películas con trazado de rayos". Fundamentos y tendencias en gráficos por computadora y visión . 10 (2): 103– 175. arXiv : 1611.02145 . doi : 10.1561/0600000073 .
- ^ Thommes, Simon (26 de noviembre de 2021). "Eliminar el ruido de los sprites" . blender.org . Estudio Blender . Consultado el 27 de mayo de 2026 .
- 1 2 Seymour, Mike (13 de octubre de 2014). "El nuevo motor de renderizado de producción de Disney, 'Hyperion': ¡Sí, Disney!" . fxguide.com . fxguide, LLC . Consultado el 27 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "15. Renderizado de frente de onda en GPU" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 27 de mayo de 2026 .
- 1 2 3 4 5 6 7 8 9 10 Kajiya, James T. (1986). "La ecuación de renderizado". ACM SIGGRAPH Computer Graphics . 20 (4): 143– 150. doi : 10.1145/15886.15902 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). «1.2 Renderizado fotorrealista y el algoritmo de trazado de rayos» . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 7 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). «13.1 La ecuación de transporte de luz» . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 7 de mayo de 2026 .
- 1 2 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "5.4 Cine e imagen" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Veach, Eric (1997). Métodos robustos de Monte Carlo para la simulación del transporte de luz (PDF) (tesis doctoral). Universidad de Stanford.
- ↑ Glassner, Andrew S. (2011) [1995]. Principios de síntesis de imágenes digitales (PDF) . 1.0.1. Morgan Kaufmann Publishers, Inc. ISBN 978-1-55860-276-2. Consultado el 23 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "13.3 Un trazador de rutas simple" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 5 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "13.4 Un trazador de rutas mejorado" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 5 de mayo de 2026 .
- 1 2 3 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "9.2 Reflexión difusa" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 5 de mayo de 2026 .
- 1 2 3 4 5 6 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "2.2 Mejora de la eficiencia" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "13.2 Trazado de rutas" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 3 Dutré, Felipe; Bala, Kavita; Bekaert, Philippe (2015). Iluminación global avanzada (2ª ed.). AK Peters/Prensa CRC. ISBN 978-1-4987-8562-4.
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). «8.2 Muestreo e integración» . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "8.5 Stratified Sampler" . Physically Based Rendering: From Theory to Implementation (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "8.6 Halton Sampler" . Physically Based Rendering: From Theory to Implementation (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "8.7 Sobol' Samplers" . Physically Based Rendering: From Theory to Implementation (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- ↑ Paulin, Lois; Bonneel, Nicolas; Coeurjolly, David; Iehl, Jean-Claude; Webanck, Antoine; Desbrun, Mathieu; Ostromoukhov, Victor (agosto de 2020). "Muestreo de transporte óptimo segmentado". ACM Transactions on Graphics . 39 (4). doi : 10.1145/3386569.3392395 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "8.1 Teoría del muestreo" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 3 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "4.6 Color" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). «13. Lecturas adicionales» . Physically Based Rendering: From Theory to Implementation (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026Consultado el 29 de abril de 2026 .
- 1 2 Müller, Thomas; Gross, Markus; Novák, Jan (julio de 2017). "Guía práctica de trayectorias para una simulación eficiente del transporte de luz". Computer Graphics Forum . 36 (4): 91– 100. doi : 10.1111/cgf.13227 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). «7.2 Agregados» . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- ↑ Stich, Martin (25 de febrero de 2019). «Prólogo». En Haines, Eric; Akenine-Möller, Tomas (eds.). Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs . Berkeley, CA: Apress. doi : 10.1007/978-1-4842-4427-2 . ISBN 978-1-4842-4427-2.
- 1 2 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "12.6 Muestreo de luz" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "8.8 Reconstrucción de imágenes" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 3 4 5 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "5 Cine e imagen: Lecturas adicionales" . Renderizado basado en la física: De la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 3 4 Zwicker, M.; Jarosz, W.; Lehtinen, J.; Moon, B.; Ramamoorthi, R.; Rousselle, F.; Sen, P.; Soler, C.; Yoon, S.-E. (mayo de 2015). "Avances recientes en muestreo y reconstrucción adaptativos para renderizado Monte Carlo". Computer Graphics Forum . 34 (2).
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). «8 Muestreo y reconstrucción: Lecturas adicionales» . Renderizado basado en la física: De la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- ^ Marschner , Steve; Shirley, Peter (2022). Fundamentos de gráficos por computadora (5ª ed.). Prensa CRC. ISBN 978-1-003-05033-9.
- ↑ Akenine-Möller, Tomas; Haines, Eric; Hoffman, Naty; Pesce, Ángel; Iwanicki, Michał; Hillaire, Sébastien (2018). Representación en tiempo real (4ª ed.). Boca Ratón, FL: AK Peters/CRC Press. ISBN 978-1138627000.
- 1 2 3 4 5 6 7 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "4.3 Reflexión de superficie" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 4 de mayo de 2026 .
- 1 2 3 4 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "9 modelos de reflexión" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 6 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). «9 Modelos de reflexión: Lecturas adicionales» . Renderizado basado en la física: De la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 6 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). «10 Texturas y Materiales» . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 6 de mayo de 2026 .
- 1 2 3 4 5 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "11.1 Procesos de dispersión volumétrica" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 6 de mayo de 2026 .
- 1 2 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "11 Dispersión de volumen" . Representación basada en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 6 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "11.2 Transmitancia" . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 6 de mayo de 2026 .
- ↑ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). «11.4 Medios» . Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Consultado el 6 de mayo de 2026 .
- 1 2 3 4 5 6 7 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (25 de noviembre de 2016). "16.4 Transporte ligero de Metropolis" . Renderizado basado en la física: de la teoría a la implementación (3.ª ed.). Morgan Kaufmann. ISBN 978-0128006450. Consultado el 9 de mayo de 2026 .
- 1 2 3 4 5 6 Veach, Eric; Guibas, Leonidas J. (1997). "Transporte ligero de metrópolis". Actas de la 24.ª conferencia anual sobre gráficos por computadora y técnicas interactivas - SIGGRAPH '97 . págs. 65–76 . doi : 10.1145/258734.258775 . ISBN 0-89791-896-7.
- 1 2 3 4 5 6 Hachisuka, Toshiya; Kaplanyan, Anton S.; Dachsbacher, Carsten (27 de julio de 2014). "Transporte ligero de metrópolis multiplexado". ACM Transactions on Graphics . 33 (4): 1– 10. doi : 10.1145/2601097.2601138 .
- 1 2 3 Jensen, Henrik Wann (1996). «Iluminación global mediante mapas de fotones». Actas del Taller Eurographics sobre Técnicas de Renderizado '96 . Springer-Verlag. págs. 21–30 . ISBN 3211828834.
- 1 2 3 Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (25 de noviembre de 2016). "16.2 Mapeo estocástico progresivo de fotones" . Renderizado basado en la física: de la teoría a la implementación (3.ª ed.). Morgan Kaufmann. ISBN 978-0128006450Consultado el 29 de abril de 2026 .
- 1 2 3 Georgiev, Iliyan; Křivánek, Jaroslav; Davidovič, Tomáš; Slusallek, Philipp (2012). "Simulación de transporte ligero con conexión y fusión de vértices". Transacciones ACM sobre gráficos . 31 (6): 1– 10. doi : 10.1145/2366145.2366211 .
- 1 2 Hachisuka, Toshiya; Pantaleoni, Jacopo; Jensen, Henrik Wann (2012). "Una extensión del espacio de trayectorias para una simulación robusta del transporte de luz". ACM Transactions on Graphics . 31 (6): 1– 10. doi : 10.1145/2366145.2366210 .
- 1 2 Wyman, Chris (mayo de 2025). Conferencia magistral de Chris Wyman en I3D 2025: "ReSTIR: Recorriendo el camino de la reutilización" (Discurso). Simposio ACM SIGGRAPH sobre gráficos y juegos 3D interactivos 2025. Jersey City, NJ, EE. UU.
- 1 2 3 4 5 Bitterli, Benedikt; Wyman, Chris; Pharr, Matt ; Shirley, Peter ; Lefohn, Aaron; Jarosz, Wojciech (31 de agosto de 2020). "Remuestreo de reservorio espaciotemporal para trazado de rayos en tiempo real con iluminación directa dinámica" (PDF) . ACM Transactions on Graphics . 39 (4). doi : 10.1145/3386569.3392481 .
- ^ Wyman , Chris ; Kettunen, Markus; Lin, Daqi; Bitterli, Benedikt; Yuksel, Cem; Jarosz, Wojciech; Kozlowski, Pawel; De Francesco, Giovanni (2023). "Una suave introducción a ReSTIR: reutilización de rutas en tiempo real" (PDF) . Cursos ACM SIGGRAPH 2023 . págs. 1– 38. doi : 10.1145/3587423.3595511 . ISBN 979-8-4007-0145-0.
- 1 2 Lin, Daqi; Kettunen, Markus; Bitterli, Benedikt; Pantaleoni, Jacopo; Yuksel, Cem; Wyman, Chris (2022). "Muestreo de importancia remuestreado generalizado: fundamentos de ReSTIR" (PDF) . ACM Transactions on Graphics . 41 (4). doi : 10.1145/3528223.3530158 .
- ↑ Ouyang, Yaobin; Liu, Shiqiu; Kettunen, Markus; Pharr, Matt ; Pantaleoni, Jacopo (2021). "ReSTIR GI: Remuestreo de trayectorias para trazado de trayectorias en tiempo real" . Computer Graphics Forum . 40 (8): 17– 29. doi : 10.1111/cgf.14378 .
- ↑ Knapik, Jakub; De Francesco, Giovanni; Zhdan, Dmitrii; Liu, Edward; Makarov, Evgeny; Kennedy, Jon; Marttila, Juho; Murphy, Michael; Hoobler, Nathan; Cheblokov, Tim; Kozlowski, Pawel (2024). «La evolución del pipeline de iluminación en tiempo real en Cyberpunk 2077». GPU Zen 3: Técnicas avanzadas de renderizado . Black Cat Publishing Inc. pp. 151–245 . ISBN 979-8344236797.
- ↑ Lin, Daqi; Wyman, Chris; Yuksel, Cem (2021). "Renderizado rápido de volumen con remuestreo de reservorio espaciotemporal" (PDF) . ACM Transactions on Graphics . 40 (6): 1– 18. doi : 10.1145/3478513.3480499 .
- ↑ Liu, Jeffrey; Lin, Daqi; Kettunen, Markus; Wyman, Chris; Ramamoorthi, Ravi (2025). "Reservoir Splatting for Temporal Path Resampling and Motion Blur" (PDF) . Actas de la Conferencia del Grupo de Interés Especial en Gráficos por Computadora y Técnicas Interactivas . pp. 1–11 . doi : 10.1145/3721238.3730646 . ISBN 979-8-4007-1540-2.
- ↑ Zeng, Zheng; Kettunen, Markus; Wyman, Chris; Wu, Lifan; Ramamoorthi, Ravi; Yan, Ling-Qi; Lin, Daqi (2025). "ReSTIR PG: Path Guiding with Spacetiotemporally Resampled Paths". Actas de la conferencia SIGGRAPH Asia 2025. pp. 1–11 . doi : 10.1145/3757377.3763813 . ISBN 979-8-4007-2137-3.
- ↑ Boksansky, Jakub; Jukarainen, Paula; Wyman, Chris (2021). "Renderizado de múltiples luces con reservorios basados en cuadrícula" . Ray Tracing Gems II . APress. pp. 351–365 . doi : 10.1007/978-1-4842-7185-8_23 . ISBN 978-1484271841.
- Gráficos por computadora
- Renderizado 3D
- Algoritmos de iluminación global
- Trazado de rayos (gráficos)
- métodos de Monte Carlo