我正在使用一种简单形式的Phong Shading模型,其中场景由朝向-y方向的方向光照亮,具有强度为1的单色光。视点无限远,沿着由vector(-1,0,-1)。
在这种情况下,阴影方程由
给出I = k_d*L(N dot L)+k_s*L(R dot V)^n_s
其中L
是定向光源,kd
,ks
都是0.5
和n_s = 50
在这种情况下,如何计算R
向量?
我很困惑因为计算有限向量我们需要有限坐标。在方向光的情况下,它在-y方向上无限远。
答案 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)