3 * CS5600 University of Utah
5 * mcgarvey@eng.utah.edu
10 uniform int numLights;
12 uniform vec4 mspecular;
13 uniform float shininess;
14 uniform vec4 diffuse[MAX_LIGHTS];
15 uniform vec4 specular[MAX_LIGHTS];
16 uniform sampler2D sampler;
17 uniform bool isTexture;
20 varying vec2 textureCoord;
22 varying vec3 lightDir[MAX_LIGHTS];
27 gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
31 c *= texture2D(sampler, vec2(textureCoord.x, 1.0 - textureCoord.y));
34 vec3 N = normalize(normal);
36 for (i = 0; i < numLights; ++i) {
37 vec3 L = normalize(lightDir[i]);
40 gl_FragColor += diffuse[i] * c * kd;
41 vec3 E = normalize(eyeVec);
42 vec3 R = reflect(-L, N);
43 float ks = pow(max(dot(R, E), 0.0), shininess);
44 gl_FragColor += specular[i] * mspecular * ks;
47 gl_FragColor += ambient * c;
49 gl_FragColor.a = color.a; // preserve the model's alpha