diff options
author | Tomi Korpipää <tomi.korpipaa@qt.io> | 2016-11-18 13:12:13 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@qt.io> | 2016-11-18 11:17:22 +0000 |
commit | e584f8753a39d3364aa50b4b89bafa4a0209af7c (patch) | |
tree | d6438e2c66dd3ae5310bce8e0b49bae84cf228cc /src/datavisualization/engine/abstract3drenderer.cpp | |
parent | 4ff14c23b271747cc7a23fd72499d2032d692185 (diff) |
Allow light position modification by user
Change-Id: I7efd56754bae16990fd11081493da0a37698f76b
Task-number: QTRD-1803
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/datavisualization/engine/abstract3drenderer.cpp')
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp index 4a681554..dd3212ac 100644 --- a/src/datavisualization/engine/abstract3drenderer.cpp +++ b/src/datavisualization/engine/abstract3drenderer.cpp @@ -500,6 +500,11 @@ void Abstract3DRenderer::handleShadowQualityChange() { reInitShaders(); + if (m_cachedScene->activeLight()->isAutoPosition() + || m_cachedShadowQuality > QAbstract3DGraph::ShadowQualityNone) { + m_cachedScene->d_ptr->setLightPositionRelativeToCamera(defaultLightPos); + emit needRender(); + } if (m_isOpenGLES && m_cachedShadowQuality != QAbstract3DGraph::ShadowQualityNone) { emit requestShadowQuality(QAbstract3DGraph::ShadowQualityNone); qWarning("Shadows are not yet supported for OpenGL ES2"); @@ -1994,8 +1999,12 @@ void Abstract3DRenderer::updateCameraViewport() m_oldCameraTarget = adjustedTarget; } m_cachedScene->activeCamera()->d_ptr->updateViewMatrix(m_autoScaleAdjustment); - // Set light position (i.e rotate light with activeCamera, a bit above it) - m_cachedScene->d_ptr->setLightPositionRelativeToCamera(defaultLightPos); + // Set light position (i.e rotate light with activeCamera, a bit above it). + // Check if we want to use automatic light positioning even without shadows + if (m_cachedScene->activeLight()->isAutoPosition() + || m_cachedShadowQuality > QAbstract3DGraph::ShadowQualityNone) { + m_cachedScene->d_ptr->setLightPositionRelativeToCamera(defaultLightPos); + } } QT_END_NAMESPACE_DATAVISUALIZATION |