summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2020-11-18 12:29:48 +0000
committerMike Krus <mike.krus@kdab.com>2020-11-22 11:41:52 +0000
commitc5845d67be03d0f1f538422ba1ad181442b09819 (patch)
tree68c22ba64e3faa5a6a106e6529f663e605c67f26 /src/plugins
parenta8a212ebbd82bad183aff0bc53d851c66c7fd225 (diff)
Introduce QGeometryRendererPrivate::sortIndex
Lets user override the sorting order of entities. Change-Id: Iab7fd0d705f7ddcb424a59f86f8c2c28059813d1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> (cherry picked from commit c6aec09f4f6030fa11b9ba911e4c0df2fe7485b2)
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/renderers/opengl/renderer/renderview.cpp4
-rw-r--r--src/plugins/renderers/rhi/renderer/renderview.cpp4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/plugins/renderers/opengl/renderer/renderview.cpp b/src/plugins/renderers/opengl/renderer/renderview.cpp
index 59b323398..8c2d5a39d 100644
--- a/src/plugins/renderers/opengl/renderer/renderview.cpp
+++ b/src/plugins/renderers/opengl/renderer/renderview.cpp
@@ -839,6 +839,10 @@ void RenderView::updateRenderCommand(const EntityRenderCommandDataSubView &subVi
// view vector. This gives a depth value suitable as the key
// for BackToFront sorting.
command.m_depth = Vector3D::dotProduct(entity->worldBoundingVolume()->center() - m_eyePos, m_eyeViewDir);
+
+ auto geometryRenderer = m_manager->geometryRendererManager()->data(command.m_geometryRenderer);
+ if (geometryRenderer && !qFuzzyCompare(geometryRenderer->sortIndex(), -1.f))
+ command.m_depth = geometryRenderer->sortIndex();
} else { // Compute
// Note: if frameCount has reached 0 in the previous frame, isEnabled
// would be false
diff --git a/src/plugins/renderers/rhi/renderer/renderview.cpp b/src/plugins/renderers/rhi/renderer/renderview.cpp
index 54295ef5f..344dc3a3b 100644
--- a/src/plugins/renderers/rhi/renderer/renderview.cpp
+++ b/src/plugins/renderers/rhi/renderer/renderview.cpp
@@ -826,6 +826,10 @@ void RenderView::updateRenderCommand(EntityRenderCommandData *renderCommandData,
command.m_depth = Vector3D::dotProduct(
entity->worldBoundingVolume()->center() - m_data.m_eyePos, m_data.m_eyeViewDir);
+ auto geometryRenderer = m_manager->geometryRendererManager()->data(command.m_geometryRenderer);
+ if (geometryRenderer && !qFuzzyCompare(geometryRenderer->sortIndex(), -1.f))
+ command.m_depth = geometryRenderer->sortIndex();
+
environmentLight = m_environmentLight;
lightSources = m_lightSources;