I'm playing 开发者_运维问答with per pixel lighting shaders and i don't know one thing: What is half vector of light source ?
vec3 halfVector = normalize(gl_LightSource[1].halfVector.xyz);
I would like i you can explain it in math rows, i understand math better than words :)
From this post:
A "halfway vector" (if you mean that by "half vector") is the unit vector at the half angle between two other vectors. Normally the halfway vector [...] is computed between the vector to the viewer v and the light source l:
h := ( v + l ) / || v + l ||
The half vector therefore is the unit angle bisector of view- and light vector.
Edit: For a complete explanation of the lighting model including the half vector, just see the Blinn-Phong wikipedia article
The the answer by Dario is correct, but since the question was for GLSL, here is the appropriate code:
vec3 hf = normalize(v + l);
Generally the "THE" half vector is the vector between the light and the view vector. It is generally used as input to the specular bit of the Blinn-Phong equations.
this was my solution:
vec3 halfVector = normalize(lightDirection + viewDirection);
EDIT: it is not 100% correct but working when you want to do it more simple.
精彩评论