glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -40.0f);
vsh = new Shader(GL_VERTEX_SHADER, "uniform highp vec4 LIGHT_POS;\n" +
"uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
"uniform mediump mat3 NORMAL_MATRIX;\n" +
"uniform lowp vec3 GEAR_COLOR;\n" +
"attribute highp vec3 vPosition;\n" +
"attribute mediump vec3 vNormal;\n" +
"varying lowp vec3 color;\n" +
"void main(void) {\n" +
"\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 1.0);\n" +
"\tvec3 normal = NORMAL_MATRIX * vNormal;\n" +
"\tcolor = max(dot(normal, vec3(LIGHT_POS)), 0.0) * GEAR_COLOR + vec3(0.05);\n" +
"}");
fsh = new Shader(GL_FRAGMENT_SHADER, "varying lowp vec3 color;\n" +
"void main(void) {\n" +
"\tgl_FragColor = vec4(color, 1.0);\n" +
"}");
program = new ShaderProgram(vsh, fsh);