#version 450 core in vec2 vTexPos; out vec4 fColor; layout (location = 0) uniform vec2 screensize; layout(binding = 0) uniform sampler2D screenTexture; vec3 f (float x, float y) //{ return texture(screenTexture, vTexPos + vec2((x+0.5)/screensize.x,(y+0.5)/screensize.y)).xyz; { return texture(screenTexture, vTexPos + vec2(x/screensize.x,y/screensize.y)).xyz; } bool t (vec3 x, vec3 y) { return dot(x-y,x-y) < 0.005; } bool t3 (vec3 x, vec3 y, vec3 z) { return t(x,y) && t(y,z); } void main() { vec3 tl = f(-1, 1); vec3 tt = f( 0, 2); vec3 tr = f( 1, 1); vec3 mr = f( 2, 0); vec3 br = f( 1,-1); vec3 bb = f( 0,-2); vec3 bl = f(-1,-1); vec3 ml = f(-2, 0); if (t3(tl,tr,br)) { fColor = vec4(tr,1);} else if (t3(tr,br,bl)) { fColor = vec4(br,1);} else if (t3(br,bl,tl)) { fColor = vec4(bl,1);} else if (t3(bl,tl,tr)) { fColor = vec4(tl,1);} else //{fColor = texture(screenTexture, vTexPos); } {fColor = vec4(f(0,0),1); } }