- Perdón por la larga publicación, pero prefiero hacerlo de esa manera porque "El diablo está en los detalles " :)
Estoy escribiendo un trazado de ruta desde cero y está funcionando bien para superficies perfectamente difusas (lambertianas) ( es decir, la prueba del horno indica, al menos visualmente) que ahorra energía, y las imágenes renderizadas coinciden con las generadas con el renderizador Mitsuba para el mismo parámetros). Ahora estoy implementando el soporte para el término especular del modelo original de microfaceta Cook-Torrance, para renderizar algunas superficies metálicas. Sin embargo, parece que este BRDF está reflejando más energía que la recibida. Vea las imágenes de ejemplo a continuación:
Imagen superior: imagen de referencia de Mitsuba (se supone que es correcta): trazado de ruta con muestreo de luz directa, muestreo de hemisferio de importancia, longitud máxima de ruta = 5, 32 spp estratificado, filtro de caja, rugosidad de la superficie = 0.2, RGB.
Imagen de arriba: Imagen renderizada real: trazado de trayectoria ingenua de fuerza bruta, muestreo de hemisferio uniforme, longitud de trayectoria máxima = 5, 4096 spp estratificado, filtro de caja, rugosidad de la superficie = 0.2, RGB. A pesar de algunas diferencias con respecto a la configuración de representación, está claro que la imagen renderizada no convergerá con la referencia mostrada anteriormente.
Tiendo a pensar que no es un problema de implementación, sino un problema relacionado con el uso adecuado del modelo Cook-Torrance dentro del marco de la ecuación de representación. A continuación, explico cómo estoy evaluando el BRDF especular y me gustaría saber si lo estoy haciendo correctamente y, si no, por qué.
Antes de entrar en los detalles esenciales, observe que el renderizador es bastante simple: 1) implementa solo el algoritmo de trazado de ruta ingenuo de fuerza bruta: sin muestreo de luz directa, sin trazado de ruta bidireccional, sin MLT; 2) todo el muestreo es uniforme en el hemisferio sobre el punto de intersección; no es importante el muestreo en absoluto, ni para las superficies difusas; 3) la trayectoria del rayo tiene una longitud máxima fija de 5 - no hay ruleta rusa; 4) la radiancia / reflectancia se informa a través de tuplas RGB, sin representación espectral.
Modelo de microfaceta Cook Torrance
Ahora intentaré construir la ruta que he seguido para implementar la expresión de evaluación BRDF especular. Todo comienza con la ecuación de representación donde es el punto de intersección en la superficie, es el vector de visualización, es el vector de luz, es el resplandor saliente a lo largo de , es el incidente de resplandor sobre largo de y .
La integral anterior ( es decir, el término de reflexión de la ecuación de representación) se puede aproximar con el siguiente estimador de Monte Carlo donde es la función de densidad de probabilidad (PDF) que describe la distribución del muestreo vectores .
Para la representación real, se deben especificar el BRDF y el PDF. En el caso del término especular del modelo Cook-Torrance, estoy usando el siguiente BRDF donde En las ecuaciones anteriores,
Sería obligatorio utilizar muestreo de importancia en el caso de renderizar superficies especulares lisas. Sin embargo, estoy modelando solo superficies razonablemente rugosas ( ), por lo tanto, he decidido mantener un muestreo uniforme durante un tiempo (a costa de tiempos de renderización más largos). En este caso, el PDF es Al sustituir el PDF uniforme y Cook-Torrance BRDF en el estimador de Monte Carlo (observe que es sustituido por , la variable aleatoria), obtengo
Entonces, esa es la expresión que estoy evaluando cuando un rayo golpea una superficie especular cuya reflectancia es descrita por el Cook-Torrance BRDF. Esa es la expresión que parece estar reflejando más energía que la recibida. Estoy casi seguro de que hay algo mal con él (o en el proceso de derivación), pero no puedo detectarlo.
Curiosamente, si multiplico la expresión anterior por , obtengo resultados que parecen correctos. Sin embargo, me he negado a hacer eso porque no puedo justificarlo matemáticamente.
¡Cualquier ayuda es bienvenida! ¡Gracias!
ACTUALIZAR
Como @wolle señaló a continuación, este documento presenta una nueva formulación más adecuada para el trazado de ruta, donde la función de distribución normal (NDF) incluye el factor y el BRDF incluye el factor. Por lo tanto, y la inclusión de las ecuaciones anteriores la ecuación de representación, terminé con
ACTUALIZACIÓN 2
Como señaló PeteUK , la autoría de la formulación de Fresnel presentada en el texto original de mi pregunta se atribuyó erróneamente a Cook y Torrance. La formulación de Fresnel utilizada anteriormente se conoce realmente como la aproximación de Schlick y lleva el nombre de Christophe Schlick. El texto original de la pregunta se modificó en consecuencia.