Holas
Hoy os traigo algo interesante con relación a la componente especular.
Normalmente nosotros definimos la cantidad de especular que va a tener un material y nos quedamos tan anchos. Pero las cosas en la vida real son un poco diferentes, y aquí os traigo una idea que estoy desarrollando partiendo de lo que en su día hicieron los chicos de Valve con su ecuación grafica.
El caso es que una superficie con mucha especular (muy brillante), es brillante cuando en casi cualquier ángulo que formemos entre nosotros y la luz. El problema radica en las superficies que NO son brillantes, concretamente las mates, que si las miramos de frente son mates, PERO si estas superficies se ponen en paralelo a nuestro vector de visión y formando ángulo para el brillo con la luz, entonces se vuelven brillantes.
Esto es lo que comentan en la wiki de Valve software, yo concretamente antes de implementarlo lo he probado con una superficie mate y sí que es verdad.
Para ello, nos ayudamos de un parámetro que se llama fresnel. El fresnel es simplemente un producto escalar entre nuestro vector de visión y la normal del píxel. Este valor de fresnel multiplicado por la componente especular nos proporciona “aproximadamente” ese efecto que comentábamos antes.
Yo lo he implementado recientemente en los materiales y la verdad es que cumple su cometido casi a la perfección, aunque el algoritmo no sea idéntico al que utilizan en Valve software.
Un saludo a todos.
P.D: Las imágenes son de la wiki de Valve, las he puesto porque ayuda a entender el concepto que explico.



Noviembre 19, 2008 a las 10:10 am
Hi,
realmente el termino de fresnel depende del angulo entre el rayo de luz y la normal. Aqui lo explican bien:
http://en.wikipedia.org/wiki/Fresnel_equations
http://developer.nvidia.com/object/fresnel_wp.html
Luego, para simplificar se usa la aproximacion de Schlick. Aqui tienes el paper:
http://dept-info.labri.u-bordeaux.fr/~schlick/DOC/eur2.html
Y aqui tambien lo explican:
http://www.ce.chalmers.se/edu/year/2006/course/EDA425/labbar/lab/task2e.html
http://www.ce.chalmers.se/edu/year/2006/course/EDA425/lectures/rt3.pdf
Un saludo,
Rubén Penalva
Noviembre 19, 2008 a las 6:46 pm
Holas
Comentarte de que has puesto tanto link que el filtro de spam de wordpress ha interpretado este mensaje como un mensaje de spam
menos mal que lo he visto jejeje.
Bueno comentarte de que si bien es cierto que el fresnel como tal se calcula como se describe en esos papers, el efecto que buscamos aqui es encontrar una componente mediante la cual nos sea facil determinar que pixeles forman un angulo de 90º entre el vector de vision y la normal de la superficie. Yo creo que como es muy parecido el uno del otro seguramente sea por eso que se refieren a los dos metodos por le mismo nombre.
Un saludo y gracias por la aportacion
P.D: En uno de los enlaces dan una pista (hint) para aumentar el rendimiento diciendo que se calcule el fresnel en el vertex shader. Si estamos realizando iluminacion per-pixel con normal mapping, iros con cuidado porque puede dar errores graficos no deseados. Por tanto, si teneis ilumionacion per-pixel CON normal mapping, os aconsejo que el valor de fresnel ( el que utiliza Valve ) para el efecto del post lo hagais en el pixel shader.