¿Por qué se usa H (blinn) en lugar de R (phong) en el sombreado especular?

22

No puedo encontrar una buena razón para esto en ningún lado. El vector de reflexión utilizado en phong tiene una base simple en física. Pero el medio vector utilizado en blinn aparentemente no tiene una base racional, y no constituye una reflexión adecuada. Y, sin embargo, se utiliza en todas las funciones de sombreado llamadas "basadas físicamente". Si hay una buena base física para ello, me gustaría saberlo.

Lo que he podido encontrar son algunas razones:

Es más rápido : hay información mixta sobre esto, pero aun así habría sido una gran razón ... en el año 1998.

Maneja ángulos superiores a 90 grados mejor , por lo que puedo decir, la única razón de esto es porque el término phong se ha utilizado incorrectamente. El producto punto de la reflexión y la vista da un ángulo entre -1 y +1. Por lo general, este ángulo se fija a 0 a 1, esta es la causa directa del problema de 90 grados. Vuelva a normalizar el ángulo en lugar de sujetarlo y obtendrá la cobertura completa de 180 grados. Me niego a creer que una simple operación x * 0.5 + 0.5 haya eludido el mundo de los gráficos durante 40 años.

maneja mejor los bordes : el "problema" de los bordes también existe en la solución blinn, solo en menor grado. La causa principal es la simulación inadecuada de la iluminación del área en el terminador, que debería ser esencial para cualquier sombreador "basado físicamente". Pero incluso en situaciones más simples, una función sigmoidea puede aproximarse correctamente a una línea de terminación suave. Multiplicarlo en un término lambert es incorrecto, ya que atenúa el término especular incorrectamente, esto podría cancelar un término nuevo y conducir a más errores.

Tiene reflejos largos en el borde : me parece que, si bien los reflejos anisotrópicos pueden ser realistas, el parpadeo no es la forma correcta de implementarlos, ya que solo aparecen en el borde. Es simplemente una feliz coincidencia que un error en el término H parezca realista.

Ninguna de estas razones es satisfactoria, quiero resolver esta locura.

Quiero aclarar que no estoy hablando específicamente de blinn y phong , sino de los componentes vectoriales H y R, que se utilizan como base para estos sombreadores y otros.

BmB
fuente

Respuestas:

24

Para superficies perfectamente reflectantes, el modelo Phong tiene sentido. Sin embargo, ¿de dónde viene el n in (RV) ^ n del modelo Phong para aproximar superficies más rugosas? ¿Dónde está la teoría de que tienes que elevar el resultado del producto punto a la potencia, excepto que simplemente parece dar el resultado adecuado empíricamente?

Para el modelo Blinn, existe una teoría de microfacetas basada físicamente para respaldar todos los componentes de la ecuación y también hay evidencia empírica de que el modelo se aproxima más a las superficies del mundo real (aunque no perfectamente). El medio vector en el modelo Blinn se usa como una entrada a la función de distribución normal (NDF), que es una aproximación de cómo se distribuyen las microfacetas sobre la superficie normal en función de la rugosidad de la superficie. Es decir, cuando el vector H apunta a la dirección normal, el valor es más alto ya que la mayoría de las microfacetas apuntan a esa dirección, y la probabilidad disminuye en consecuencia cuando aumenta el ángulo entre el vector normal y el H.

Sin embargo, el modelo Blinn no es perfecto de ninguna manera y, por ejemplo, no tiene en cuenta el término de geometría del modelo de microfaceta (es decir, sombreado y enmascaramiento de microfacetas cuya importancia aumenta en los ángulos de pastoreo).

JarkkoL
fuente
No estoy hablando de la implementación específica de phong que de hecho no tiene una base física. Pero no puedo ver cómo la teoría de las microfacetas admite H mejor que R como base para un vector de reflexión. Ningún modelo de sombreado es compatible empíricamente, cada uno falla en la reproducción de materiales reales según el addy "Validación experimental de BRDF" 2005. Me parece que las microfacetas se modelan en phong a través del producto de punto R · V, que puede servir como un base para un resaltado más correcto físicamente a través de una función de reasignación o una rampa. Una función de potencia es simplemente la reasignación más simple e incorrecta.
BmB
2
@BmB No, las microfacetas no están "modeladas en phong", sino que utilizan la distribución de probabilidad de las microfacetas definidas con el NDF, que se están "muestreando" con el vector H. El NDF es generalmente simétrico respecto a lo normal (isotrópico / anisotrópico), por lo que tiene sentido usar el vector H para ello. Dije que hay evidencia empírica de que Blinn-modelo más estrechamente aproxima materiales del mundo real que Phong.
JarkkoL
Cualquier reflejo que no se encuentre a lo largo del vector de reflejo no es un reflejo espejo perfecto. El producto de puntos produce un valor de reflectancia para ángulos que no son perfectos. Necesariamente, estos deben ser producidos por microfacetas. Por lo tanto, el producto dot modela microfacetas. Un punto simple produce una distribución lineal. Pero la distribución puede ser modelada por cualquier función con R tan bien como con H. Esto no explica nada sobre la validez de H sobre R.
BmB
1
@BmB Le sugiero que lea sobre la teoría de las microfacetas y específicamente sobre la parte del NDF para comprender el concepto. Eso lo ayudará a obtener la respuesta a su pregunta.
JarkkoL
1
Debería abrir una nueva pregunta sobre microfacetas y NDF porque obviamente hay mucho que no comprende sobre estos conceptos y los comentarios no son el lugar adecuado para explicarlos.
JarkkoL
6

