From 0da61aa842b572de244f8379b528c927f4dd460e Mon Sep 17 00:00:00 2001 From: Brandon Mak Date: Tue, 28 Feb 2023 21:30:09 +0800 Subject: [PATCH] Fixed text rendering rendering last --- Assets/Shaders/Text_FS.glsl | 4 ++-- Assets/Shaders/Text_FS.shshaderb | Bin 2801 -> 2905 bytes Assets/Shaders/Text_VS.glsl | 7 ++++--- Assets/Shaders/Text_VS.shshaderb | Bin 4813 -> 4845 bytes .../Inspector/SHEditorComponentView.hpp | 2 ++ .../SHTextRenderableComponent.cpp | 10 ++++++++++ .../TextRendering/SHTextRenderableComponent.h | 4 +++- .../SHTextRenderingSubSystem.cpp | 6 +++--- 8 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Assets/Shaders/Text_FS.glsl b/Assets/Shaders/Text_FS.glsl index 36bdb8eb..755ee3f9 100644 --- a/Assets/Shaders/Text_FS.glsl +++ b/Assets/Shaders/Text_FS.glsl @@ -23,7 +23,7 @@ layout(location = 0) in struct layout(location = 3) flat in struct { uint eid; - vec3 textColor; + vec4 textColor; } In2; @@ -50,7 +50,7 @@ void main() if (opacity < 0.2f) discard; else - fragColor = mix(vec4(0.0f), vec4(In2.textColor, 1.0f), min (opacity, 1.0f)); + fragColor = mix(vec4(0.0f), vec4(In2.textColor.xyz, 1.0f), min (opacity, In2.textColor.a)); // fragColor = vec4 (1.0f); diff --git a/Assets/Shaders/Text_FS.shshaderb b/Assets/Shaders/Text_FS.shshaderb index 024073a8ae8ef98827d7d1b01cf002338151d30a..39a760a28d2bc32306f90697bcb7507691f07c81 100644 GIT binary patch delta 598 zcmYk3-7W)B6ovOpjVhIJp&}AY1Q!y$b0aEsL(o%KebQI^rny#3jA#h?nsjAP1J@kog=x7cf)On)j zIR(nm$+RVIg}p}D_TafNU+v(DN!8B9tL!4d ZJ_3!%Zrym=e-}tszWzaX_+6OwegSl)HG%*D delta 537 zcmX|-y-EX75QS$qf3if-!j&{)5N!lg2x-KKX)F{>K>XLl#8ndl0bd}#g5*hLYg^yJ zH?XzS&hOmZ^5gHGOthvA~U{&+Ng z#um8A^dsyzcEy#N9a!Fyw4N)4L1o$~)Fu@Yn~+89xf8wYtrFki=Rg(g_*m`5DSz+% zn$IgvJg0se_zyrw`bTU4q^~nth|Qa&<>GtjhB$*b1#OZV<^qV*$+$~=acY!tSDsVD zmX+MV*Z8WJUU_|Nm*>>?1~fq#t>Rm=iEFs-lM-i*Ix~Sp|0vs>d!!4eLAF2}=uzn# z?5Kt9f?xi5g#GbWLsW_TKpJU#wml>E`MK8g1Wtg~rvj~P0K}_6YaXP{XgT-;7$7hV diff --git a/Assets/Shaders/Text_VS.glsl b/Assets/Shaders/Text_VS.glsl index 1e05dd25..92d738ce 100644 --- a/Assets/Shaders/Text_VS.glsl +++ b/Assets/Shaders/Text_VS.glsl @@ -21,7 +21,7 @@ layout(location = 0) out struct layout(location = 3) out struct { uint eid; - vec3 textColor; + vec4 textColor; } Out2; // Camera data @@ -38,7 +38,7 @@ layout(std140, push_constant) uniform TestPushConstant { mat4 worldTransform; uint eid; - vec3 textColor; + vec4 textColor; } testPushConstant; @@ -90,7 +90,8 @@ void main() //characterIndex = gl_InstanceID; // Transform the vertices to font space - vertexPos = toFontSpace * vec3(vertexPos.xy, 1.0f); + vertexPos = toFontSpace * vec3(vertexPos.xy, 1.0f); + vertexPos.z = 0.0f; Out2.textColor = testPushConstant.textColor; diff --git a/Assets/Shaders/Text_VS.shshaderb b/Assets/Shaders/Text_VS.shshaderb index 527b3db78c0c72f55812d5231faa7654e421e5b4..51490e3293c5c34146aab418bb2304bbfcc20ebe 100644 GIT binary patch literal 4845 zcmZXWX?GMw6owl@5)>2_5L}2XM-7X(D{cr57|>vX;J(B*(}B@pW}KOXMO57Pec#tF z9{+{MbNnOz2*2p@dAj>zi^X}Vd*8d%ty@(+nfJ#zNj?VVuNzL1dCBR?8Ocutm7JZ- zhe?t}$xuFzjqe-Z-0RmjUvuphx}2E|e&%wInUuh^JwQ_Ny=?0{dT1N z6cJ`9xsiEHzms+K@_oxY4yFBWV>;_8>whzIp10y}Key|^7{V)Ldp_AV--4WTpR;rS z`nb;)ok*MJ9?0(vJ5RzX{C;-Yy+*&$Zl%qMnVDXepPBpo5P#O6%(_JhsIUdE ztgQ@%9nSsTU(PpJrE!c~Y)oNuuh?qMMrTLE+d&Os^Hph^Z8lHZ?1yj1;XXfMuBC^v zZd#n4wa7VQ56bpm-dg55dr~(PoHfifvcs~$xpt@9enQT5K0}|btTR^L^$~b|ccFVn z9fM#O|A)RVXaCFbkx9;~_*s{J+bW!O$xVVWR*5&@+TLT=HctHp<{_{RSWDc~s3r7j zEx|=Ct|2!7%;}w83#=pbHOR4M4cQtT+P#~Lz=l%yI~R8Q;oWiQ;|R`ta?ZiIrku3| zr!439&05W;pY}NOb?6Rz5a%5|2wk7(eQ?o(h%;|BPTe@qBG!{THO?BVaq7ms2O>@` z;@pQdn9Ck|&(?zIvHBX|Sc;c^Yltz2@^WH4_tn6$8r|GN{#-m4=6sT@z;+t4dXdLp zoh0Yq=&M*EnC25&8wWcH-8ETZL{t)^#zn zF`n%R|6jsvZh7}~DYI+J-&E?OC1*bCUJo2A(Y=Gl7Ws;|C|Aw73ElNK0&}YSdm`tW zn@iak^(&dJA@pmI?Tfnc>b^@k{jX=Xudcg_NZ+XP2(s@?T|a(~^Yf51kGgNqGt$1b zl#AHncf`F}XY}VbWNX_F%%NT@Idk{}KM&X^?dm&APWv6m#+%dg7-#l8f1A7m-U|`DeTNx_809FRK3gE4pXjEcNZI;ybz=Tn7A>+`<~ZnJa+2KEAE1 zz$jP`wo;|KKH+~IvhPcq^{R*M7G$~YWcIz>3VcK6(x#vN+6J_l!#%2NTf%%h*a?o8 z^^KLBzV2WB25R-3cZ0=1-umxgz7y1ddo)H}zpzgrhut;JGYRDPl4D^$7aZbA?rvoL zyo;0U&$qM>>;>98IXQm#u`;qO5wRp!K1agiEs&n0k zfV^;6lXoj(9!54sK4Kn0mKTmwV;+Sw#yk--g)A=|5##>-20R9=#oYQvk5lARd;B<@ zeDru4SgUE74&f?xQ(Dl_8H9vtI zHG3}V`YAV=JHUJ0W$ppb$Zy>W;MsX^`aoOw%_1A?+3RO6IsL-tFmmLYLylZWkhO*1 zQDk#@uk|yRoPO@%8RlofaZs)4xss1OC(zAv3`9+G`bD1SkO5vf$w92uhwbIuaum;!!wF=dlgx`Be>U)<%+W`-r(!#`f97*k2la= zU%S0>T{-vY8NLPN{Qc0bem>Cd@5npAcWa-l|6=BMfxJHNF~1K+foEb4b$zsNW&Rv| z2D~Tc*ueY+kPrP!WWNC)5TpGoppSg??Q3LfjXr#XEawRBTV%Ov55Ft9`OK5_+&z2` zjMx7=5IxiO18{wPVvj!}e+<0C?onO8zgTGt@ORC#TnrqigX{4dW?lsRjXQ%me&fzW z*5=-Zn9m0K{YIW8%;y06DIdQ9OH1DMjaQHO<;Zfs6K}qA!7?EK3*1WP^MJhf{b#&< vs}}-!_wTt!z7gbVzKhUT0r|+c8d<)YZw+k7B}4Yecw?( zdHfe1&+#w$MUT(Z-Gwb)PEl2Ft+(#IJ?Z;>X_Bx0d6x|(Nnf%kIXC&afRYQ6c_2x0 zPBNJDvGD`r8@s*Q#!WY0ugiH!f9|Qz61-gVp`&TNsXPMR0_}u$LC-;-K>hri2mg)0 z`BWSmpBkH(7#qKPYP#K?>h?}FvZ+SBnN8K|oou>SpUd=HQ1PobryH}is>1*t)!GB} zyqFrJoh~t>c^s?i7Yz?HJy(Gz#rF?}TYmkf~XZ0HTV6MAg zf_tN_MyrEtZTC7c+q)5lK9pPoKbUoUle66;qpfDQmo|Ia21}dru~w&1JJ?B^-I-SB zXi?8N^G7{(XZ7EDL&?S*`+t7-w+Y)!tJ&MrtYycM#XN_@jT7x7B`CJF^xK*CQbdr! zgb^iU`km>ko9|oPbu{gD>eE?QS^qoWdESb@^Snz3)*xOXJM+nw`R3=C`<$Ko*T;P} znMB$!cYl6wm}y?e`*XN4^+0iK#m1cb9`JVBNf{r01Ia#kakf?}u!HbMYdUT0ZPl_o z_do(mdaYed=|DT3&WIe!?`ON!t@rA!X4;sTndxTvnYqu8@TdM{)+t&*1ubx8ZDlCv zQ10*ka=cEJ`bloFF@?>&VjFGL+dJ#t4tfZiuS(l&qjAROJbXJY_xUM&G(DPi(&F^& zMa&g@P|w5+9TN@A+U-v3DKYDOjy_$fGgjX9VQ_tSqkBhP1JG{% z5B;(n{V&ExCON<2XJ7hluVD5iHVKVU#e8Dc_8wc?IQ3iMgV1)!UgDlcFQHd^2`qZC zhFCvjPVe-3C~B&&gQBJ%4SR6u@7?s9a#gAOoeR73@b0*ZFJv(fG4qMZ!_S&x_7a$~ znBO;hHC8|EapwQ-Z~mF{jv2)H>l3pNEN0;B#LQcbQ#a1DhFNn{ydteeLQiA=fgpu7ZnOW3?bF^ow)t)V7FQgKj_ebvfJ^ z^A4k50XMg}d%6;?P5ib}A1N{O+4ly>Wj^nq`MfKu`2T9SnEEg$hkezaLb z-QO26d$_KYjZybU&YnWQ8QD3h8?Wv=71MtU+&No!4UxWCR80K872o-MZ?<--bn;-v;BHbC7YLq1(H5-$bFy_f&N6!oG^G|G|px**8jk2UUDG*Fzhj^PxMa;TyRD64%GKbQ3fJ zZGi5iOLcw1e>1Z0Nt^wuhwV;eu^nXgeQbw(Gexe#&-v|uwnOG{kLu>|9gIP~f#=Hp zc9)pG?q7W?y)J~`11*Nc?f+i*IOH31kH)C$7xoF{uv^nSlaTm+a(FlPml*5}c3+A0 z<-B-H2XcFoX!9*u&odFXp6~Mk$eC||tmpn8gv9mt%+$m75VA9|7w^p@keF+N?!4QN zLgJFkp1fNT^BA%*;t}&Wvbf|rJLU;6W6TpVQ^?|yD`F={1^ zCLS}MMiz4gRznuEjy2qC2I;HqV(260B0d8hg0x5cVPtVvU`LR}ik!v0siW(wEqZI*zO@ z{7xX7%X_V#xy1By4}Ke8fc#!odwQ|NBhM*x^PGgDCo%mZ&r8VWsrK_Sx_IPy1v&CW zKVtg1hlk;>mOkp9*=vyRV}h^RLipSetText(val); } ); + + SHEditorWidgets::ColorPicker("Color", [&textComp = component]() {return textComp->GetColour(); }, [&textComp = component](SHVec4 const& newColor) {textComp->SetColour(newColor); }); } else { diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp index b407b599..a7a3d2ed 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp @@ -61,6 +61,11 @@ namespace SHADE MakeDirty(); } + void SHTextRenderableComponent::SetColour(SHColour const& newColor) noexcept + { + color = newColor; + } + /***************************************************************************/ /*! @@ -82,6 +87,11 @@ namespace SHADE return fontHandle; } + SHADE::SHColour const& SHTextRenderableComponent::GetColour(void) const noexcept + { + return color; + } + } namespace rttr diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h index ef907409..d34e7c38 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h @@ -51,10 +51,12 @@ namespace SHADE /* SETTERS AND GETTERS */ /*-----------------------------------------------------------------------*/ void SetText (std::string_view newText) noexcept; - void SetFont (Handle font) noexcept; + void SetFont(Handle font) noexcept; + void SetColour(SHColour const& newColor) noexcept; std::string const& GetText (void) const noexcept; Handle GetFont (void) const noexcept; + SHColour const& GetColour (void) const noexcept; friend class SHTextRenderingSubSystem; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp index 0452e4e9..9ab6106d 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp @@ -138,8 +138,8 @@ namespace SHADE .srcColorBlendFactor = vk::BlendFactor::eSrcAlpha, .dstColorBlendFactor = vk::BlendFactor::eOneMinusSrcAlpha, .colorBlendOp = vk::BlendOp::eAdd, - .srcAlphaBlendFactor = vk::BlendFactor::eOne, - .dstAlphaBlendFactor = vk::BlendFactor::eZero, + .srcAlphaBlendFactor = vk::BlendFactor::eSrcAlpha, + .dstAlphaBlendFactor = vk::BlendFactor::eOneMinusSrcAlpha, .alphaBlendOp = vk::BlendOp::eAdd, .colorWriteMask = vk::ColorComponentFlagBits::eR | vk::ColorComponentFlagBits::eG | vk::ColorComponentFlagBits::eB | vk::ColorComponentFlagBits::eA, } @@ -217,7 +217,7 @@ namespace SHADE cmdBuffer->SetPushConstantVariable("TestPushConstant.eid", comp.GetEID(), SH_PIPELINE_TYPE::GRAPHICS); - cmdBuffer->SetPushConstantVariable("TestPushConstant.textColor", SHVec3 (1.0f, 1.0f, 1.0f), SH_PIPELINE_TYPE::GRAPHICS); + cmdBuffer->SetPushConstantVariable("TestPushConstant.textColor", comp.color, SH_PIPELINE_TYPE::GRAPHICS); cmdBuffer->SubmitPushConstants(SH_PIPELINE_TYPE::GRAPHICS);