summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2019-09-16 12:29:25 +0300
committerAntti Määttä <antti.maatta@qt.io>2019-09-17 09:07:45 +0300
commit15859ecf23f80d51c41e56baf17ef498f89def39 (patch)
treebe6dc0fd055484d0436464af42e9a5ba769eab05
parent05ea31a47187359dd9d4f0f2f4cfbf846126fba8 (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>
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp6
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRenderableObjects.h5
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp4
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
{