From bf88f9f31132f7f69c21b3dc9490033efd091011 Mon Sep 17 00:00:00 2001 From: DarkGod <darkgod@net-core.org> Date: Wed, 6 Nov 2013 23:58:51 +0100 Subject: [PATCH] yay --- .../tome/data/gfx/shaders/target_fbo.frag | 146 +++++++++--------- 1 file changed, 74 insertions(+), 72 deletions(-) diff --git a/game/modules/tome/data/gfx/shaders/target_fbo.frag b/game/modules/tome/data/gfx/shaders/target_fbo.frag index 77a229d828..5045fd33df 100644 --- a/game/modules/tome/data/gfx/shaders/target_fbo.frag +++ b/game/modules/tome/data/gfx/shaders/target_fbo.frag @@ -9,11 +9,11 @@ void main(void) { vec2 offset = vec2(1.0, 1.0) / mapCoord * tileSize * 0.5; - vec4 colorm0 = texture2D( fboTex, gl_TexCoord[0].xy + vec2(-offset.x, 0.0)); + /*vec4 colorm0 = texture2D( fboTex, gl_TexCoord[0].xy + vec2(-offset.x, 0.0)); vec4 colorp0 = texture2D( fboTex, gl_TexCoord[0].xy + vec2( offset.x, 0.0)); vec4 color0m = texture2D( fboTex, gl_TexCoord[0].xy + vec2(0.0, -offset.y)); - vec4 color0p = texture2D( fboTex, gl_TexCoord[0].xy + vec2(0.0, offset.y)); + vec4 color0p = texture2D( fboTex, gl_TexCoord[0].xy + vec2(0.0, offset.y));*/ vec4 colormm = texture2D( fboTex, gl_TexCoord[0].xy + vec2(-offset.x,-offset.y)); vec4 colormp = texture2D( fboTex, gl_TexCoord[0].xy + vec2(-offset.x, offset.y)); @@ -42,49 +42,34 @@ void main(void) loc3 = true; if(colorpp.a > 0.1) loc9 = true; + if(color00.a > 0.1) + loc5 = true; - int location = 5; - bool isInternal = false; - - if(loc1 && !loc9 && loc7 && !loc3) - location = 6; - if(loc1 && !loc9 && loc3 && !loc7) - location = 8; - if(loc3 && !loc7 && loc9 && !loc1) - location = 4; - if(loc7 && !loc3 && loc9 && !loc1) - location = 2; - - if(loc1 && !loc7 && !loc3 && !loc9) - location = 9; - if(loc7 && !loc1 && !loc9 && !loc3) - location = 3; - if(loc9 && !loc7 && !loc3 && !loc1) - location = 1; - if(loc3 && !loc1 && !loc9 && !loc7) - location = 7; - - if(loc1 && loc7 && loc3 && !loc9) + if(gl_TexCoord[0].x + offset.x > 1.0) { - location = 1; - isInternal = true; + loc9 = 0; + loc3 = 0; } - if(loc7 && loc1 && loc9 && !loc3) + + if(gl_TexCoord[0].x - offset.x < 0.0) { - location = 7; - isInternal = true; + loc1 = 0; + loc7 = 0; } - if(loc9 && loc7 && loc3 && !loc1) + + if(gl_TexCoord[0].y + offset.y > 1.0) { - location = 9; - isInternal = true; + loc7 = 0; + loc9 = 0; } - if(loc3 && loc1 && loc9 && !loc7) + + if(gl_TexCoord[0].y - offset.y < 0.0) { - location = 3; - isInternal = true; + loc1 = 0; + loc3 = 0; } - + + vec2 fboCoord = gl_TexCoord[0].xy; fboCoord.y = 1.0 - fboCoord.y; vec2 texCoord = (fboCoord * mapCoord + scrollOffset) / tileSize + vec2(0.5, 0.5); @@ -92,48 +77,65 @@ void main(void) texCoord.y = mod(texCoord.y, 1.0); vec4 borderColor = vec4(0.0, 0.0, 0.0, 0.0); - if(location == 1) - { - if(isInternal) - borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 0.0, 1.0 / 4.0 * 3.0)); - else - borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 0.0, 1.0 / 4.0 * 1.0)); - } + + if(loc1 && loc7 && loc3 && !loc9) //1 internal + borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 0.0, 1.0 / 4.0 * 3.0)); + + if(loc9 && !loc7 && !loc3 && !loc1) //1 external + borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 0.0, 1.0 / 4.0 * 1.0)); - if(location == 2) - borderColor += texture2D( targetSkin, texCoord / vec2(2.0, 4.0) + vec2(1.0 / 4.0 * 2.0, 1.0 / 4.0 * 1.0)); + if(loc7 && !loc3 && loc9 && !loc1) //2 + borderColor += texture2D( targetSkin, texCoord / vec2(4.0, 4.0) + vec2(1.0 / 4.0 * 2.0, 1.0 / 4.0 * 1.0)); - if(location == 3) - { - if(isInternal) - borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 1.0, 1.0 / 4.0 * 3.0)); - else - borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 1.0, 1.0 / 4.0 * 1.0)); - } - if(location == 6) - borderColor += texture2D( targetSkin, texCoord / vec2(4.0, 2.0) + vec2(1.0 / 4.0 * 3.0, 1.0 / 4.0 * 2.0)); + if(loc3 && loc1 && loc9 && !loc7) //3 internal + borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 1.0, 1.0 / 4.0 * 3.0)); + + if(loc7 && !loc1 && !loc9 && !loc3) //3 external + borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 1.0, 1.0 / 4.0 * 1.0)); + + if(loc1 && !loc9 && loc7 && !loc3) //8 + borderColor += texture2D( targetSkin, texCoord / vec2(4.0, 4.0) + vec2(1.0 / 4.0 * 3.0, 1.0 / 4.0 * 0.0)); - if(location == 9) - { - if(isInternal) - borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 1.0, 1.0 / 4.0 * 2.0)); - else - borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 1.0, 1.0 / 4.0 * 0.0)); - } - if(location == 8) - borderColor += texture2D( targetSkin, texCoord / vec2(2.0, 4.0) + vec2(1.0 / 4.0 * 2.0, 1.0 / 4.0 * 0.0)); + if(loc9 && loc7 && loc3 && !loc1) + borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 1.0, 1.0 / 4.0 * 2.0)); + + if(loc1 && !loc7 && !loc3 && !loc9) //9 external + borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 1.0, 1.0 / 4.0 * 0.0)); + + if(loc1 && !loc9 && loc3 && !loc7) + borderColor += texture2D( targetSkin, texCoord / vec2(4.0, 4.0) + vec2(1.0 / 4.0 * 2.0, 1.0 / 4.0 * 0.0)); - if(location == 7) + if(loc7 && loc1 && loc9 && !loc3) //7 internal + borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 0.0, 1.0 / 4.0 * 2.0)); + + if(loc3 && !loc1 && !loc9 && !loc7) //7 external + borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 0.0, 1.0 / 4.0 * 0.0)); + + if(loc3 && !loc7 && loc9 && !loc1) //4 + borderColor += texture2D( targetSkin, texCoord / vec2(4.0, 4.0) + vec2(1.0 / 4.0 * 3.0, 1.0 / 4.0 * 1.0)); + + if(loc3 && loc7 && !loc9 && !loc1) //3-7 diag + borderColor += texture2D( targetSkin, texCoord / vec2(4.0, 4.0) + vec2(1.0 / 4.0 * 2.0, 1.0 / 4.0 * 2.0)); + + if(!loc3 && !loc7 && loc9 && loc1) //1-9 diag + borderColor += texture2D( targetSkin, texCoord / vec2(4.0, 4.0) + vec2(1.0 / 4.0 * 3.0, 1.0 / 4.0 * 2.0)); + + if(loc3 && loc7 && loc9 && loc1) //internal quad + borderColor += texture2D( targetSkin, texCoord / vec2(4.0, 4.0) + vec2(1.0 / 4.0 * 2.0, 1.0 / 4.0 * 3.0)); + + if(!loc5 && borderColor.a > 0.0) + { + vec4 avgColor = + (colormm * colormm.a + colormp * colormp.a + colorpm * colorpm.a + colorpp * colorpp.a) + / (colormm.a + colormp.a + colorpm.a + colorpp.a + 1e-5); + resultColor += avgColor; + resultColor.rgb += borderColor.rgb * borderColor.a; + resultColor.a = borderColor.a; + }else { - if(isInternal) - borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 0.0, 1.0 / 4.0 * 2.0)); - else - borderColor += texture2D( targetSkin, texCoord / 4.0 + vec2(1.0 / 4.0 * 0.0, 1.0 / 4.0 * 0.0)); + borderColor.rgb *= borderColor.a; + resultColor += borderColor; } - if(location == 4) - borderColor += texture2D( targetSkin, texCoord / vec2(4.0, 2.0) + vec2(1.0 / 4.0 * 2.0, 1.0 / 4.0 * 2.0)); - borderColor.rgb *= borderColor.a; - resultColor += borderColor; gl_FragColor = resultColor; } -- GitLab