varying vec4 v_vColour;
varying vec2 v_vPosition;

uniform sampler2D texture;
uniform vec2  dimension;
uniform vec2  samplePos;
uniform vec3  lightPos;
uniform float lightInt;

void main() {
	vec4 col = texture2D( texture, samplePos );
	
	vec2 tx = 1. / dimension;
	float x = v_vPosition.x - tx.x;
	float y = v_vPosition.y - tx.y;
	float mag = sqrt(x * x + y * y);
	if(mag >= 1.) {
		x /= (mag + tx.x);
		y /= (mag + tx.y);
	}
	
	float z = sqrt(1.0 - (pow(x, 2.0) + pow(y, 2.0)));
	
    vec3 position = vec3(x, y, z);
	vec3 normal   = normalize(position);
	vec3 light    = normalize(lightPos);
	
	float lightInf = 1. - dot(normal, light);
	col.rgb -= col.rgb * lightInf * lightInt;
	
	gl_FragColor = col;
}