132001f49Smrg// Vertex shader for cube-texture reflection mapping 232001f49Smrg// Brian Paul 332001f49Smrg 432001f49Smrg 532001f49Smrgvarying vec3 normal; 632001f49Smrg 732001f49Smrgvoid main() 832001f49Smrg{ 932001f49Smrg vec3 n = gl_NormalMatrix * gl_Normal; 1032001f49Smrg vec3 u = normalize(vec3(gl_ModelViewMatrix * gl_Vertex)); 1132001f49Smrg float two_n_dot_u = 2.0 * dot(n, u); 1232001f49Smrg vec4 f; 1332001f49Smrg f.xyz = u - n * two_n_dot_u; 1432001f49Smrg f.w = 1.0; 1532001f49Smrg 1632001f49Smrg // outputs 1732001f49Smrg normal = n; 1832001f49Smrg gl_TexCoord[0] = gl_TextureMatrix[0] * f; 1932001f49Smrg gl_Position = ftransform(); 2032001f49Smrg} 21