4

我正在学习 Phong 着色并得到一些混淆:

  1. Phong着色中光的位置坐标是什么?(模型空间、模型视图或其他什么?)
  2. 据此:http ://www.ozone3d.net/tutorials/glsl_lighting_phong_p2.php :

顶点着色器是:

varying vec3 normal, lightDir, eyeVec;

void main()
{   
    normal = gl_NormalMatrix * gl_Normal;
    vec3 vVertex = vec3(gl_ModelViewMatrix * gl_Vertex);

    lightDir = vec3(gl_LightSource[0].position.xyz - vVertex);
    eyeVec = -vVertex;

    gl_Position = ftransform();
}

为什么 eyeVec = -vVertex?

4

1 回答 1

8
  1. 坐标系与阴影的种类无关。您可以在模型空间、世界空间、视图空间或任何您想要的合成空间中进行 phong 着色。唯一重要的是确保公式中的所有相关向量都转换到相同的空间中。
  2. 在这种情况下,看起来着色是在视图空间中完成的。在视图空间中,顶点坐标是相对于眼睛定义的。所以从一个顶点到眼睛的向量(eyeVec)是从眼睛到顶点的向量(vVertex)的否定。
于 2012-06-04T06:35:52.207 回答