Trazado del trazado del Cook-Torrance BRDF


27

- 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 de referencia de Mitsuba.

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 renderizada

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 .

Lo(p,wo)=Le+ΩLi(p,wi)fr(wo,wi)cosθdω
pwowiLowoLipwicosθ=nwi

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 .

1Nk=1NLi(p,wk)fr(wk,wo)cosθp(wk)
pwk

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,

fr(wi,wo)=DFGπ(nwi)(nwo)
D=1m2(nh)4exp((nh)21m2(nh)2)
F=cspec+(1cspec)(1wih)5
G=min(1,2(nh)(nwo)woh,2(nh)(nwi)woh)
h=wo+wi|wo+wi| y es el color especular. Todas las ecuaciones, con la excepción de , se extrajeron del documento original. , también conocida como la aproximación de Schlick , es una aproximación eficiente y menos precisa al término real de Fresnel.cspecFF

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 m0.2

p(wk)=12π
wiwk
1Nk=1NLi(p,wk)(DFGπ(nwk)(nwo))cosθ(12π)
Ahora podemos cancelar los 's y eliminar la sumatoria porque disparamos solo un rayo aleatorio desde el punto de intersección. Terminamos con Dado que , podemos simplificarlo aún más π
2Li(p,wk)(DFG(nwk)(nwo))cosθ
cosθ=nwk
2Li(p,wk)(DFGnwo)

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.1π

¡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 D1πfr14

Dnew=1πm2(nh)4exp((nh)21m2(nh)2)
frnew(wi,wo)=DFG4(nwi)(nwo)
π2Li(p,wk)(DnewFGnwo)
que funcionó muy bien! PD: El problema ahora es comprender mejor cómo la nueva formulación para y ayuda a mantener la conservación de energía ... pero este es otro tema.Dfr

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.


No estoy seguro si todavía está visitando este sitio, pero tengo una pregunta sobre su ecuación de Fresnel y la he publicado aquí
PeteUK

Respuestas:


12

Según este documento , el en su debe ser : por lo que terminaría con 1πfr14

fr=DFG4(nwi)(nwo),
π2Li(p,wk)(DFGnwo).

He visto esta otra formulación para Cook-Torrance BRDF, donde la ecuación se multiplica por lugar de . Sin embargo, al final, el efecto de esta modificación es muy pequeño porque estaríamos sustituyendo 2, presente en la ecuación final, por 1.57 ( ). He hecho una prueba aquí (por si acaso ...), y de hecho el problema persistió. 141π=π2
Christian Pagot

@Capagot Un factor de veces se incorpora a las intensidades de la fuente de luz (por convención) y se excluye de los BRDF; Ver también esta pregunta . Pero eso es más común en la representación en tiempo real que en el trazado de ruta. También dice que sus pruebas de Lambertian coinciden perfectamente con Mitsuba, por lo que parece menos probable que este sea el problema ... aún así podría valer la pena analizarlo. 1/π
Nathan Reed

@Capagot Creo que se está perdiendo una en su función de distribución . El documento al que me vinculé incluye ese factor en la distribución de Beckmann, que usted usa, por lo que tener en y en debería ser el truco. 1πD14fr1πD
wolle

@NathanReed He leído el artículo sobre incrustar en el color. Sin embargo, por la razón que ha mencionado, estaba convencido de que ese no era el problema. π
Christian Pagot

@Wolle ¡Exactamente! En realidad, ya había echado un vistazo rápido al papel que mencionaste, ¡pero no me di cuenta! Acabo de alterar mi implementación para dar cuenta de en y en , ¡y ahora todo funciona de maravilla! ¡Incluiré una actualización de la pregunta con la respuesta! ¡Gracias! 1πD14fr
Christian Pagot

13

Estoy publicando esto para cualquiera que se pregunte sobre la confusión entre los términos y .1π14

El término es un error de la referencia original de Cook-Torrance.1π

De hecho, todo el término proviene del jacobiano de la transformación del ángulo sólido reflejado al ángulo sólido normal.14(nωi)

Según la mayoría de los artículos, el término apareció por primera vez en [Torrance, 67] .14

Para una buena explicación del término, debe consultar [Nayar, 91] , apéndice D. Aquí hay una imagen del mismo documento:

dω=dωr4cosθi

Además, Joe Stam está de acuerdo con el término Nayar en [Stam 01, Un modelo de iluminación para una capa de piel limitada por superficies rugosas], apéndice B.14