3 uniform mat4 projection_matrix;
4 uniform mat4 modelview_matrix;
5 uniform vec4 current_color;
8 uniform bool lightsOn[8];
9 uniform vec4 lightsPos[8];
11 uniform vec3 lightsDiffuse[8];
12 uniform vec3 lightsAmbient[8];
13 uniform vec3 lightsSpecular[8];
15 uniform vec3 globalAmbient;
16 uniform bool lightingOn;
19 uniform bool perVertexColor;
20 uniform vec3 matDiffuse;
21 uniform vec3 matAmbient;
22 uniform vec3 matSpecular;
23 uniform vec3 matEmissive;
24 uniform float matOpacity;
25 uniform float matPower;
26 uniform bool matTwoSided;
39 vec3 n = normalize(mat3x3(modelview_matrix) * normal);
40 gl_Position = projection_matrix * modelview_matrix * vec4(vertex, 1.0);
46 vec3 diffuseColor = perVertexColor ? color.xyz : matDiffuse;
47 vec3 ambientColor = perVertexColor ? color.xyz : matAmbient;
48 float opacity = perVertexColor ? color.w : matOpacity;
51 vec3 ecPosition3 = vec3(gl_Position) / gl_Position.w;
52 vec3 eye = vec3(0.0, 0.0, 1.0);
57 for(i = 0; i < 8; i++)
60 vec4 l = lightsPos[i];
61 float d = dot(n, l.xyz);
69 halfVector = normalize(VP + eye);
70 nDotVP = max(0, dot(n, VP));
73 float nDotHV = max(0.0, dot(n, halfVector));
74 pf = pow(nDotHV, matPower);
78 c += diffuseColor * min(1, max(0, d)) * lightsDiffuse[i];
79 c += matSpecular * pf * lightsSpecular[i];
80 c += matAmbient * lightsAmbient[i];
85 float d2 = dot(iN, l.xyz);
88 float nDotVP = max(0, dot(iN, VP));
91 float nDotHV = max(0.0, dot(iN, halfVector));
92 pf = pow(nDotHV, matPower);
96 c2 += diffuseColor * min(1, max(0, d2)) * lightsDiffuse[i];
97 c2 += matSpecular * pf * lightsSpecular[i];
98 c2 += matAmbient * lightsAmbient[i];
102 c += ambientColor * globalAmbient;
104 fColor = vec4(c, opacity);
108 c2 += ambientColor * globalAmbient;
110 fColorBack = vec4(c2, opacity);
114 fColor = current_color * color;