diff --git a/Sledgemapper/Content/shaders/OutlineShader.fx b/Sledgemapper/Content/shaders/OutlineShader.fx index b5dac7f..d427f01 100644 --- a/Sledgemapper/Content/shaders/OutlineShader.fx +++ b/Sledgemapper/Content/shaders/OutlineShader.fx @@ -6,7 +6,6 @@ #define VS_SHADERMODEL vs_4_0_level_9_1 #define PS_SHADERMODEL ps_4_0_level_9_1 #endif -float2 TexelSize; // should be (1f/textureSize.X, 1f/textureSize.Y) int BorderSize; float R; float G; @@ -26,152 +25,55 @@ struct VertexShaderOutput float4 MainPS(VertexShaderOutput input) : COLOR { - // float4 color = tex2Dlod(SpriteTextureSampler, float4 (input.TextureCoordinates.x, input.TextureCoordinates.y, 0,0)); - - // if (color.a > 0) - // { - // return color; - // } + float4 color = tex2Dlod(SpriteTextureSampler, float4(input.TextureCoordinates.x, input.TextureCoordinates.y, 0, 0)); - // float2 pixelSize.x = float2(pixelSize.x, 0); - // float2 pixelSize.y = float2( 0, pixelSize.y ); - - // for (int i = 1; i < 10; i++) - // { - // if (i<=BorderSize) - // { - // float4 c1 = tex2Dlod(SpriteTextureSampler, float4((input.TextureCoordinates + pixelSize.x*i).x, (input.TextureCoordinates + pixelSize.x*i).y,0,0)); - // float4 c2 = tex2Dlod(SpriteTextureSampler, float4((input.TextureCoordinates - pixelSize.x*i).x,(input.TextureCoordinates - pixelSize.x*i ).y ,0,0)); - // float4 c3 = tex2Dlod(SpriteTextureSampler, float4((input.TextureCoordinates + pixelSize.y*i ).x,(input.TextureCoordinates + pixelSize.y*i ).y ,0,0)); - // float4 c4 = tex2Dlod(SpriteTextureSampler, float4((input.TextureCoordinates - pixelSize.y*i ).x,(input.TextureCoordinates - pixelSize.y*i ).y ,0,0)); - // float4 d1 = tex2Dlod(SpriteTextureSampler, float4((input.TextureCoordinates - (pixelSize.x+pixelSize.y)*i ).x,(input.TextureCoordinates - (pixelSize.x+pixelSize.y)*i ).y ,0,0)); - // float4 d2 = tex2Dlod(SpriteTextureSampler, float4((input.TextureCoordinates + (pixelSize.x+pixelSize.y)*i).x,(input.TextureCoordinates + (pixelSize.x+pixelSize.y)*i).y ,0,0)); - // float4 d3 = tex2Dlod(SpriteTextureSampler, float4((input.TextureCoordinates - (pixelSize.x-pixelSize.y)*i ).x,(input.TextureCoordinates - (pixelSize.x-pixelSize.y)*i ).y ,0,0)); - // float4 d4 = tex2Dlod(SpriteTextureSampler, float4((input.TextureCoordinates - (-pixelSize.x+pixelSize.y)*i).x,(input.TextureCoordinates - (-pixelSize.x+pixelSize.y)*i).y ,0,0)); - - // if (color.a != c1.a || color.a != c2.a|| color.a != c3.a|| color.a != c4.a - // || color.a != d1.a - // || color.a != d2.a - // || color.a != d3.a - // || color.a != d4.a - // ) - // { - // color.r=R; - // color.g=G; - // color.b=B; - // color.a=1; - // } - // } - // } - - // return color; - //float pixelSize.x = float(1/ImageSize.x); - //float pixelSize.y = float(1/ImageSize.y ); - - // ########################################################################### - - -// float2 pixelSize = 1/ float2((float) ImageSize.x, (float) ImageSize.y); - -// float4 color = tex2D(SpriteTextureSampler, input.TextureCoordinates); -// if(color.a==1) {return color;} - -// // float2 offsets[8] = {float2(-1,0), float2(1,0), float2(0,1), float2(0,-1), float2(-1,1), float2(1,1), float2(1,-1), float2(-1,-1)}; -// float2 offsets[8] = {float2(-pixelSize.x,0), -// float2(pixelSize.x,0), -// float2(0,pixelSize.y), -// float2(0,-pixelSize.y), -// float2(-pixelSize.x,pixelSize.y), -// float2(pixelSize.x,pixelSize.y), -// float2(pixelSize.x,-pixelSize.y), -// float2(-pixelSize.x,-pixelSize.y)}; -// int i, j = 0; - -// while(i < 10) -// { -// i++; -// j=0; -// while (j < 8) -// { -// // float2 curUV = input.TextureCoordinates + ((offsets[j] * pixelSize.x + offsets[j] *pixelSize.y)* i); -// float curUVx = input.TextureCoordinates.x + offsets[j].x * (float)i; -// float curUVy = input.TextureCoordinates.y + offsets[j].y * (float)i; -// float4 offsetsample = tex2Dlod(SpriteTextureSampler, float4(curUVx, curUVy,0,0)); - -// if( -// offsetsample.a==1 - -// ) -// { -// return float4( -// R, -// G, -// B, -// 1); - -// } - -// j++; -// } - - -// } - -// return color; - -//############################################################## -int px = (int) input.TextureCoordinates.x*ImageSize.x; -int py = (int) input.TextureCoordinates.y*ImageSize.y; - -float2 pixel = input.TextureCoordinates*ImageSize; -float4 color = tex2D(SpriteTextureSampler, input.TextureCoordinates); - -if(color.a==1) {return color;} - -// float2 offsets[8] = {float2(-1,0), float2(1,0), float2(0,1), float2(0,-1), float2(-1,1), float2(1,1), float2(1,-1), float2(-1,-1)}; -float2 offsets[8] = {float2(-1,0), - float2(1,0), - float2(0,1), - float2(0,-1), - float2(-1,1), - float2(1,1), - float2(1,-1), - float2(-1,-1)}; -int i, j = 0; - -// while(i < 10) -// { -// i++; -// j=0; - - while (j < 8) + if(color.a == 1) { - // float2 curUV = input.TextureCoordinates + ((offsets[j] * pixelSize.x + offsets[j] *pixelSize.y)* i); - float checkpx=(float)px+(float)BorderSize*offsets[j].x; - float checkpy=(float)py+(float)BorderSize*offsets[j].y; - - float curUVx = input.TextureCoordinates.x + (float)checkpx/(float)ImageSize.x; - float curUVy = input.TextureCoordinates.y + (float)checkpy/(float)ImageSize.y; - float4 offsetsample = tex2Dlod(SpriteTextureSampler, float4(curUVx, curUVy,0,0)); - - if( - offsetsample.a==1 - - ) - { - return float4( - R, - G, - B, - 1); - - } - - j++; + return color; } + float2 pixel = (int2)input.TextureCoordinates * ImageSize; -// } + float2 offsets[8] = {float2(-1,0), float2(1,0), float2(0,1), float2(0,-1), float2(-1,1), float2(1,1), float2(1,-1), float2(-1,-1)} * BorderSize; + + float2 checkp1 = pixel + (float)BorderSize * offsets[0]; + float2 curUV1 = input.TextureCoordinates + checkp1/(float2)ImageSize; + float alpha1 = tex2Dlod(SpriteTextureSampler, float4(curUV1.x, curUV1.y,0,0)).a; + + float2 checkp2 = pixel + (float)BorderSize * offsets[1]; + float2 curUV2 = input.TextureCoordinates + checkp2/(float2)ImageSize; + float alpha2 = tex2Dlod(SpriteTextureSampler, float4(curUV2.x, curUV2.y,0,0)).a; + + float2 checkp3 = pixel + (float)BorderSize * offsets[2]; + float2 curUV3 = input.TextureCoordinates + checkp3/(float2)ImageSize; + float alpha3 = tex2Dlod(SpriteTextureSampler, float4(curUV3.x, curUV3.y,0,0)).a; + + float2 checkp4 = pixel + (float)BorderSize * offsets[3]; + float2 curUV4 = input.TextureCoordinates + checkp4/(float2)ImageSize; + float alpha4 = tex2Dlod(SpriteTextureSampler, float4(curUV4.x, curUV4.y,0,0)).a; + + float2 checkp5 = pixel + (float)BorderSize * offsets[4]; + float2 curUV5 = input.TextureCoordinates + checkp5/(float2)ImageSize; + float alpha5 = tex2Dlod(SpriteTextureSampler, float4(curUV5.x, curUV5.y,0,0)).a; + + float2 checkp6 = pixel + (float)BorderSize * offsets[5]; + float2 curUV6 = input.TextureCoordinates + checkp6/(float2)ImageSize; + float alpha6 = tex2Dlod(SpriteTextureSampler, float4(curUV6.x, curUV6.y,0,0)).a; + + float2 checkp7 = pixel + (float)BorderSize * offsets[6]; + float2 curUV7 = input.TextureCoordinates + checkp7/(float2)ImageSize; + float alpha7 = tex2Dlod(SpriteTextureSampler, float4(curUV7.x, curUV7.y,0,0)).a; + + float2 checkp8 = pixel + (float)BorderSize * offsets[7]; + float2 curUV8 = input.TextureCoordinates + checkp8/(float2)ImageSize; + float alpha8 = tex2Dlod(SpriteTextureSampler, float4(curUV8.x, curUV8.y,0,0)).a; + + float alpha = alpha1 + alpha2 + alpha3 + alpha4 + alpha5 + alpha6 + alpha7 + alpha8; + + if (alpha>0) + { + return float4(R,G,B,1); + } return color; diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index fda2bf8..6557500 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -169,7 +169,11 @@ ResetRenderTarget(); _mainWidget.BtnToolbarWall.Click += OnBtnToolbarWallClicked; _mainWidget.BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; - AddItemToToolGrid(_mainWidget.GridWalls, OnWallButtonClicked, "walls"); + + + _mainWidget.BtnToolbarTile.Visible=false; + _mainWidget.BtnToolbarWall.Visible=false; + AddItemToToolGrid(_mainWidget.GridWalls, OnWallButtonClicked, "walls"); AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, "overlays"); _fonts = Content.LoadContentFolder("fonts");