diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-11-18 12:29:48 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2020-11-22 11:41:52 +0000 |
commit | c5845d67be03d0f1f538422ba1ad181442b09819 (patch) | |
tree | 68c22ba64e3faa5a6a106e6529f663e605c67f26 /src/plugins | |
parent | a8a212ebbd82bad183aff0bc53d851c66c7fd225 (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.cpp | 4 | ||||
-rw-r--r-- | src/plugins/renderers/rhi/renderer/renderview.cpp | 4 |
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; |