#version 330 core

uniform sampler2D frontMap;
uniform sampler2D backMap;

uniform vec3 camera;
uniform vec2 worldSize;
uniform vec2 screenSize;
uniform float flatSphere;
uniform float surfaceRatio;

in vec2 texCoord;
in vec3 normal;

out vec4 outColor;

void main()
{
    // looping the world in the shape of a toreiller (infinite flat surface)
    vec2 worldCoord = texCoord*worldSize + camera.xy*worldSize + (texCoord-vec2(0.25, 0.5))*surfaceRatio*worldSize;
    vec2 texCoordWorld = worldCoord / worldSize;
    ivec2 nbRevolutions = ivec2(floor(texCoordWorld));
    vec3 texColor;
    texCoordWorld = mod(texCoordWorld, 1);
    if(abs(mod(nbRevolutions.y+nbRevolutions.x, 2)) > 0.5)
        texColor = texture(backMap, texCoordWorld).xyz;
    else
        texColor = texture(frontMap, texCoordWorld).xyz;
    
    // computing lighting
    outColor = vec4(texColor, 1.0);
}