Seguimiento de ruta


El trazado de ruta es un método de Monte Carlo de gráficos por computadora para representar imágenes de escenas tridimensionales de manera que la iluminación global sea ​​fiel a la realidad. Básicamente, el algoritmo integra toda la iluminancia que llega a un único punto de la superficie de un objeto. Esta iluminancia se reduce luego mediante una función de reflectancia de superficie ( BRDF) para determinar cuánto se destinará a la cámara del mirador. Este procedimiento de integración se repite para cada píxel de la imagen de salida. Cuando se combina con modelos de superficies físicamente precisos, modelos precisos de fuentes de luz reales (bombillas) y cámaras ópticamente correctas, el trazado de la trayectoria puede producir imágenes fijas que son indistinguibles de las fotografías.

El trazado de ruta simula de forma natural muchos efectos que deben agregarse específicamente a otros métodos ( trazado de rayos convencional o renderizado de línea de exploración ), como sombras suaves , profundidad de campo , desenfoque de movimiento , cáusticos , oclusión ambiental e iluminación indirecta. La implementación de un renderizador que incluya estos efectos es correspondientemente más simple. Se realiza una versión extendida del algoritmo mediante el trazado de ruta volumétrica , que considera la dispersión de la luz de una escena.

Debido a su precisión, naturaleza imparcial y simplicidad algorítmica, el rastreo de ruta se utiliza para generar imágenes de referencia cuando se prueba la calidad de otros algoritmos de renderizado . Sin embargo, el algoritmo de rastreo de ruta es relativamente ineficiente: se debe rastrear una gran cantidad de rayos para obtener imágenes de alta calidad sin artefactos de ruido . Se han introducido varias variantes que son más eficientes que el algoritmo original para muchas escenas, incluido el rastreo de ruta bidireccional , el rastreo de ruta volumétrico y el transporte ligero de Metropolis .

La ecuación de renderizado y su uso en gráficos por computadora fue presentada por James Kajiya en 1986. [1] El trazado de ruta se introdujo entonces como un algoritmo para encontrar una solución numérica a la integral de la ecuación de renderizado. Una década más tarde, Lafortune sugirió muchos refinamientos, incluido el trazado de rutas bidireccionales. [2]

El transporte ligero de Metropolis , un método para perturbar caminos previamente encontrados con el fin de aumentar el rendimiento en escenas difíciles, fue introducido en 1997 por Eric Veach y Leonidas J. Guibas .

Más recientemente, las CPU y GPU se han vuelto lo suficientemente potentes como para renderizar imágenes más rápidamente, lo que ha generado un interés más generalizado en los algoritmos de rastreo de rutas. Tim Purcell presentó por primera vez un algoritmo de iluminación global que se ejecuta en una GPU en 2002. [3] En febrero de 2009, Austin Robison de Nvidia demostró la primera implementación comercial de un trazador de ruta que se ejecuta en una GPU [4] , y otras implementaciones han seguido, como como el de Vladimir Koylazov en agosto de 2009. [5] Esto fue ayudado por la maduración de los kits de herramientas de programación GPGPU como CUDA y OpenCL y SDK de trazado de rayos GPU comoOptiX .


Una imagen renderizada usando trazado de ruta, que demuestra características notables de la técnica.
El ruido disminuye a medida que aumenta el número de muestras por píxel. La parte superior izquierda muestra 1 muestra por píxel y duplica de izquierda a derecha cada cuadrado.
Funciones de distribución de dispersión