34 lines
1.0 KiB
GLSL
34 lines
1.0 KiB
GLSL
#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);
|
|
}
|