2012-05-17 29 views
1

我使用的是一種簡單的Phong Shading模型,其中場景通過定向光照亮方向-y,使用單色強度爲1的光。視角無限遠,沿矢量(-1,0,-1)給出的方向查看。使用定向光源計算反射向量

在這種情況下,陰影方程由

I = k_d*L(N dot L)+k_s*L(R dot V)^n_s 

其中L是定向光源,​​,ks給定兩者0.5n_s = 50

在這種情況下,我怎樣才能計算R矢量?

我很困惑,因爲要計算有限的向量,我們需要有限的座標。在方向光的情況下,它在-y方向上無限遠。

回答

1

可以使用GLSL的reflect函數來計算反射向量。

vec3 toEye = normalize(vec3(0.0) - vVaryingPos);  
vec3 lightRef = normalize(reflect(-light, normal)); 
float spec = pow(dot(lightRef, toEye), 64.0f); 
specularColor = vec3(1.0)*max(spec, 0.0); 

計算眼空間做......所以EYEPOS是VEC 3(0.0)

+1

您應該'pow'前申請了'max',否則負值,提升到時64次方將變爲正值,而應該被調整爲0。 –

1

那些方程使用法向量。所以在你的情況下,當你使用定向光時,它僅僅意味着L是常數並且等於[x = 0,y = 1,z = 0](或者[0,-1,0],我不記得,你應該檢查在你的方程中L是指向點還是離開點)。