summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/main.qml4
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp9
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp55
3 files changed, 52 insertions, 16 deletions
diff --git a/examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/main.qml b/examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/main.qml
index 8bb458ca..4c77fd45 100644
--- a/examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/main.qml
+++ b/examples/datavisualization/qmlspectrogram/qml/qmlspectrogram/main.qml
@@ -83,8 +83,10 @@ Window {
type: Theme3D.ThemeQt
// Don't show specular spotlight as we don't want it to distort the colors
lightStrength: 0.0
- ambientLightStrength: 0.9
+ ambientLightStrength: 1.0
backgroundEnabled: false
+ gridLineColor: "#AAAAAA"
+ windowColor: "#EEEEEE"
}
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index 0b4d5b25..cd6c1eb0 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -493,7 +493,8 @@ void Bars3DRenderer::drawSlicedScene()
lineShader->setUniformValue(lineShader->view(), viewMatrix);
lineShader->setUniformValue(lineShader->color(), lineColor);
lineShader->setUniformValue(lineShader->ambientS(),
- m_cachedTheme->ambientLightStrength() * 2.3f);
+ m_cachedTheme->ambientLightStrength()
+ + m_cachedTheme->lightStrength() / 7.0f);
lineShader->setUniformValue(lineShader->lightS(), 0.0f);
lineShader->setUniformValue(lineShader->lightColor(), lightColor);
@@ -601,14 +602,16 @@ void Bars3DRenderer::drawSlicedScene()
m_barShader->setUniformValue(m_barShader->view(), viewMatrix);
m_barShader->setUniformValue(m_barShader->lightS(), 0.15f);
m_barShader->setUniformValue(m_barShader->ambientS(),
- m_cachedTheme->ambientLightStrength() * 2.3f);
+ m_cachedTheme->ambientLightStrength()
+ + m_cachedTheme->lightStrength() / 7.0f);
m_barShader->setUniformValue(m_barShader->lightColor(), lightColor);
m_barGradientShader->bind();
m_barGradientShader->setUniformValue(m_barGradientShader->lightP(), lightPos);
m_barGradientShader->setUniformValue(m_barGradientShader->view(), viewMatrix);
m_barGradientShader->setUniformValue(m_barGradientShader->lightS(), 0.15f);
m_barGradientShader->setUniformValue(m_barGradientShader->ambientS(),
- m_cachedTheme->ambientLightStrength() * 2.3f);
+ m_cachedTheme->ambientLightStrength()
+ + m_cachedTheme->lightStrength() / 7.0f);
m_barGradientShader->setUniformValue(m_barGradientShader->gradientMin(), 0.0f);
m_barGradientShader->setUniformValue(m_barGradientShader->lightColor(), lightColor);
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 96574807..96034039 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -277,7 +277,7 @@ void Surface3DRenderer::updateSurfaceTextures(QVector<QSurface3DSeries *> series
if (!series->texture().isNull()) {
cache->setSurfaceTexture(m_textureHelper->create2DTexture(
- series->texture(), true, true, true));
+ series->texture(), true, true, true));
if (cache->isFlatShadingEnabled())
cache->surfaceObject()->coarseUVs(array, cache->dataArray());
@@ -780,6 +780,19 @@ void Surface3DRenderer::drawSlicedScene()
AxisRenderCache &sliceCache = rowMode ? m_axisCacheX : m_axisCacheZ;
GLfloat scaleXBackground = 0.0f;
+ if (rowMode) {
+ // Don't use the regular margin for polar, as the graph is not going to be to scale anyway,
+ // and polar graphs often have quite a bit of margin, resulting in ugly slices.
+ if (m_polarGraph)
+ scaleXBackground = m_scaleX + 0.1f;
+ else
+ scaleXBackground = m_scaleXWithBackground;
+ } else {
+ if (m_polarGraph)
+ scaleXBackground = m_scaleZ + 0.1f;
+ else
+ scaleXBackground = m_scaleZWithBackground;
+ }
// Disable culling to avoid ugly conditionals with reversed axes and data
glDisable(GL_CULL_FACE);
@@ -796,11 +809,6 @@ void Surface3DRenderer::drawSlicedScene()
drawGrid = true;
}
- if (rowMode)
- scaleXBackground = m_scaleXWithBackground;
- else
- scaleXBackground = m_scaleZWithBackground;
-
QMatrix4x4 MVPMatrix;
QMatrix4x4 modelMatrix;
QMatrix4x4 itModelMatrix;
@@ -819,9 +827,27 @@ void Surface3DRenderer::drawSlicedScene()
surfaceShader->bind();
- GLuint colorTexture = cache->baseUniformTexture();;
- if (cache->colorStyle() != Q3DTheme::ColorStyleUniform)
+ GLuint colorTexture = cache->baseUniformTexture();
+ if (cache->colorStyle() == Q3DTheme::ColorStyleUniform) {
+ colorTexture = cache->baseUniformTexture();
+ surfaceShader->setUniformValue(surfaceShader->gradientMin(), 0.0f);
+ surfaceShader->setUniformValue(surfaceShader->gradientHeight(), 0.0f);
+ } else {
colorTexture = cache->baseGradientTexture();
+ if (cache->colorStyle() == Q3DTheme::ColorStyleObjectGradient) {
+ float objMin = cache->surfaceObject()->minYValue();
+ float objMax = cache->surfaceObject()->maxYValue();
+ float objRange = objMax - objMin;
+ surfaceShader->setUniformValue(surfaceShader->gradientMin(),
+ -(objMin / objRange));
+ surfaceShader->setUniformValue(surfaceShader->gradientHeight(),
+ 1.0f / objRange);
+ } else {
+ surfaceShader->setUniformValue(surfaceShader->gradientMin(), 0.5f);
+ surfaceShader->setUniformValue(surfaceShader->gradientHeight(),
+ 1.0f / (m_scaleY * 2.0f));
+ }
+ }
// Set shader bindings
surfaceShader->setUniformValue(surfaceShader->lightP(), lightPos);
@@ -830,9 +856,10 @@ void Surface3DRenderer::drawSlicedScene()
surfaceShader->setUniformValue(surfaceShader->nModel(),
itModelMatrix.inverted().transposed());
surfaceShader->setUniformValue(surfaceShader->MVP(), MVPMatrix);
- surfaceShader->setUniformValue(surfaceShader->lightS(), 0.15f);
+ surfaceShader->setUniformValue(surfaceShader->lightS(), 0.0f);
surfaceShader->setUniformValue(surfaceShader->ambientS(),
- m_cachedTheme->ambientLightStrength() * 2.3f);
+ m_cachedTheme->ambientLightStrength()
+ + m_cachedTheme->lightStrength() / 10.0f);
surfaceShader->setUniformValue(surfaceShader->lightColor(), lightColor);
m_drawer->drawObject(surfaceShader, cache->sliceSurfaceObject(), colorTexture);
@@ -879,7 +906,8 @@ void Surface3DRenderer::drawSlicedScene()
lineShader->setUniformValue(lineShader->view(), viewMatrix);
lineShader->setUniformValue(lineShader->color(), lineColor);
lineShader->setUniformValue(lineShader->ambientS(),
- m_cachedTheme->ambientLightStrength() * 2.3f);
+ m_cachedTheme->ambientLightStrength()
+ + m_cachedTheme->lightStrength() / 10.0f);
lineShader->setUniformValue(lineShader->lightS(), 0.0f);
lineShader->setUniformValue(lineShader->lightColor(), lightColor);
@@ -989,7 +1017,10 @@ void Surface3DRenderer::drawSlicedScene()
for (int label = 0; label < labelCount; label++) {
if (countLabelItems > labelNbr) {
// Draw the label here
- labelTrans.setX(sliceCache.labelPosition(label));
+ if (rowMode)
+ labelTrans.setX(sliceCache.labelPosition(label));
+ else
+ labelTrans.setX(-sliceCache.labelPosition(label));
m_dummyRenderItem.setTranslation(labelTrans);