summaryrefslogtreecommitdiffstats
path: root/src/engine/q3dbars.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/q3dbars.cpp')
-rw-r--r--src/engine/q3dbars.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/engine/q3dbars.cpp b/src/engine/q3dbars.cpp
index 4da60e78..df59920a 100644
--- a/src/engine/q3dbars.cpp
+++ b/src/engine/q3dbars.cpp
@@ -883,8 +883,10 @@ void Q3DBars::drawScene()
if (d_ptr->m_shadowQuality > ShadowNone) {
// Set shadow shader bindings
- d_ptr->m_backgroundShader->setUniformValue(d_ptr->m_barShader->depth(),
- depthMVPMatrix);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->shadowQ(),
+ d_ptr->m_shadowQualityToShader);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->depth(),
+ depthMVPMatrix);
d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->lightS(),
lightStrength / 10.0f);
@@ -951,18 +953,20 @@ void Q3DBars::drawScene()
if (d_ptr->m_shadowQuality > ShadowNone) {
// Set shadow shader bindings
+ d_ptr->m_backgroundShader->setUniformValue(d_ptr->m_backgroundShader->shadowQ(),
+ d_ptr->m_shadowQualityToShader);
d_ptr->m_backgroundShader->setUniformValue(d_ptr->m_backgroundShader->depth(),
depthMVPMatrix);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_backgroundShader->lightS(),
- d_ptr->m_theme->m_lightStrength / 10.0f);
+ d_ptr->m_backgroundShader->setUniformValue(d_ptr->m_backgroundShader->lightS(),
+ d_ptr->m_theme->m_lightStrength / 10.0f);
// Draw the object
d_ptr->m_drawer->drawObject(d_ptr->m_backgroundShader, d_ptr->m_backgroundObj,
0, d_ptr->m_depthTexture);
} else {
// Set shadowless shader bindings
- d_ptr->m_barShader->setUniformValue(d_ptr->m_backgroundShader->lightS(),
- d_ptr->m_theme->m_lightStrength);
+ d_ptr->m_backgroundShader->setUniformValue(d_ptr->m_backgroundShader->lightS(),
+ d_ptr->m_theme->m_lightStrength);
// Draw the object
d_ptr->m_drawer->drawObject(d_ptr->m_backgroundShader, d_ptr->m_backgroundObj);
@@ -1577,6 +1581,20 @@ void Q3DBars::setGridEnabled(bool enable)
void Q3DBars::setShadowQuality(ShadowQuality quality)
{
d_ptr->m_shadowQuality = quality;
+ switch (quality) {
+ case ShadowLow:
+ d_ptr->m_shadowQualityToShader = 33.3f;
+ break;
+ case ShadowMedium:
+ d_ptr->m_shadowQualityToShader = 66.7f;
+ break;
+ case ShadowHigh:
+ d_ptr->m_shadowQualityToShader = 100.0f;
+ break;
+ default:
+ d_ptr->m_shadowQualityToShader = 0.0f;
+ break;
+ }
if (d_ptr->m_shadowQuality > ShadowNone) {
// Re-init depth buffer
d_ptr->initDepthBuffer();
@@ -1798,7 +1816,8 @@ Q3DBarsPrivate::Q3DBarsPrivate(Q3DBars *q)
m_selectionDepthBuffer(0),
m_updateLabels(false),
m_gridEnabled(true),
- m_shadowQuality(ShadowLow)
+ m_shadowQuality(ShadowLow),
+ m_shadowQualityToShader(33.3f)
{
m_dataSet->d_ptr->setDrawer(m_drawer);
QObject::connect(m_drawer, &Drawer::drawerChanged, this, &Q3DBarsPrivate::updateTextures);