From 448f2b0f1fb002e429acb019770d6712bcfac4de Mon Sep 17 00:00:00 2001 From: IntegratedQuantum Date: Fri, 24 May 2024 14:50:50 +0200 Subject: [PATCH] Use a 9-slice texture to draw a button outline. fixes #379 Also using separate texture for the selection/pressed state of buttons and checkboxes to allow more artistic freedom. --- assets/cubyz/shaders/graphics/Image.vs | 4 +- assets/cubyz/shaders/graphics/RectBorder.fs | 9 +++ assets/cubyz/shaders/graphics/RectBorder.vs | 27 ++++++++ assets/cubyz/shaders/ui/button.fs | 4 -- assets/cubyz/ui/box_hovered.png | Bin 0 -> 5154 bytes assets/cubyz/ui/box_pressed.png | Bin 0 -> 5015 bytes assets/cubyz/ui/button.png | Bin 263 -> 8401 bytes assets/cubyz/ui/button_hovered.png | Bin 0 -> 8686 bytes assets/cubyz/ui/button_hovered_outline.png | Bin 0 -> 7279 bytes assets/cubyz/ui/button_outline.png | Bin 0 -> 7471 bytes assets/cubyz/ui/button_pressed.png | Bin 0 -> 8086 bytes assets/cubyz/ui/button_pressed_outline.png | Bin 0 -> 7234 bytes assets/cubyz/ui/checked_box_hovered.png | Bin 0 -> 5295 bytes assets/cubyz/ui/checked_box_pressed.png | Bin 0 -> 5200 bytes src/graphics.zig | 34 +++++++++ src/gui/components/Button.zig | 72 +++++++++++++++----- src/gui/components/CheckBox.zig | 50 +++++++++----- 17 files changed, 161 insertions(+), 39 deletions(-) create mode 100644 assets/cubyz/shaders/graphics/RectBorder.fs create mode 100644 assets/cubyz/shaders/graphics/RectBorder.vs create mode 100644 assets/cubyz/ui/box_hovered.png create mode 100644 assets/cubyz/ui/box_pressed.png create mode 100644 assets/cubyz/ui/button_hovered.png create mode 100644 assets/cubyz/ui/button_hovered_outline.png create mode 100644 assets/cubyz/ui/button_outline.png create mode 100644 assets/cubyz/ui/button_pressed.png create mode 100644 assets/cubyz/ui/button_pressed_outline.png create mode 100644 assets/cubyz/ui/checked_box_hovered.png create mode 100644 assets/cubyz/ui/checked_box_pressed.png diff --git a/assets/cubyz/shaders/graphics/Image.vs b/assets/cubyz/shaders/graphics/Image.vs index 007571d8..fc57adde 100644 --- a/assets/cubyz/shaders/graphics/Image.vs +++ b/assets/cubyz/shaders/graphics/Image.vs @@ -9,6 +9,8 @@ flat out vec4 fColor; uniform vec2 start; uniform vec2 size; uniform vec2 screen; +uniform vec2 uvOffset; +uniform vec2 uvDim; uniform int color; @@ -22,5 +24,5 @@ void main() { gl_Position = vec4(position, 0, 1); fColor = vec4((color & 0xff0000)>>16, (color & 0xff00)>>8, color & 0xff, (color>>24) & 255)/255.0; - uv = vertex_pos; + uv = uvOffset + vertex_pos*uvDim; } \ No newline at end of file diff --git a/assets/cubyz/shaders/graphics/RectBorder.fs b/assets/cubyz/shaders/graphics/RectBorder.fs new file mode 100644 index 00000000..64dcc011 --- /dev/null +++ b/assets/cubyz/shaders/graphics/RectBorder.fs @@ -0,0 +1,9 @@ +#version 330 + +layout (location=0) out vec4 frag_color; + +flat in vec4 color; + +void main(){ + frag_color = color; +} \ No newline at end of file diff --git a/assets/cubyz/shaders/graphics/RectBorder.vs b/assets/cubyz/shaders/graphics/RectBorder.vs new file mode 100644 index 00000000..4c156c37 --- /dev/null +++ b/assets/cubyz/shaders/graphics/RectBorder.vs @@ -0,0 +1,27 @@ +#version 330 core + +layout (location=0) in vec4 vertex_pos; + +flat out vec4 color; + + +//in pixel +uniform vec2 start; +uniform vec2 size; +uniform vec2 screen; +uniform float lineWidth; + +uniform int rectColor; + + +void main() { + + // Convert to opengl coordinates: + vec2 position_percentage = (start + vertex_pos.xy*size + vertex_pos.zw*lineWidth)/screen; + + vec2 position = vec2(position_percentage.x, -position_percentage.y)*2+vec2(-1, 1); + + gl_Position = vec4(position, 0, 1); + + color = vec4((rectColor & 0xff0000)>>16, (rectColor & 0xff00)>>8, rectColor & 0xff, (rectColor>>24) & 255)/255.0;; +} \ No newline at end of file diff --git a/assets/cubyz/shaders/ui/button.fs b/assets/cubyz/shaders/ui/button.fs index 5f3100b2..07f78927 100644 --- a/assets/cubyz/shaders/ui/button.fs +++ b/assets/cubyz/shaders/ui/button.fs @@ -6,14 +6,10 @@ uniform sampler2D image; flat in vec4 fColor; in vec2 startCoord; -uniform bool pressed; uniform float scale; void main() { frag_color = texture(image, (gl_FragCoord.xy - startCoord)/(2*scale)/textureSize(image, 0)); frag_color.a *= fColor.a; frag_color.rgb += fColor.rgb; - if(pressed) { - frag_color.rgb *= 0.8; - } } \ No newline at end of file diff --git a/assets/cubyz/ui/box_hovered.png b/assets/cubyz/ui/box_hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..c02ab624ee2dc2401ea35a504d3c41d4e8080015 GIT binary patch literal 5154 zcmeHKeK=HU8y^u8l~g`rO;akiGaqMW%osD}o7oyBl#f_u&YT%j=EKY|gVI()sg0y+Ta-j0O0BHj&?+e(y=R6>*Sr68UGM(and{7)b3ga}yYKsV-_P^R zvy1KRX=GqwfI^{+m|kwa$gjTo*4IV8t7n&|qEI@U^yVlb{x zYk4zq?crtnzZe~!rqH?8lyY0Bx7-T-h~cb*FDUp3%KHGLVfZ>ZePH552&zEV#+9v{`2-o z)Zq1le+OZ3-b1g3o}FLx>hOWz-{@Vl@Y$DJ>)FAsDOYV>36)R}-aLyrnS64L(96Hx z%L(0XaD0tlfBRXk~Em-39Fj<`Q}=jy5g7lULsQ)qFcUWtEmy_w}E3 zkLY-Zz=O%(>*_HZFE3slT5@tA)HIlzahlIeO>5U*orUta_xH25&B`h>;{24zvJrzg zf{(y;@3r>LkhxiYR8H@~9g|R3sB{HR}=g8bTOz_!T`49eZ$+tqC z*Z+@I<{~Za@V(XP%NBm8ZER`o%uebh3JlE9PtQ9u*Bj3kV|;Gkn;QYZwPyBao&;?Z z?=l@}#*!T?)+Gf%UB~_{1I5d`(atPsW%3-Z*CNkd7NIW) z)nX^mPG$>j@Lw#Qt{-tY=e}1VJ?s0N`_**@wd_V#y#=f0a$XFV(o^%pqnkav zzF$>D=Umm}Ft~nAZ~3)$K}W|=&D{ilQ^;}Valg~(kt84s>TXP3?-);Li{JFMUc$LC z>uGy)#(KYPeOwoLC|BxIR?@w(>*Q(0Q$dT=y!WWy80)~EF;}~+(dh>oLv1$K8ExB5 zyV7hlL$IOVNc)NG=aTMI(Xq81^a1R^V9j%L8`SAa;aA#!T*{NC9bYu2`>HkRSiG`_ znjSUhOlScPDAr2YJ+vp!cSWpGg<&m9yurieT*YN&-*DaY4z~#)`TPlrrSW{g12c+4LO*tEj*y%ZfA9Fz+2q8?%6rbZ>{pSRh;0B zPjCNnaCN4`iN`3ER-(|=mCbZ@eYXxFt543BbcR=zljYU04XfS1oE1~hm6lHnnlnGD z$!=c0OTql$X#9m2GqXucY_Z>N-&9$-?`q+W)Z#O<&TK~yYjyqg@MsUlW*lc*lJflF zdF%c@Mqh{4xW~>D{1$57#)IkJOA{l->+~;SQkGvab1SM|v&DO!-+*P(GRv-^a-HbEDXK6X=))Z)iu#diosR$8G-=)8Ui4K6&$om6e*U|R1Ay;mxes6#W)OFqoUZvzyz|` zXjh30Mw754EFN%I31dLaN&_@q#^cj`-8?2CkT(ViB%G@5}5!;aBy(I z;Xxb-0*D46j}tcIAtaD(NLOej?dC1SK1lf#unD;O9IGLC*1pGeALy@wae zCs{!Fz^OP=907~RiA1=m7IKAq3<5G4&_7zp{gLez=L^dv(J}~jkAcOC#Zw`8(0hAn zv@BAS4iCb?k+29+l_OpWAG!2ove@q})D#GWBB{m-A^Rgug^>S&tdC+-k7&}F8VF+k z9`_^dce!hn5iJ&r<|cun)!{MS7#OvG8czZVc{I%QSnTUgwQz+sHV4PGe&vISM{vz`(2#ilbE@2K#28O%{g zWd0IKBm<)k39Yu&v^SbQQ4}ws9MOnXcl>0}`@vBYZxd4>Qm7e1qcv?y<3JNm!2CL8o}4VAVZYbzsQHBWeu1mMX4Nb)C;Xe26)2!4qNX?Q#a zH<>U_J*(ekOvn8XCv=U%lw|<1n~)*P3$j|_-Y-{^oT+L27q7`${EHqC=+90*iQmt3 zeWvS^82BXR&)xNzu1{j%laxPq*Z++!gAWHDSd9D&QXHa}$0z?YPfM=dMm(I5#{zeE8){$Eu>D&b5jw!+R3TW}trQ WU!l`inY{;bj$*odyPa_f-~L}r?cOH< literal 0 HcmV?d00001 diff --git a/assets/cubyz/ui/box_pressed.png b/assets/cubyz/ui/box_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..eb597e3dd50a9210b6f137b2e19f33484a873308 GIT binary patch literal 5015 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 literal 263 zcmV+i0r>ujP)N%s`=;{iYUuU0a_*#xL{1sxGGGNO935cHh8E`<%kQ7k%OMw3aQ32&UL(@DM z{0faaFZ-eQON3|=8pHx}xUENC@5Y}3g{1`wPz(6iC@VeDHtJfAf)`4~t|Fe1OsD_= N002ovPDHLkV1mOTX$=4X diff --git a/assets/cubyz/ui/button_hovered.png b/assets/cubyz/ui/button_hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..1adf066f347709511d369a7c6a818f94d3fa7dad GIT binary patch literal 8686 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 x-n}qFZFK{+3Kjc^{{dHbddUC) literal 0 HcmV?d00001 diff --git a/assets/cubyz/ui/button_hovered_outline.png b/assets/cubyz/ui/button_hovered_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..536f5d1c2914c1a3ea06287f4ab634cc63032534 GIT binary patch literal 7279 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 literal 0 HcmV?d00001 diff --git a/assets/cubyz/ui/button_outline.png b/assets/cubyz/ui/button_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..b5962559d8d9abf8c52945456168b21dab3e635b GIT binary patch literal 7471 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 m7nBpxk~#LQDU&nl&z%SEiG$lhreL=FplRa^* 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