1 puntos por GN⁺ 2023-10-24 | 1 comentarios | Compartir por WhatsApp
  • En una iluminación ambiental uniforme, un objeto con reflectancia del 100% no debería distinguirse del fondo, y esta propiedad permite verificar rápidamente la consistencia física de un renderizador
  • Ya sea mate, espejo o un material intermedio, si es perfectamente reflectante y está iluminado de manera uniforme, debe verse igual que el entorno y parecer que desaparece
  • La nieve fresca puede alcanzar un albedo de 90–98%, y al combinarse con tiempo nublado o niebla puede producirse un whiteout en el que cielo y nieve se vuelven indistinguibles
  • Esta prueba verifica que la BRDF no pierda ni cree energía, y en un entorno gris el exceso de energía reflejada se muestra con más brillo, lo que facilita encontrar errores
  • Una BRDF Lambertiana de blanco puro es simple y su conservación de energía es clara, por lo que resulta útil como comprobación básica para revelar errores de integración como distribución de muestreo, pesos, PDF o la omisión de coeficientes como π o 2

Por qué un objeto debería desaparecer bajo luz uniforme

  • Si un objeto con reflectancia del 100% está iluminado por un entorno uniforme, no debería distinguirse del fondo
  • Esta propiedad se cumple independientemente de si el objeto es mate, reflectante como un espejo o un material intermedio
  • Si el objeto no se ve en el resultado del render, es una señal de que coincide con el resultado esperado matemáticamente

Un caso parecido en el mundo real: whiteout

  • La nieve fresca puede tener un albedo alto, de 90–98%, y acercarse a un blanco casi perfecto
  • Si además hay tiempo nublado o niebla, puede producirse un estado de whiteout en el que la nieve y el cielo se vuelven indistinguibles
  • En ese momento, todas las direcciones se ven como un blanco uniforme, y puede ser difícil distinguir a simple vista incluso la pendiente justo enfrente

Verificación de conservación de energía en la BRDF

  • La prueba del horno blanco se usa con frecuencia para comprobar si una BRDF cumple con la conservación de energía
  • Lo esencial es verificar que durante la reflexión la energía no desaparezca ni se genere de la nada
  • Por ejemplo, puede servir para detectar problemas donde el material se ve más oscuro al aumentar la rugosidad (roughness), o situaciones en las que las reflexiones múltiples llegan a un nivel que no puede ignorarse
  • Además de un entorno blanco, también resulta útil un entorno gris
    • Si la energía reflejada es excesiva, aparecerá más brillante que el entorno y el error quedará en evidencia

Cómo revisar la implementación de integración del renderizador

  • La prueba del horno blanco también es efectiva para revisar la parte de integración del renderizador, no solo la BRDF en sí
  • Una BRDF Lambertiana con albedo del 100% conserva perfectamente la energía y además es simple de implementar, por lo que es ideal para exponer errores en la implementación del renderizador
  • Hay varios puntos donde pueden surgir problemas
    • Distribución de muestreo
    • Pesos de las muestras
    • Cálculo de la PDF
    • Omisión de coeficientes como π o 2
  • Estos errores pueden ser difíciles de encontrar porque la imagen resultante todavía puede parecer plausible

Ejemplos de fallos y uso para depuración

  • Al escribir un path tracer o una de sus variantes, crear un pre-convolved environment map o probar otras distribuciones de muestreo, resulta útil hacer pasar primero la prueba del horno blanco con una BRDF Lambertiana de blanco puro
  • Una vez superado este paso, se puede confiar hasta cierto punto en la implementación antes de probar la BRDF en sí
  • Después de un comentario en Hacker News, al ejemplo de ShaderToy se le añadió una macro SIMULATE_INCORRECT_INTEGRATION para poder observar un fallo de la prueba
  • Esta macro imita un error de integración incorrecta, como olvidar que la integral sobre el hemisferio corresponde a 2π o no tener en cuenta la distribución de muestreo
  • Cuando el bug está activado, la esfera no refleja la cantidad correcta de energía y por eso se vuelve visible en pantalla

