32 lines
853 B
GLSL
32 lines
853 B
GLSL
#version 330 core
|
|
|
|
uniform sampler2D frontMap;
|
|
uniform sampler2D backMap;
|
|
|
|
uniform vec3 camera;
|
|
uniform vec2 worldSize;
|
|
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);
|
|
}
|