#version 330 core

layout(location = 0)in vec3 inPosition;
layout(location = 2)in vec2 inTexCoord;
layout(location = 1)in vec3 inNormal;

uniform float flatSphere;
uniform vec2 screenSize;
uniform mat4 mvp;
uniform vec3 camera;

out vec2 texCoord;
out vec3 normal;

void main(void)
{
    texCoord = vec2(inTexCoord.x/2, inTexCoord.y);
    vec2 flatTexCoord = texCoord;
    texCoord = mix(texCoord, flatTexCoord, vec2(flatSphere));
    normal = inNormal.xyz;
    vec4 flatPos = vec4((inTexCoord.x*2 -1)*camera.z, (inTexCoord.y*2 -1)*camera.z, 0.0, 1.0);
    vec3 position = vec3(inPosition.xy, inPosition.z - 1);
    vec4 projPos = mvp * vec4(position*camera.z, 1.0);
    gl_Position = mix(projPos, flatPos, vec4(flatSphere));
}