1 comentarios

 
GN⁺ 2023-10-24
Comentarios de Hacker News
  • Hace poco implementé un renderizador basado en física (PBR) siguiendo el tutorial de PBR de learnopengl, pero no pasó la prueba del horno blanco
    Gracias a eso me di cuenta de que en realidad no entendía muy bien las matemáticas que implementé y, tal como dice el autor, no bastaba con que todo cuadrara multiplicando π o 2 arbitrariamente

    • La mayoría de las BRDF que he visto hasta ahora se vuelven más oscuras a medida que aumenta la rugosidad, tal como se menciona en el artículo
      También hay modelos que consideran las reflexiones mutuas entre las microfacetas teóricas que forman la distribución normal que define la BRDF, y son mejores, pero aun así es difícil estar seguro de que pasen esta prueba tal cual
      En la práctica, la mayoría de las que se usan ampliamente pierden energía, y a veces se les agrega una tabla de consulta encima de la BRDF para compensarlo
  • Me sorprende ver este artículo en la parte alta de HN. En realidad hay dos tipos de prueba del horno, y la otra es una prueba en la que, con emisión de 0.5 y albedo de 0.5, el resultado debería ser 1.0 salvo por el error de píxeles con ruido

    • Aunque de verdad solo sé lo mínimo sobre ray tracing, pude seguir el artículo. Está escrito de forma clara e interesante
  • Hace mucho tiempo, en https://graphics.stanford.edu/~boulos/papers/brdftog.pdf, hubo un intento de intercambiar conservación de energía por reproducibilidad de datos, renunciando en ese proceso a la reciprocidad
    Al final, a nadie le importó demasiado automatizar el ajuste de datos de materiales en una BRDF, y aun entre quienes sí tenían interés, se preferían más los BSDF simétricos y suficientemente conservativos
    La investigación posterior también se enfocó mayormente en mejorar eso, sobre todo porque si se rompe la simetría, técnicas como el trazado bidireccional de trayectorias se vuelven bastante extrañas

  • Me pregunto por qué el nombre de la prueba incluye furnace. Entiendo el concepto general, pero el nombre se siente bastante arbitrario; me da curiosidad si tiene algún fundamento

    • El nombre viene de los experimentos clásicos de radiación de cuerpo negro, que usaban hornos, kilns o furnaces
      Aquí la idea es parecida: el objeto está atrapado dentro de una cavidad con un espectro de emisión uniforme. Solo que en este caso no es negro, sino blanco
    • Porque el interior de un horno caliente brilla con una iluminación uniforme, como la que se simula en la prueba
    • Como es una prueba que observa una situación dentro de un entorno iluminado uniformemente de blanco, se parece más a un nombre mnemotécnico que evoca la imagen de un horno extremadamente caliente
  • Justo hace unos días me apareció en las recomendaciones de YouTube un video sobre este tema, y era contenido de la próxima versión de Blender 4.0
    Se agrega una nueva función Multiscatter GGX al BSDF, entra mucho más a fondo y muestra bastantes ejemplos
    https://www.youtube.com/watch?v=v6qXbV_Q7z4

  • No sé cómo se supone que debería verse el ShaderToy incrustado. Le doy reproducir y espero, pero no pasa nada por más de un minuto
    Creo que el artículo sería mucho mejor aunque fuera con unas cuantas capturas de pantalla de pruebas fallidas

    • Al principio empieza en gris, luego se ve el contorno de la esfera y después el fondo aparece con un fade-in. Aparecen una esfera roja, una azul y una blanca alrededor de la esfera gris/blanca central, y luego la escena vuelve a desvanecerse a gris
      Después vuelven a aparecer la esfera roja y la azul, y se ve algo como un reflejo en la esfera central, pero la esfera central se “mezcla” con el fondo y cuesta distinguir que es una esfera
    • Parece que necesita WebGL. ¿Puedes revisar si WebGL está activado en tu navegador?