4

私はフォンシェーディングを学んでいて、いくつかの混乱があります:

  1. フォンシェーディングのライト位置のどの座標ですか?(モデルスペース、モデルビュー、または他に何がありますか?)
  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. 座標フレームは、シェーディングの種類とは関係ありません。モデル空間、ワールドスペース、ビュースペース、または任意の構成スペースでフォンシェーディングを実行できます。唯一重要なことは、数式内のすべての関連するベクトルが同じ空間に変換されることを確認することです。
  2. この場合、シェーディングはビュースペースで行われているように見えます。ビュースペースでは、頂点座標は目に対して定義されます。したがって、頂点から目へのベクトル(eyeVec)は、目から頂点へのベクトル(vVertex)の否定です。
于 2012-06-04T06:35:52.207 に答える