En realidad, creo que usted mismo enumeró las razones por las cuales Blinn es el valor predeterminado sobre Phong.

De hecho, cada razón que mencionó es, de hecho, un área donde Blinn demuestra ser superior a Phong.

En conjunto, todo esto lleva a que Blinn sea un mejor valor predeterminado que Phong.

¿Blinn es perfecto? ¿Es mejor que Phong?

No.

Pero es un incumplimiento razonable. Siéntase libre de sustituir Phong por Blinn en cualquier renderizador / sombreador que escriba.

John
fuente
De acuerdo, esto es exactamente eso. Ninguno de los modelos es perfecto. La aproximación de Blinn era sobre todo una optimización del rendimiento en aquel entonces, ya que calcular el medio ángulo es mucho más barato. Resultó que también se ve mejor la mayor parte del tiempo.
Damon
-2

He descubierto la razón por la que se usa el vector H. Desafortunadamente, no es la forma en que se usa en la mayoría de los modelos de sombreado, lo que puede concluirse que es incorrecto.

Para el sombreado con base física, la luz reflejada debe obedecer las ecuaciones de Fresnel. (La mayoría de los sombreadores "basados ​​físicamente" no lo hacen). Las microfacetas también deben obedecer las ecuaciones de Fresnel, que se basan en el ángulo de incidencia de la luz, así como en el índice de refracción de la interfaz para producir un resultado correcto.

De acuerdo con la ley de reflexión, el ángulo de incidencia debe reflejarse con el ángulo de reflexión a lo largo de la superficie normal. Para que un rayo de luz golpee la cámara, lo que sabemos que hizo, debe haber sido reflejado por la luz, de lo que sabemos la dirección. Por lo tanto, la superficie normal debe ser, por deducción, el eje espejo para estas dos direcciones. Esto nos da el medio vector H que se encuentra entre ellos. Calculado normalizando la suma de ambos.

Ahora, al calcular el ángulo entre la dirección de la luz L y el medio vector H, adquirimos el ángulo de incidencia para la reflexión especular de una microfaceta, y podemos atenuarla correctamente utilizando el término fresnel.

Tenga en cuenta que la dirección de la vista es igual a R para esa microfaceta, H no es un término de reflexión. Blinn, Cook, Torrance y Sparrow pueden mamarlo. Phong y Fresnel tenían razón.

BmB
fuente
El término Fresnel es parte de la ecuación BRDF de microfacet y las microfacet individuales no tienen esto en cuenta ya que están modeladas como reflectores perfectos. Tampoco se calcula el ángulo entre los vectores L y H, sino los vectores N y H. Esto debería darle una pista de por qué se está utilizando H. Necesitas un poco más de conocimiento sobre el tema para concluir quién tenía razón o "más bien";)
JarkkoL
Una microfaceta de un material tiene las mismas propiedades que el material. Por lo tanto, una microfaceta de un reflector imperfecto no puede ser en sí misma un reflector perfecto. Tu lógica es poco sólida e inútil. N dot H no tiene significado físico.
BmB
44
No, no es así como funciona el modelo de microfacet. Mi lógica es perfectamente sólida, ya que cualquiera que entienda incluso los conceptos básicos del modelo de microfaceta puede confirmar. Cada microfaceta es un reflector perfecto (es decir, ópticamente plano) y la reflexión imperfecta de un material proviene de la variación de las normales de microfaceta según lo definido por NDF. Su persistencia para desafiar consejos perfectamente válidos es algo divertido;)
JarkkoL
No ha dado ningún consejo, todo lo que ha hecho es persistir en afirmar que tiene razón sin nada que lo respalde y lanzar insultos. H es lo normal de una microfaceta, no el reflejo. La reflexión se puede calcular con lo normal. La física básica no está de acuerdo contigo.
BmB