我正在玩每像素照明着色器,我不知道一件事:什麼是半光源矢量?什麼是glsl中的半光矢量?
vec3 halfVector = normalize(gl_LightSource[1].halfVector.xyz);
我想我可以在數學行解釋,我理解數學比的話:)
我正在玩每像素照明着色器,我不知道一件事:什麼是半光源矢量?什麼是glsl中的半光矢量?
vec3 halfVector = normalize(gl_LightSource[1].halfVector.xyz);
我想我可以在數學行解釋,我理解數學比的話:)
從this post更好:
A「半路載體」(如果你的意思是乘以「半矢量」)是兩個其他矢量之間半角的單位矢量。通常情況下,中途矢量[...]被計算的矢量給觀衆v和光源L之間:
h := (v + l)/|| v + l ||
半向量因此是視圖 - 和光矢量的單元angle bisector。
編輯:對於包括半向量的光照模型的完整解釋,只看到Blinn-Phong wikipedia article
的由達里奧的答案是正確的,但由於問題對於GLSL,這裏是適當的代碼:
vec3 hf = normalize(v + l);
通常,「THE」半矢量是光與視圖矢量之間的矢量。它通常用作Blinn-Phong方程的鏡面位的輸入。
vec3 halfVector = normalize(lightDirection + viewDirection);
這是真的嗎?如果v是{0,5}並且l是{2,0},那麼h和v之間的角度是〜21度,並且h和l之間的角度是〜69度。假設(v + 1)是{2,5}並且|| v + 1 ||是Sqrt [29] – ColacX 2012-12-13 02:35:31
我認爲v和l假定在這裏歸一化。 – jgon 2016-12-12 11:18:13