diff options
author | Antti Määttä <antti.maatta@qt.io> | 2019-09-16 12:29:25 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2019-09-17 09:07:45 +0300 |
commit | 15859ecf23f80d51c41e56baf17ef498f89def39 (patch) | |
tree | be6dc0fd055484d0436464af42e9a5ba769eab05 | |
parent | 05ea31a47187359dd9d4f0f2f4cfbf846126fba8 (diff) |
Fix distance field text rendering with alpha test
Disable rendering when alpha test is enabled.
Task-number: QT3DS-3945
Change-Id: I59f7a8466f93f6c1d41cfab224cd9443ef03147f
Reviewed-by: Kaj Grönholm <kaj.gronholm@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
3 files changed, 10 insertions, 5 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp b/src/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp index e3b570d..712214a 100644 --- a/src/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp +++ b/src/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp @@ -489,12 +489,14 @@ namespace render { #if QT_VERSION >= QT_VERSION_CHECK(5,12,2) void SDistanceFieldRenderable::Render(const QT3DSVec2 &inCameraVec) { - m_distanceFieldText.renderText(m_text, m_mvp); + if (!m_Generator.alphaTestEnabled()) + m_distanceFieldText.renderText(m_text, m_mvp); } void SDistanceFieldRenderable::RenderDepthPass(const QT3DSVec2 &inCameraVec) { - m_distanceFieldText.renderTextDepth(m_text, m_mvp); + if (!m_Generator.alphaTestEnabled()) + m_distanceFieldText.renderTextDepth(m_text, m_mvp); } #endif diff --git a/src/runtimerender/rendererimpl/Qt3DSRenderableObjects.h b/src/runtimerender/rendererimpl/Qt3DSRenderableObjects.h index f79b169..6dbc624 100644 --- a/src/runtimerender/rendererimpl/Qt3DSRenderableObjects.h +++ b/src/runtimerender/rendererimpl/Qt3DSRenderableObjects.h @@ -408,14 +408,17 @@ namespace render { #if QT_VERSION >= QT_VERSION_CHECK(5,12,2) struct SDistanceFieldRenderable : public SRenderableObject { + Qt3DSRendererImpl &m_Generator; Q3DSDistanceFieldRenderer &m_distanceFieldText; QT3DSMat44 m_mvp; SText &m_text; SDistanceFieldRenderable(SRenderableObjectFlags flags, QT3DSVec3 worldCenterPt, - SText &text, const NVBounds3 &bounds, const QT3DSMat44 &mvp, + Qt3DSRendererImpl &gen, SText &text, const NVBounds3 &bounds, + const QT3DSMat44 &mvp, Q3DSDistanceFieldRenderer &distanceFieldText) : SRenderableObject(flags, worldCenterPt, text.m_GlobalTransform, bounds) + , m_Generator(gen) , m_distanceFieldText(distanceFieldText) , m_mvp(mvp) , m_text(text) diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp index 04bc4ae..3016ad6 100644 --- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp +++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp @@ -393,8 +393,8 @@ namespace render { m_Renderer.GetQt3DSContext().getDistanceFieldRenderer()); distanceFieldText->buildShaders(); theRenderable = RENDER_FRAME_NEW(SDistanceFieldRenderable)( - theFlags, inText.GetGlobalPos(), inText, inText.m_Bounds, theMVP, - *distanceFieldText); + theFlags, inText.GetGlobalPos(), m_Renderer, inText, inText.m_Bounds, + theMVP, *distanceFieldText); } else #endif { |