u€Á ˆ÷?bûï@ê’-?ùÒ?9;»¾˜ee¾ÿ333ÿÌÌÌÿ@ÿ P@ ?++öô >ò›º=Þö¿ÀMøJ?í.?Ó'¾^½ÿ333ÿÌÌÌÿ@ÿ…~H@T]@uniform float time; uniform float frequency; #define NUM_LIGHTS 2 varying vec3 normal, lightDir[NUM_LIGHTS], eyeVec; varying vec3 position; void main(void) { vec3 tangent; vec3 binormal; vec3 c1 = cross(gl_Normal, vec3(0.0, 0.0, 1.0)); vec3 c2 = cross(gl_Normal, vec3(0.0, 1.0, 0.0)); if(length(c1)>length(c2)) tangent = c1; else tangent = c2; tangent = normalize(tangent); //binormal = cross(tangent, gl_Normal); binormal = cross(gl_Normal, tangent); binormal = normalize(binormal); gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; normal = -normalize(gl_NormalMatrix * gl_Normal); position = gl_Vertex; int i = 0; for( i = 0; i < NUM_LIGHTS; ++i ) lightDir[i] = vec3(gl_LightSource[i].position.xyz - gl_Position.xyz); eyeVec = -gl_Position; } #define NUM_LIGHTS 2 #define SPIRCOEF 6.0 #define SPIRSIZE 1.5 varying vec3 normal, lightDir[NUM_LIGHTS], eyeVec; varying vec3 position; void main(void) { vec4 final_color = vec4(0.0, 0.0, 0.0, 0.0); vec3 N = normalize(normal); float r = sqrt( position.x * position.x + position.y * position.y ); float sinOps = cos(SPIRCOEF * r) - sin( SPIRCOEF * r ); float spiralPos = abs( r * sinOps - position.x + position.y); if (spiralPos > SPIRSIZE) discard; final_color += gl_FrontLightModelProduct.sceneColor; int i = 0; for( i=0; i 0.0) { final_color += gl_LightSource[i].diffuse * gl_FrontMaterial.diffuse * lambertTerm; vec3 E = normalize(eyeVec); vec3 R = reflect(-L, N); float specular = pow( max(dot(R, E), 0.0), gl_FrontMaterial.shininess ); final_color += gl_LightSource[i].specular * gl_FrontMaterial.specular * specular; } } gl_FragColor = final_color; }