1

我正在使用一种简单形式的 Phong 着色模型,其中场景由在方向 -y 上照射的定向光照亮,单色光强度为 1。视点无限远,沿着向量给定的方向看(- 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 方向上无限远。

4

2 回答 2

1

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

于 2012-05-17T06:27:08.770 回答
1

反射向量可以通过使用reflectGLSL 中的函数来计算。

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)

于 2012-05-17T08:50:18.920 回答