Draw the cubes using flat shading and fewer vertexes.
[mandelwow.git] / shaded.vert
index 887d94c826671469bedbef540d5ce336143773d9..c7c7fa168cd86dd6d5c75005585cd1c77cf6e2cc 100644 (file)
@@ -3,18 +3,22 @@ precision lowp float;
 
 in vec3 position;
 in vec3 normal;
-out vec4 color;
+flat out vec4 color;  // Shaded color
 
 uniform mat4 model;
 uniform mat4 perspview;
+uniform vec3 col;
 
 void main() {
     mat4 m = perspview * model;
-    vec3 dark = vec3(0.0, 0.0, 0.1);
-    vec3 bright = vec3(0.0, 0.0, 0.9);
-    vec3 u_light = vec3(-0.5, -0.7, -0.6);
+    vec3 dark = col * 0.1;
+    vec3 u_light = vec3( 0.5, -0.7, -0.6);
     vec3 v_normal = transpose(inverse(mat3(model))) * normal;
-    float brightness = max(dot(normalize(v_normal), normalize(u_light)), 0.0);
-    color = vec4(mix(dark, bright, brightness), 1.0);
+
+    float distance = model[3][2];
+    float attenuation = 1. / (1. + distance * distance * 0.05);
+    float brightness = max(dot(normalize(v_normal), normalize(u_light)) * attenuation, 0.0);
+    color = vec4(mix(dark, col, brightness), 1.0);
+
     gl_Position = m * vec4(position, 1.0);
 }