#version 330 core uniform sampler2DRect colorMap; uniform vec3 camera; uniform vec2 worldSize; uniform vec2 screenSize; in vec2 texCoord; in vec3 normal; out vec4 outColor; vec3 phongLighting(in vec3 kd, in vec3 ks, in float ns, in vec3 color, in vec3 normal, in vec3 lightDir, in vec3 halfVec){ float diffuseComponent = max(dot(normal, lightDir), 0); float specularComponent = max(dot(halfVec, normal), 0); return color*diffuseComponent*(kd+ks*pow(specularComponent, ns)); } void main() { vec2 worldCoord = texCoord*worldSize + camera.xy; ivec2 nbRevolutions = ivec2(floor(worldCoord / worldSize)); if(abs(mod(nbRevolutions.y, 2)) > 0.5) { worldCoord.x += worldSize.x/2; nbRevolutions.x = int(floor(worldCoord.x / worldSize.x)); } worldCoord = worldCoord - nbRevolutions*worldSize; vec3 texColor = texelFetch(colorMap, ivec2(worldCoord)).xyz; float pseudoLighting = 0.4+dot(normal, normalize(vec3(-0.5))); // TODO : use phong lighting outColor = vec4(texColor*pseudoLighting, 1.0); }