0001: // ------------------------------------------------------------ 0002: // Phong シェーディング (slang:vertex program) 0003: // 0004: // Copyright (c) 2003 IMAGIRE Takashi. All rights reserved. 0005: // ------------------------------------------------------------ 0006: 0007: // ------------------------------------------------------------- 0008: // グローバル変数 0009: // ------------------------------------------------------------- 0010: uniform vec3 LightPos; 0011: 0012: // ------------------------------------------------------------- 0013: // 頂点プログラムからフラグメントプログラムに渡すデータ 0014: // ------------------------------------------------------------- 0015: varying vec3 VERTEX_COLOR; // 頂点色 0016: varying vec3 VERTEX_EYE; // 視線ベクトル 0017: varying vec3 VERTEX_NORMAL; // 法線ベクトル 0018: varying vec3 VERTEX_LIGHT; // ライトベクトル 0019: 0020: // ------------------------------------------------------------ 0021: // 頂点シェーダプログラム 0022: // ------------------------------------------------------------ 0023: void main(void) 0024: { 0025: // 座標変換 0026: gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; 0027: 0028: // 色のための計算 0029: vec4 pos = gl_ModelViewMatrix * gl_Vertex; 0030: vec3 L = LightPos - vec3(pos); 0031: vec3 N = gl_NormalMatrix * gl_Normal; 0032: 0033: VERTEX_COLOR = vec3(gl_Color); 0034: VERTEX_NORMAL = N; 0035: VERTEX_LIGHT = L; 0036: VERTEX_EYE = vec3(pos); 0037: } 0038: