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 024073a8..39a760a2 100644 Binary files a/Assets/Shaders/Text_FS.shshaderb and b/Assets/Shaders/Text_FS.shshaderb differ 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 527b3db7..51490e32 100644 Binary files a/Assets/Shaders/Text_VS.shshaderb and b/Assets/Shaders/Text_VS.shshaderb differ diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp index 561adcf4..6aacfbf0 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp @@ -599,6 +599,8 @@ namespace SHADE component->SetText(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);