Play with upscaling shaders
This commit is contained in:
+70
-19
@@ -13,25 +13,76 @@ bool t (vec3 x, vec3 y)
|
||||
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)) ; }
|
||||
bool incenter (int x) { return x > 0 && x < 3; }
|
||||
int three = int(( floor(vTexPos.y * screensize.y))) % 3;
|
||||
int i = int(( floor(vTexPos.x * screensize.x))) % 4;
|
||||
int j = int(( floor(vTexPos.y * screensize.y))) % 4;
|
||||
vec4 edgecase (vec3 e1, vec3 e2)
|
||||
{ return vec4((t(e1,e2) && bt(e1,c) ? e1 : c),1); }
|
||||
vec4 corncase (vec3 e1, vec3 e2, vec3 corn)
|
||||
{ return vec4( (t(e1,e2) && false == (t(corn,c)) ? e1 : c) , 1);}
|
||||
//{ return vec4( (t(e1,e2) ? e1 : c) , 1);}
|
||||
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); }
|
||||
vec3 tl = f(-4, 4);
|
||||
vec3 tt = f( 0, 4);
|
||||
vec3 tr = f( 4, 4);
|
||||
vec3 mr = f( 4, 0);
|
||||
vec3 br = f( 4,-4);
|
||||
vec3 bb = f( 0,-4);
|
||||
vec3 bl = f(-4,-4);
|
||||
vec3 ml = f(-4, 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);}
|
||||
if (incenter(i) && incenter(j))
|
||||
{fColor = vec4(c,1); }
|
||||
else
|
||||
{ fColor = vec4(0,0,0,1);
|
||||
switch (i * 10 + j) {
|
||||
case 10:
|
||||
case 01:
|
||||
fColor = edgecase(ml,bb);
|
||||
break;
|
||||
case 13:
|
||||
case 02:
|
||||
fColor = edgecase(ml,tt);
|
||||
break;
|
||||
case 23:
|
||||
case 32:
|
||||
fColor = edgecase(mr,tt);
|
||||
break;
|
||||
case 20:
|
||||
case 31:
|
||||
fColor = edgecase(mr,bb);
|
||||
break;
|
||||
case 00:
|
||||
fColor = corncase(ml,bb,bl);
|
||||
break;
|
||||
case 03:
|
||||
fColor = corncase(ml,tt,tl);
|
||||
break;
|
||||
case 33:
|
||||
fColor = corncase(mr,tt,tr);
|
||||
//fColor = vec4(1,0,0,1);
|
||||
break;
|
||||
case 30:
|
||||
fColor = corncase(mr,bb,br);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#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); }
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
#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); }
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
#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)) ;
|
||||
}
|
||||
int three = int(( floor(vTexPos.y * screensize.y))) % 3;
|
||||
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);}
|
||||
if (three == 0)
|
||||
//{fColor = vec4(0,0,0,1);}
|
||||
{fColor = vec4(c.x,0,0,1); }
|
||||
//{fColor = texture(screenTexture, vTexPos); }
|
||||
else if (three == 1)
|
||||
{fColor = vec4(0,c.y,0,1); }
|
||||
else
|
||||
{fColor = vec4(0,0,c.z,1); }
|
||||
}
|
||||
+1
-1
@@ -384,7 +384,7 @@ doDrawing' win pdata u = do
|
||||
glUseProgram (pdata ^. barrelShader . _1)
|
||||
glUniform1i 0 (fromIntegral (length rs))
|
||||
--glDrawArrays GL_TRIANGLES 0 6
|
||||
glDrawArrays GL_TRIANGLES 0 3
|
||||
glDrawArrays GL_TRIANGLES 0 6
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
-- draw the overlay
|
||||
glDepthFunc GL_ALWAYS
|
||||
|
||||
@@ -32,7 +32,8 @@ import Data.Foldable
|
||||
import Data.Monoid
|
||||
|
||||
testStringInit :: Universe -> [String]
|
||||
testStringInit u = [ show (u ^. uvWorld . wCam . camRot)
|
||||
testStringInit u = [ show (u ^. uvConfig . windowX)
|
||||
, show (u ^. uvConfig . windowY)
|
||||
,show $ fmap (
|
||||
worldPosToScreen (u ^. uvWorld . wCam) )
|
||||
$ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crPos . _xy
|
||||
|
||||
Reference in New Issue
Block a user