summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-10-22 10:48:03 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-10-22 12:33:45 +0300
commit09c9dec8ed80c310d0037240e9aa28255dff4ae0 (patch)
treebbaa966b4c7b07be1c3b82e3f0b0cd900f62b30a /src/datavisualization
parent4840bfadd324f9905f52de83145415203d030a60 (diff)
Slice view lighting fixed
Task-number: QTRD-2490 + grid line lighting fixed Change-Id: Ieed6b3ab52baca958b84a814093ccd1e6fa8ba71 Change-Id: Ieed6b3ab52baca958b84a814093ccd1e6fa8ba71 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp47
-rw-r--r--src/datavisualization/engine/scatter3drenderer.cpp56
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp58
3 files changed, 46 insertions, 115 deletions
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index 76af0713..d8db0c60 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -276,19 +276,19 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel,
// Set up projection matrix
QMatrix4x4 projectionMatrix;
- projectionMatrix.perspective(45.0f, (GLfloat)m_sliceViewPort.width()
- / (GLfloat)m_sliceViewPort.height(), 0.1f, 100.0f);
+ projectionMatrix.perspective(40.0f, (GLfloat)m_sliceViewPort.width()
+ / (GLfloat)m_sliceViewPort.height(), 0.1f, 10.0f);
// Set view matrix
QMatrix4x4 viewMatrix;
// Adjust scaling (zoom rate based on aspect ratio)
- GLfloat camZPosSliced = 5.0f / m_autoScaleAdjustment;
+ GLfloat camZPosSliced = cameraDistance / m_autoScaleAdjustment;
viewMatrix.lookAt(QVector3D(0.0f, 0.0f, camZPosSliced), zeroVector, upVector);
// Set light position
- lightPos = QVector3D(0.0f, -m_yAdjustment, 0.0f);
+ lightPos = QVector3D(0.0f, -m_yAdjustment, camZPosSliced * 2.0f);
// Bind bar shader
m_barShader->bind();
@@ -1019,6 +1019,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
// Draw grid lines
if (m_cachedIsGridEnabled && m_heightNormalizer) {
ShaderHelper *lineShader = m_backgroundShader;
+
// Bind bar shader
lineShader->bind();
@@ -1028,6 +1029,18 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
lineShader->setUniformValue(lineShader->view(), viewMatrix);
lineShader->setUniformValue(lineShader->color(), barColor);
lineShader->setUniformValue(lineShader->ambientS(), m_cachedTheme.m_ambientStrength);
+#if !defined(QT_OPENGL_ES_2)
+ if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
+ // Set shadowed shader bindings
+ lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
+ lineShader->setUniformValue(lineShader->lightS(),
+ m_cachedTheme.m_lightStrength / 20.0f);
+ } else
+#endif
+ {
+ // Set shadowless shader bindings
+ lineShader->setUniformValue(lineShader->lightS(), m_cachedTheme.m_lightStrength / 2.5f);
+ }
QVector3D gridLineScaler(rowScaleFactor, gridLineWidth, gridLineWidth);
@@ -1060,18 +1073,12 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(), m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1108,18 +1115,12 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(), m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1164,18 +1165,12 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(), m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1213,18 +1208,12 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(), m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1349,7 +1338,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
sideLabelRotation.setY(180.f);
}
QVector3D backLabelTrans = QVector3D(labelXTrans, 0.0f,
- labelZTrans + labelMarginZTrans);
+ labelZTrans + labelMarginZTrans);
QVector3D sideLabelTrans = QVector3D(-labelXTrans - labelMarginXTrans,
0.0f, -labelZTrans);
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp
index 68c74554..a187e3a4 100644
--- a/src/datavisualization/engine/scatter3drenderer.cpp
+++ b/src/datavisualization/engine/scatter3drenderer.cpp
@@ -654,6 +654,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
if (m_cachedIsGridEnabled && m_heightNormalizer) {
ShaderHelper *lineShader = m_backgroundShader;
+
// Bind line shader
lineShader->bind();
@@ -663,6 +664,18 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
lineShader->setUniformValue(lineShader->view(), viewMatrix);
lineShader->setUniformValue(lineShader->color(), lineColor);
lineShader->setUniformValue(lineShader->ambientS(), m_cachedTheme.m_ambientStrength);
+#if !defined(QT_OPENGL_ES_2)
+ if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
+ // Set shadowed shader bindings
+ lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
+ lineShader->setUniformValue(lineShader->lightS(),
+ m_cachedTheme.m_lightStrength / 20.0f);
+ } else
+#endif
+ {
+ // Set shadowless shader bindings
+ lineShader->setUniformValue(lineShader->lightS(), m_cachedTheme.m_lightStrength / 2.5f);
+ }
// Rows (= Z)
if (m_axisCacheZ.segmentCount() > 0) {
@@ -689,7 +702,6 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
for (int segment = 0; segment <= lastSegment; segment++) {
QMatrix4x4 modelMatrix;
QMatrix4x4 MVPMatrix;
- QMatrix4x4 depthMVPMatrix;
QMatrix4x4 itModelMatrix;
if (m_yFlipped)
@@ -707,7 +719,6 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
}
MVPMatrix = projectionViewMatrix * modelMatrix;
- depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
// Set the rest of the shader bindings
lineShader->setUniformValue(lineShader->model(), modelMatrix);
@@ -717,20 +728,14 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
#if !defined(QT_OPENGL_ES_2)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
+ QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
// Set shadow shader bindings
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -771,19 +776,12 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -839,18 +837,12 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(), m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -892,19 +884,12 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -955,18 +940,12 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(), m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1012,19 +991,12 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 7d983022..444e0c43 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -484,7 +484,7 @@ void Surface3DRenderer::drawSlicedScene()
viewMatrix.lookAt(QVector3D(0.0f, 0.0f, 1.0f), zeroVector, upVector);
// Set light position
- lightPos = m_cachedScene->activeLight()->position();
+ lightPos = QVector3D(0.0f, 0.0f, 2.0f);
QMatrix4x4 projectionViewMatrix = projectionMatrix * viewMatrix;
@@ -1083,6 +1083,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
if (m_cachedIsGridEnabled && m_heightNormalizer) {
ShaderHelper *lineShader = m_backgroundShader;
+
// Bind line shader
lineShader->bind();
@@ -1092,6 +1093,18 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
lineShader->setUniformValue(lineShader->view(), viewMatrix);
lineShader->setUniformValue(lineShader->color(), lineColor);
lineShader->setUniformValue(lineShader->ambientS(), m_cachedTheme.m_ambientStrength);
+#if !defined(QT_OPENGL_ES_2)
+ if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
+ // Set shadowed shader bindings
+ lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
+ lineShader->setUniformValue(lineShader->lightS(),
+ m_cachedTheme.m_lightStrength / 20.0f);
+ } else
+#endif
+ {
+ // Set shadowless shader bindings
+ lineShader->setUniformValue(lineShader->lightS(), m_cachedTheme.m_lightStrength / 2.5f);
+ }
// Rows (= Z)
if (m_axisCacheZ.segmentCount() > 0) {
@@ -1132,19 +1145,12 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
#if !defined(QT_OPENGL_ES_2)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1180,20 +1186,12 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
#if !defined(QT_OPENGL_ES_2)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(),
- adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1240,19 +1238,12 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
#if !defined(QT_OPENGL_ES_2)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1288,19 +1279,12 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
#if !defined(QT_OPENGL_ES_2)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1343,19 +1327,12 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
#if !defined(QT_OPENGL_ES_2)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}
@@ -1393,19 +1370,12 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
#if !defined(QT_OPENGL_ES_2)
if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
// Set shadow shader bindings
- lineShader->setUniformValue(lineShader->shadowQ(), m_shadowQualityToShader);
lineShader->setUniformValue(lineShader->depth(), depthMVPMatrix);
- lineShader->setUniformValue(lineShader->lightS(), adjustedLightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj, 0, m_depthTexture);
} else
#endif
{
- // Set shadowless shader bindings
- lineShader->setUniformValue(lineShader->lightS(),
- m_cachedTheme.m_lightStrength);
-
// Draw the object
m_drawer->drawObject(lineShader, m_gridLineObj);
}