MhF?c?ux8WUV׾333@B:AHA???]PWVIAѱDAz'? ?yϣ߾333@ \r@@%"u?dAq>Ci=v=333@ 0Aff@ZW1AA5?5?333@@ZT@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; } y#define NUM_LIGHTS 2 #define SPIRCOEF 1.0 #define SPIRSIZE 0.4 #define SPIRINIT 1.0 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( dot( position.xy, position.xy) *abs( position.z ) ); float spiralPos = 1 * position.x * tan( log2( r * r ) ) - position.y * 1.0; 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; }