[VP objbump]
//varying vec2 texcoord;
//varying vec3 pos;

attribute vec3 Binormal;
attribute vec3 Tangent;

uniform mat4 ViewMatrix;
uniform vec3 LightDir;

varying vec3 n;
varying vec3 l;

void main() {
	// gl_ModelViewMatrix - Model matrix of the object
	vec4 v = gl_ModelViewMatrix * gl_Vertex; // Wolrd-space Vertex position
	//vec4 v = gl_Vertex; // Wolrd-space Vertex position
	
	mat3 m = mat3(gl_ModelViewMatrix[0].xyz,gl_ModelViewMatrix[1].xyz,gl_ModelViewMatrix[2].xyz) * mat3(Tangent,Binormal,gl_Normal);
	//mat3 m = mat3(gl_ModelViewMatrix) * mat3(vec3(0,0,0),vec3(0,0,0),gl_Normal);
	//mat3 m = mat3(gl_ModelViewMatrix);

	//n = normalize(mat3(gl_ModelViewMatrix) * gl_Normal);
	l = -LightDir;
	l.y = -l.y;
	l = normalize(l*m);
	
	gl_Position = gl_ProjectionMatrix * ViewMatrix * v;
	gl_TexCoord[0] = gl_MultiTexCoord0;
//	texcoord = gl_MultiTexCoord0.xy;
}

[FP objbump]
varying vec3 n;
varying vec3 l;

uniform sampler2D NormalMap;
uniform sampler2D Texture;
uniform float SunlightPower;

void main() {
	
	//vec3 nt = normalize(n);
	
	vec3 nt = normalize(texture2D(NormalMap,gl_TexCoord[0].xy).xyz*2.0 - 1.0);
	
	vec3 l2 = normalize(l);
	//vec3 l2 = normalize(vec3(0.5,1.0,1.0));
	vec3 diffColor = vec3(texture2D(Texture,gl_TexCoord[0].xy));
	float diff = max(dot(nt,l2),0.0)+0.2;
	
	
	
	vec3 res = diff*diffColor*SunlightPower;
	
	gl_FragColor = vec4(res,1);
}