#version 330 core attribute vec3 vertexPosition; attribute vec2 vertexTexCoord; attribute vec4 vertexColor; attribute vec3 vertexNormal; out vec2 fragTexCoord; out vec3 fragWorldPos; out vec3 normal; out vec3 pos; out int level; uniform mat4 mvp; uniform mat4 modelmat; void main() { fragTexCoord = vertexTexCoord; vec3 vpos=vertexPosition; if (vpos.y>1.0) vpos.y=0.99; else if (vpos.y<0.0) vpos.y=0.01; vpos.x*=4.0;vpos.z*=4.0; gl_Position = mvp * vec4(vpos, 1.0); normal = mat3(modelmat) * vertexNormal; pos = (modelmat * vec4(vertexPosition, 1.0)).xyz; if (pos.y>=-0.01&&pos.y<=1.01){ vec3 n = normalize(normal); if(abs(n.x)>abs(n.y)&&abs(n.x)>abs(n.z)) fragTexCoord.y=-fragTexCoord.y; else{ if (n.z > 0.5) fragTexCoord.y -= 0.1; // Positive Z fragTexCoord.y-=0.00002; } } }