#ifdef GL_ES
// Set default precision to medium
precision mediump int;
precision mediump float;
#endif

uniform mat4 vp_matrix;
uniform mat4 norm_matrix;
uniform mat4 m_matrix;

attribute vec4 a_position;
attribute vec2 a_texcoord;
attribute vec3 a_normal;

varying vec2 v_texcoord;
varying vec3 v_position;
varying vec3 v_normal;

void main()
{
	// Calculate vertex position in screen space
	gl_Position = vp_matrix * norm_matrix * m_matrix * a_position;

	// Pass data to fragment shader
	// Value will be automatically interpolated to fragments inside polygon faces
	v_texcoord = a_texcoord;
	v_position = vec3(norm_matrix * m_matrix * a_position);
	v_normal = a_normal;
}
