From 4eba89603e01bdb5f17219580e96bf0ebfb33ba6 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 26 Feb 2019 15:13:05 -0500 Subject: [PATCH] Shader tests --- .../items/item-spore-pod.png | Bin 2322 -> 2273 bytes core/assets/shaders/shadow.fragment | 37 +++++++++++------- core/assets/shaders/unitbuild.fragment | 6 +-- .../mindustry/ui/fragments/HudFragment.java | 2 +- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/core/assets-raw/sprites_replacement/items/item-spore-pod.png b/core/assets-raw/sprites_replacement/items/item-spore-pod.png index d1a80d0b2a7d6a5e340d7388afbedd38b2278570..32bcf69fed989a73565d437afd96b1e339e44e4b 100644 GIT binary patch delta 2148 zcmbOv^iXhuay{Gas*s41pu}>8f};Gi%$!t(lFEWqh1817GzNx>TWiB3r)jU``;#uZ zmxYC+^QpnS%hnaA-zOAQY3yG0&h~ud(<4nRo{Ftgmi>Q!Kk?te;~RO^He~o1M%6fR zolNDq^6vb;$-J+tYwyfF^j>}EPBj@9x$^z>$Lg-7pZNK&p+&h~|9p}1*EfsP7aJGe zzHol>^UU*Cq*~R&s zW1;TyVKLKup0jiL*D)|AmGz!sFq509;CI(X`aH+lt$laJnxhz4e!pP7pwP$=#?kX* z;)0HaXXZ60K09&fRA=!QLzg~7uQ@VPk9rGCtJhG{^4wI#drB%a#5B`SuQEVl`HUkf zzM4;aoQ=1gtFTITJ$Fxl3iH(^5s2`fvvlEiZNchPrv+U*aW zt#vx*^WvZUiJ6>t9p7o^|@ks;}4;Ci==bUd{gg*?jS?`&Je8g7Kz@?@ha1vOw?cW=@7L zhcDMJnZ0p;m|Xb^)>9d`Qddrq(Av5y#AxR=#;W5xLRcJ9+TSrW6wdcAIxjn;d{SIQ zLxIf7@`oLAi@siS&)b=oo_uTRdz1MBic->ry0cb^9|<|)`lO`dRc+R)6aTgvEZuu- z-3@P!s`$^hy3&8%Tzs>>s%Fn@+Xqq0HQKHvtkm{p^K-p&Og6YPYx(Z2zph4oK6Xcb zZEgDApC|u3Z4|JNQoVJptxfnu;QAAi)l0q}ku*ASJT>;EYR{Z|%O|=_zL=pnH_gn^ z*m0XO)5XLCHy1X%eJ~+r!X>|82Hy$sufyhO{W@LU^+)Kg{6W+H7x&)$l`gJ7yLfK7 z@%B?a&hs}2FYwoUSWxiDuQ%r6$}>x1)$jNf85etf{owta>zf|0xbo5M?QJ>o;#<6@ z@2>5w%nuRGy_UPaYKq_1xJ{S*Di#VpE?{N2Zg*3W@6tmbFYehteb!|*ntb1=Ib})j zowKKI7O(l^ZgIIKapQp)p7|N)(p(y&f7N@o9y)g~Jv%dViON=`Yn9od54Ux1*mXZ> zit6H@%d)=we$&-^-JwV`!|rN-47)?V;JZ^-0(#13l(-xWteA1(qGYVQ&+1Bcwdqn5 zPaAGKyNq?);>#~J&i{PEClzO#Zr&{P^x<_S^T$ViZ_i{9xxl;l;JM5F0t*~$bxifo z|L6)1tB)IR>58_y9QyIAlJCnr}>dtJEd$3sSXe{a=$Nqx>O{K5S7%;Y+LiG>}T zI9{#v?%FUVQfEmc*QWy;R8rVa<+?LB^sPF_wA1^#ZT+nuQ#IF%&4`~_@Hxl3@^X*w z$FO9Xo3az?6FVNfSi3{uk+I(-b0ZZ#Ub7N-=WKINk}a;` zazm%bdA_%QWO9xQ#2t?Jvb*OkX(<)bYWUp71->tU(lefGqp+0`>| z?M=EK<`9U|L}S#oaKT~w`Dw`IEKXXc|qaS`kGJrcUL`K+_a4Ds8_^PM^ic5pGprB3?E z-|cjy{@!%|E(Qh$wj^(N7l!`~ml-Dev#W6n8*$ez+J2mYfw6sZ1A9pQi8n{eQeQ1) z6w*ykNJ#kMA0~C+S+$W)yNmzR*rs0++~(gFbIh>3x!}Y8?OZ}8Pj3D7=K+DJu9}Fa zAD41=ZF;!%_xuObl&x8!JT9O@pv!E+D_i+D^Pkx#*VV&vJRre9LqpR#J%?T~HAGc?qcx|+ncN6hmv4`Y$8 z+mX%srL&$ciT06k_+}f%ZlJv;B_$ytAs|R$(@f=s{fFvH-tyJ)YB?{>HcOIWV94b? W&GO-u=qCmS1_n=8KbLh*2~7Yg<`G)} delta 2185 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 O1_n=8KbLh*2~7Y?zAZ}t diff --git a/core/assets/shaders/shadow.fragment b/core/assets/shaders/shadow.fragment index 2ab1ff8934..7346d78142 100644 --- a/core/assets/shaders/shadow.fragment +++ b/core/assets/shaders/shadow.fragment @@ -3,8 +3,7 @@ precision mediump float; precision mediump int; #endif -#define SPACE 0.75 -#define RADIUS 5.0 +#define SPACE 2.0 uniform sampler2D u_texture; @@ -21,15 +20,25 @@ void main() { vec4 c = texture2D(u_texture, v_texCoord.xy); float spacing = SPACE * u_scl; - if(c.a >= 0.001){ - gl_FragColor = c * v_color; - }else{ - for(float cx = -RADIUS; cx <= RADIUS; cx ++){ - for(float cy = -RADIUS; cy <= RADIUS; cy ++){ - if(cx*cx + cy*cy <= RADIUS * RADIUS && texture2D(u_texture, v_texCoord.xy + vec2(cx, cy) * v * spacing).a >= 0.001){ - gl_FragColor = u_color; - } - } - } - } -} + gl_FragColor = mix(vec4(0.0, 0.0, 0.0, min(c.a, u_color.a)), u_color, + (1.0-step(0.001, texture2D(u_texture, v_texCoord.xy).a)) * + step(0.001, + //cardinals + texture2D(u_texture, v_texCoord.xy + vec2(0, spacing) * v).a + + texture2D(u_texture, v_texCoord.xy + vec2(0, -spacing) * v).a + + texture2D(u_texture, v_texCoord.xy + vec2(spacing, 0) * v).a + + texture2D(u_texture, v_texCoord.xy + vec2(-spacing, 0) * v).a + + + //cardinal edges + texture2D(u_texture, v_texCoord.xy + vec2(spacing, spacing) * v).a + + texture2D(u_texture, v_texCoord.xy + vec2(spacing, -spacing) * v).a + + texture2D(u_texture, v_texCoord.xy + vec2(-spacing, spacing) * v).a + + texture2D(u_texture, v_texCoord.xy + vec2(-spacing, -spacing) * v).a + + + //cardinals * 2 + texture2D(u_texture, v_texCoord.xy + vec2(0, spacing) * v*2.0).a + + texture2D(u_texture, v_texCoord.xy + vec2(0, -spacing) * v*2.0).a + + texture2D(u_texture, v_texCoord.xy + vec2(spacing, 0) * v*2.0).a + + texture2D(u_texture, v_texCoord.xy + vec2(-spacing, 0) * v*2.0).a + )); +} \ No newline at end of file diff --git a/core/assets/shaders/unitbuild.fragment b/core/assets/shaders/unitbuild.fragment index 28aea691f8..1faf952c8d 100644 --- a/core/assets/shaders/unitbuild.fragment +++ b/core/assets/shaders/unitbuild.fragment @@ -3,8 +3,6 @@ precision mediump float; precision mediump int; #endif -#define step 3.0 - uniform sampler2D u_texture; uniform float u_time; @@ -17,8 +15,8 @@ uniform vec2 u_texsize; varying vec4 v_color; varying vec2 v_texCoord; -#define SPACE 0.75 -#define RADIUS 5.0 +#define SPACE 1.3 +#define RADIUS 2.0 bool cont(vec2 t, vec2 v){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index a811f5aa7e..8937fcaceb 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -140,7 +140,7 @@ public class HudFragment extends Fragment{ infolabel.marginLeft(10f); IntFormat fps = new IntFormat("fps"); IntFormat ping = new IntFormat("ping"); - infolabel.label(() -> fps.get(Core.graphics.getFramesPerSecond())).padRight(10); + infolabel.label(() -> fps.get(Core.graphics.getFramesPerSecond())).padLeft(10).growX(); infolabel.row(); if(Net.hasClient()){ infolabel.label(() -> ping.get(Net.getPing())).visible(Net::client).colspan(2);