From dabfe680a9da4d14e05db325050c4c163d97bd90 Mon Sep 17 00:00:00 2001
From: Hannes Janetzek <hannes.janetzek@gmail.com>
Date: Sat, 12 Jan 2013 16:42:46 +0100
Subject: [PATCH] one single light direction from north

---
 .../renderer/overlays/ExtrusionOverlay.java   | 21 ++++++++++++-------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/org/oscim/renderer/overlays/ExtrusionOverlay.java b/src/org/oscim/renderer/overlays/ExtrusionOverlay.java
index 2b700574..261a5464 100644
--- a/src/org/oscim/renderer/overlays/ExtrusionOverlay.java
+++ b/src/org/oscim/renderer/overlays/ExtrusionOverlay.java
@@ -226,8 +226,10 @@ public class ExtrusionOverlay extends RenderOverlay {
 
 		GLES20.glUseProgram(extrusionProgram[shaderMode]);
 		GLState.enableVertexArrays(uExtVertexPosition, -1);
-		GLES20.glEnable(GLES20.GL_CULL_FACE);
-		GLES20.glCullFace(GLES20.GL_FRONT);
+		if (pos.scale < 2) {
+			GLES20.glEnable(GLES20.GL_CULL_FACE);
+			GLES20.glCullFace(GLES20.GL_FRONT);
+		}
 		GLES20.glDepthFunc(GLES20.GL_LESS);
 		GLES20.glColorMask(false, false, false, false);
 		GLES20.glUniform1i(uExtMode, 0);
@@ -306,7 +308,8 @@ public class ExtrusionOverlay extends RenderOverlay {
 			tiles[i] = null;
 		}
 
-		GLES20.glDisable(GLES20.GL_CULL_FACE);
+		if (pos.scale < 2)
+			GLES20.glDisable(GLES20.GL_CULL_FACE);
 		GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, 0);
 	}
 
@@ -331,7 +334,7 @@ public class ExtrusionOverlay extends RenderOverlay {
 	private final float _g = 0xe8;
 	private final float _b = 0xe6;
 	private final float _o = 55;
-	private final float _s = -10;
+	private final float _s = 20;
 	private final float _l = 16;
 	private float mAlpha = 1;
 	private final float[] mColor = {
@@ -415,16 +418,18 @@ public class ExtrusionOverlay extends RenderOverlay {
 					+ "   if (u_mode == 1){"
 					//     sides 1 - use 0xff00
 					//     scale direction to -0.5<>0.5 
-					+ "    float dir = abs(a_light.y / ff - 0.5);"
+					//+ "    float dir = abs(a_light.y / ff - 0.5);"
+					+ "    float dir = a_light.y / ff;"
 					+ "    float z = (0.98 + gl_Position.z * 0.02);"
 					+ "    color = u_color[1];"
-					+ "    color.rgb *= (0.7 + dir * 0.4) * z;"
+					+ "    color.rgb *= (0.8 + dir * 0.2) * z;"
 					+ "  } else if (u_mode == 2){"
 					//     sides 2 - use 0x00ff
-					+ "    float dir = abs(a_light.x / ff - 0.5);"
+					//+ "    float dir = abs(a_light.x / ff - 0.5);"
+					+ "    float dir = a_light.x / ff;"
 					+ "    float z = (0.95 + gl_Position.z * 0.05);"
 					+ "    color = u_color[2] * z;"
-					+ "    color.rgb *= (0.7 + dir * 0.4) * z;"
+					+ "    color.rgb *= (0.8 + dir * 0.2) * z;"
 					+ "  } else {"
 					//     outline
 					+ "    float z = (0.8 - gl_Position.z * 0.2);"