頂点シェーダ上でカメラに関する情報を計算する

camera-vertex-shader.png

頂点シェーダ上でカメラベクトルを取得

vec4 p = gl_ModelViewMatrix * gl_Vertex;  // 頂点位置
vec3 cam =normalize(p.xyz / p.w);          // 視線ベクトル

頂点シェーダー上でカメラとオブジェクトの距離を計算

void main(void){
     //頂点を視点空間に座標変換する
     vec4 vViewPos=matView*rm_Vertex;
    //視点までの距離を計算する
 v_eyeDist=sqrt((vViewPos.x-u_eyePos.x)*(vViewPos.x-u_eyePos.x)+(vViewPos.y-u_eyePos.y)*(vViewPos.y-u_eyePos.y)+(vViewPos.z-u_eyePos.z)*(vViewPos.z-u_eyePos.z));
   gl_Position=matViewProjection*rm_Vertex;
   v_texCoord=rm_TexCoords0.xy;
}

camera vertex-shader

サポートサイト Wikidot.com cameravertex-shader