用定向光源计算反射向量

时间:2012-05-17 06:13:51

标签: opengl glsl phong

我正在使用一种简单形式的Phong Shading模型,其中场景由朝向-y方向的方向光照亮,具有强度为1的单色光。视点无限远,沿着由vector(-1,0,-1)。

在这种情况下,阴影方程由

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

其中L是定向光源,kdks都是0.5n_s = 50

在这种情况下,如何计算R向量?

我很困惑因为计算有限向量我们需要有限坐标。在方向光的情况下,它在-y方向上无限远。

2 个答案:

答案 0 :(得分:1)

这些方程式使用法向量。所以在你的情况下,当你使用定向光时,它只是意味着L是常数并且等于[x = 0,y = 1,z = 0](或[0,-1,0],我不记得了,你应该检查你的等式L中是否指向该点或远离该点。)

答案 1 :(得分: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在vec3(0.0)