summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3drenderer.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-08-28 15:42:52 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-09-01 11:05:13 +0300
commita20806dac74415f3d8cb6679c9eae86ce074ddae (patch)
tree49bffc538f0dac3feb99e23787b7e945a4a554d4 /src/datavisualization/engine/abstract3drenderer.cpp
parentcd1a66a8fcdcc6870656a924bf55ffbcd6ea1162 (diff)
Pixel perfect volume shader
Now the volume should render with pixel perfect accuracy. The drawback is that it is significantly slower than the old approximate solution. Change-Id: I4df7e9a28a27b56150c71a85a4c1fb69a215dabc Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/abstract3drenderer.cpp')
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index 090a833a..78f4b600 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -1320,15 +1320,15 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state,
} else {
// Precalculate texture dimensions so we can optimize
// ray stepping to hit every texture layer.
- QVector3D textureDimensions(float(item->textureWidth()),
- float(item->textureHeight()),
- float(item->textureDepth()));
+ QVector3D textureDimensions(1.0f / float(item->textureWidth()),
+ 1.0f / float(item->textureHeight()),
+ 1.0f / float(item->textureDepth()));
shader->setUniformValue(shader->textureDimensions(), textureDimensions);
- int sampleCount = qMax(item->textureWidth(), item->textureHeight());
- sampleCount = qMax(sampleCount, item->textureDepth());
+ // Worst case scenario sample count
+ int sampleCount = item->textureWidth() + item->textureHeight()
+ + item->textureDepth();
shader->setUniformValue(shader->sampleCount(), sampleCount);
-
}
m_drawer->drawObject(shader, item->mesh(), 0, 0, item->texture());
} else