summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3drenderer.cpp
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@qt.io>2016-11-18 13:12:13 +0200
committerTomi Korpipää <tomi.korpipaa@qt.io>2016-11-18 11:17:22 +0000
commite584f8753a39d3364aa50b4b89bafa4a0209af7c (patch)
treed6438e2c66dd3ae5310bce8e0b49bae84cf228cc /src/datavisualization/engine/abstract3drenderer.cpp
parent4ff14c23b271747cc7a23fd72499d2032d692185 (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.cpp13
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