Actualmente estoy tratando de implementar un trazado de ruta de Monte Carlo. He investigado un poco y parece que un enfoque común de los materiales es usar un modelo en capas. Algo como esto:
Cuando la luz golpea la superficie, Fresnel nos dice cuánto de esa luz es reflejada por la primera capa y cuánto va a la segunda, y así sucesivamente.
Entonces hice algo similar, pero más simple: solo una capa especular y una capa difusa. No hay transmitancia todavía. Hasta ahora todo bien, utilizo un simple brdf ponderado en coseno para mi difuso y el modelo microfacetado Cook-Torrance para mi especular.
Ahora viene la parte difícil: ¿qué debo hacer una vez que un rayo toca la superficie? Normalmente, elegiría el brdf correspondiente al material de la superficie, tomaría una muestra de la dirección de la luz incidente, evaluaría el brdf y lo dividiría por la función de distribución de probabilidad correcta.
Pero aquí, un golpe de superficie corresponde efectivamente a múltiples materiales. La forma ingenua de manejar esto sería muestrear una vez por cada golpe de capa. Pero esto claramente es fuente de un gran éxito en el rendimiento, lo que hace que mi camino se convierta efectivamente en un árbol.
¿Hay una mejor solución?
fuente
Respuestas:
Wenzel Jakob et al presentaron un marco para Materiales en capas en SIGGRAPH 2014. La Sección 6.2 explica el muestreo de importancia. Si prefiere el código sobre las ecuaciones, el método se implementa en el renderizador de Mitsuba .
fuente