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.