packages feed

call-0.1.2: shaders/vertex.glsl

#version 330
uniform mat4 projection;
uniform mat4 matrices[13];
uniform int level;
uniform bool useEnv;
out vec2 UV;
out vec2 envUV;
in vec3 in_Position;
in vec2 in_UV;
in vec3 in_Normal;
out vec3 lightDir;
out vec3 normal;

void main(void) {
  mat4 model = mat4(1.0);
  for(int i=0; i < level; i++)
  {
    model *= matrices[i];
  }
  gl_Position = projection * model * vec4(in_Position, 1.0);
  UV = in_UV;

  if(useEnv)
  {
    vec3 refl = reflect( normalize(vec3(model * vec4(in_Position, 1.0))), in_Normal );
    float m = 2.0 * sqrt( refl.x*refl.x + refl.y*refl.y + (refl.z+1.0)*(refl.z+1.0) );
    envUV = refl.xy / m + 0.5;
  }
  normal = in_Normal;
  lightDir = vec3(0.0);
}