开发者

What is half-vector of light in glsl?

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