varying vec3 vpos;
varying vec3 lightvec;
varying vec2 texCoord;
varying vec3 normal_overhand;

uniform sampler2D texSampler;
uniform sampler2D texSampler2;

void main(void)
{
	vec3 TexCoord = vec3(gl_TexCoord[0]);
	vec4 __SourceAmbient = vec4(0.3, 0.3, 0.3, 1.0);
	vec4 __SourceDiffuse = vec4(0.8, 0.8, 0.8, 1.0);
	
	vec4 __MaterialSpecular = vec4(0.8, 0.8, 0.8, 1.0);
	float __MaterialShininess = float(50.0);
	
	//vec3 normal = normalize(vec3(2.0*(texture2D(texSampler2, vec2(TexCoord)) - 0.5)));
	vec3 normalbump = normalize((texture2D(texSampler2, texCoord).xyz * 2.0 - 1.0));
	vec3 normal = (normal_overhand - (normalbump));

	vec3 Eye 	     = normalize(-vpos);

	vec3 Reflected       = normalize(2.0 * dot(normal, lightvec) * normal - lightvec);
	vec3 Reflected2       = normalize(2.0 * dot((normal * 2), lightvec) * normal_overhand - lightvec);

	vec4 IAmbient	     = vec4(__SourceAmbient);
	vec4 IDiffuse	     = vec4(__SourceDiffuse) * max(dot(normal, lightvec), 0.0);
	vec4 ISpecular	     = __MaterialSpecular * pow(max(dot((Reflected2), Eye), 0.0), __MaterialShininess);

	gl_FragColor 	     = texture2D(texSampler, vec2(gl_TexCoord[0])) * (IAmbient + IDiffuse + ISpecular);
}