Files
loop/shader/texture/antia2.frag
T
2025-11-27 21:59:52 +00:00

48 lines
1.2 KiB
GLSL

#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);
}
vec3 c = f(0,0);
bool bt (vec3 x, vec3 y)
{ return x.x+x.y+x.z > y.x+y.y+y.z;}
bool t4 (vec3 x, vec3 y, vec3 z)
{ return t(x,z) && (t(x,y) || bt(x,c)) ;
}
void main()
{
vec3 tl = f(-2, 2);
vec3 tt = f( 0, 2);
vec3 tr = f( 2, 2);
vec3 mr = f( 2, 0);
vec3 br = f( 2,-2);
vec3 bb = f( 0,-2);
vec3 bl = f(-2,-2);
vec3 ml = f(-2, 0);
vec3 tlc = f(-1, 1);
vec3 trc = f( 1, 1);
vec3 brc = f( 1,-1);
vec3 blc = f(-1,-1);
if (t4(tl,tr,br))
{ fColor = vec4(tl,1);}
else if (t4(tr,br,bl))
{ fColor = vec4(tr,1);}
else if (t4(br,bl,tl))
{ fColor = vec4(br,1);}
else if (t4(bl,tl,tr))
{ fColor = vec4(bl,1);}
else
//{fColor = texture(screenTexture, vTexPos); }
{fColor = vec4(c,1); }
}