diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2020-03-16 12:22:32 +0200 |
---|---|---|
committer | Kaj Grönholm <kaj.gronholm@qt.io> | 2020-04-08 08:12:01 +0300 |
commit | 02e4d56d055d73340d3af1257b908a52aecc320f (patch) | |
tree | 2013f0e23d863cc59675cdb9bb31c79b9611a63a /src/api/studio3d/q3dsviewersettings.cpp | |
parent | a05990a7d083ead234b5ef443afdfd3f83fe78ed (diff) |
Add support for progressive stereoscopic rendering
In progressive mode, single eye is rendered per frame. So full
rendering of stereoscopic view takes 2 frames. This mode can be
enabled from Q3DSViewerSettings, and for viewer from menu or
with "--enableprogressivestereo" command-line parameter.
Task-number: QT3DS-4076
Change-Id: Ie69e37da028743164b959036136485b88c61b009
Reviewed-by: Janne Kangas <janne.kangas@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/api/studio3d/q3dsviewersettings.cpp')
-rw-r--r-- | src/api/studio3d/q3dsviewersettings.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/api/studio3d/q3dsviewersettings.cpp b/src/api/studio3d/q3dsviewersettings.cpp index dd8e4b2..9025bb8 100644 --- a/src/api/studio3d/q3dsviewersettings.cpp +++ b/src/api/studio3d/q3dsviewersettings.cpp @@ -332,6 +332,45 @@ void Q3DSViewerSettings::setStereoEyeSeparation(double separation) } /*! + \qmlproperty bool ViewerSettings::stereoProgressiveEnabled + + \since QtStudio3D.OpenGL 2.7 + + Enables progressive rendering in stereoscopic modes. In this mode, + only single eye per frame is rendered. Left eye for odd frames and + right for even frames. This halves the maximum animation frame rate + (meaning e.g. 30fps on 60Hz screen) while decreasing CPU/GPU usage. + + \note This property has only effect when stereo mode is set to + \c{StereoModeTopBottom} or \c{StereoModeLeftRight}. + */ +/*! + \property Q3DSViewerSettings::stereoProgressiveEnabled + + \since Qt 3D Studio 2.7 + + Enables progressive rendering in stereoscopic modes. In this mode, + only single eye per frame is rendered. Left eye for odd frames and + right for even frames. This halves the maximum animation frame rate + (meaning e.g. 30fps on 60Hz screen) while decreasing CPU/GPU usage. + + \note This property has only effect when stereo mode is set to + \c{StereoModeTopBottom} or \c{StereoModeLeftRight}. + */ +bool Q3DSViewerSettings::stereoProgressiveEnabled() const +{ + return d_ptr->m_stereoProgressiveEnabled; +} + +void Q3DSViewerSettings::setStereoProgressiveEnabled(bool enabled) +{ + if (d_ptr->m_stereoProgressiveEnabled != enabled) { + d_ptr->setStereoProgressiveEnabled(enabled); + Q_EMIT stereoProgressiveEnabledChanged(enabled); + } +} + +/*! \qmlproperty bool ViewerSettings::matteEnabled Specifies if the empty area around the presentation (applicable when @@ -410,6 +449,7 @@ Q3DSViewerSettingsPrivate::Q3DSViewerSettingsPrivate(Q3DSViewerSettings *q) , m_scaleMode(Q3DSViewerSettings::ScaleModeCenter) , m_stereoMode(Q3DSViewerSettings::StereoModeMono) , m_stereoEyeSeparation(0.4) + , m_stereoProgressiveEnabled(false) , m_savedSettings(nullptr) { } @@ -429,6 +469,7 @@ void Q3DSViewerSettingsPrivate::setViewerApp(Q3DSViewer::Q3DSViewerApp *app) setScaleMode(m_scaleMode); setStereoMode(m_stereoMode); setStereoEyeSeparation(m_stereoEyeSeparation); + setStereoProgressiveEnabled(m_stereoProgressiveEnabled); } } @@ -443,6 +484,7 @@ void Q3DSViewerSettingsPrivate::setCommandQueue(CommandQueue *queue) setScaleMode(m_scaleMode); setStereoMode(m_stereoMode); setStereoEyeSeparation(m_stereoEyeSeparation); + setStereoProgressiveEnabled(m_stereoProgressiveEnabled); } } @@ -475,6 +517,8 @@ void Q3DSViewerSettingsPrivate::load(const QString &group, const QString &organi m_savedSettings->value(QStringLiteral("stereoMode")).toInt())); q_ptr->setStereoEyeSeparation( m_savedSettings->value(QStringLiteral("stereoEyeSeparation")).toDouble()); + q_ptr->setStereoProgressiveEnabled( + m_savedSettings->value(QStringLiteral("stereoProgressiveEnabled")).toBool()); q_ptr->setMatteEnabled(m_savedSettings->value(QStringLiteral("matteEnabled")).toBool()); } @@ -572,6 +616,17 @@ void Q3DSViewerSettingsPrivate::setStereoEyeSeparation(double separation) } } +void Q3DSViewerSettingsPrivate::setStereoProgressiveEnabled(bool enabled) +{ + m_stereoProgressiveEnabled = enabled; + if (m_viewerApp) { + m_viewerApp->SetStereoProgressiveEnabled(enabled); + } else if (m_commandQueue) { + m_commandQueue->m_stereoProgressiveEnabled = enabled; + m_commandQueue->m_stereoProgressiveEnabledChanged = true; + } +} + void Q3DSViewerSettingsPrivate::initSettingsStore(const QString &group, const QString &organization, const QString &application) { |