#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 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)); }