
uniform mat4 matViewInverseTranspose;
uniform mat4 world_view_proj_matrix;
uniform mat4 world_view_matrix;
uniform mat4 view_matrix;
uniform vec4 lightDir;

attribute vec3 vertex;
attribute vec3 normal;
attribute vec2 uv0;

varying vec2  vTexCoord;
varying vec3  vNormal;
varying vec3  vLightVec;
varying vec3  vViewVec;

void main(void)
{
  
   gl_Position = world_view_proj_matrix * vec4(vertex, 1.0);

   vec4 viewLightDir = view_matrix * lightDir;
   vLightVec   = -viewLightDir.xyz;
     

   
   vec3 Pview =  vec3(world_view_matrix * vec4(vertex, 1.0));

       
   vNormal = normalize( vec3(matViewInverseTranspose * vec4(normal, 0.0)));

  
   vViewVec = -normalize(Pview);  
   
   vTexCoord = vec2(uv0);
}
