我正在玩每像素照明着色器,我不知道一件事:什么是光源的半矢量?
vec3 halfVector = normalize(gl_LightSource[1].halfVector.xyz);
Run Code Online (Sandbox Code Playgroud)
我想我可以用数学行解释它,我理解数学比文字更好:)
从这篇文章:
"中间矢量"(如果你的意思是"半矢量")是两个其他矢量之间半角的单位矢量.通常,在向观察者v的矢量和光源l之间计算中途矢量[...]:
h := ( v + l ) / || v + l ||
Run Code Online (Sandbox Code Playgroud)
因此,半矢量是视矢量和光矢量的单位角平分线.
编辑:有关包含半矢量的照明模型的完整说明,请参阅Blinn-Phong维基百科文章