summaryrefslogtreecommitdiffstats
path: root/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/api')
-rw-r--r--src/api/studio3d/q3dscommandqueue.cpp5
-rw-r--r--src/api/studio3d/q3dscommandqueue_p.h2
-rw-r--r--src/api/studio3d/q3dsviewersettings.cpp55
-rw-r--r--src/api/studio3d/q3dsviewersettings.h4
-rw-r--r--src/api/studio3d/q3dsviewersettings_p.h2
-rw-r--r--src/api/studio3dqml/q3dsplugin.cpp1
-rw-r--r--src/api/studio3dqml/q3dsrenderer.cpp2
7 files changed, 71 insertions, 0 deletions
diff --git a/src/api/studio3d/q3dscommandqueue.cpp b/src/api/studio3d/q3dscommandqueue.cpp
index b2d0937..300c0bf 100644
--- a/src/api/studio3d/q3dscommandqueue.cpp
+++ b/src/api/studio3d/q3dscommandqueue.cpp
@@ -217,6 +217,8 @@ void CommandQueue::copyCommands(CommandQueue &fromQueue)
m_stereoModeChanged = m_stereoModeChanged || fromQueue.m_stereoModeChanged;
m_stereoEyeSeparationChanged
= m_stereoEyeSeparationChanged || fromQueue.m_stereoEyeSeparationChanged;
+ m_stereoProgressiveEnabledChanged
+ = m_stereoProgressiveEnabledChanged || fromQueue.m_stereoProgressiveEnabledChanged;
m_shadeModeChanged = m_shadeModeChanged || fromQueue.m_shadeModeChanged;
m_showRenderStatsChanged = m_showRenderStatsChanged || fromQueue.m_showRenderStatsChanged;
m_matteColorChanged = m_matteColorChanged || fromQueue.m_matteColorChanged;
@@ -236,6 +238,8 @@ void CommandQueue::copyCommands(CommandQueue &fromQueue)
m_stereoMode = fromQueue.m_stereoMode;
if (fromQueue.m_stereoEyeSeparationChanged)
m_stereoEyeSeparation = fromQueue.m_stereoEyeSeparation;
+ if (fromQueue.m_stereoProgressiveEnabledChanged)
+ m_stereoProgressiveEnabled = fromQueue.m_stereoProgressiveEnabled;
if (fromQueue.m_shadeModeChanged)
m_shadeMode = fromQueue.m_shadeMode;
if (fromQueue.m_showRenderStatsChanged)
@@ -338,6 +342,7 @@ void CommandQueue::clear(bool deleteCommandData)
m_scaleModeChanged = false;
m_stereoModeChanged = false;
m_stereoEyeSeparationChanged = false;
+ m_stereoProgressiveEnabledChanged = false;
m_shadeModeChanged = false;
m_showRenderStatsChanged = false;
m_matteColorChanged = false;
diff --git a/src/api/studio3d/q3dscommandqueue_p.h b/src/api/studio3d/q3dscommandqueue_p.h
index 0b7b833..6096439 100644
--- a/src/api/studio3d/q3dscommandqueue_p.h
+++ b/src/api/studio3d/q3dscommandqueue_p.h
@@ -143,6 +143,7 @@ public:
bool m_scaleModeChanged = false;
bool m_stereoModeChanged = false;
bool m_stereoEyeSeparationChanged = false;
+ bool m_stereoProgressiveEnabledChanged = false;
bool m_shadeModeChanged = false;
bool m_showRenderStatsChanged = false;
bool m_matteColorChanged = false;
@@ -157,6 +158,7 @@ public:
Q3DSViewerSettings::ScaleMode m_scaleMode = Q3DSViewerSettings::ScaleModeCenter;
Q3DSViewerSettings::StereoMode m_stereoMode = Q3DSViewerSettings::StereoModeMono;
double m_stereoEyeSeparation = 0.4;
+ bool m_stereoProgressiveEnabled = false;
Q3DSViewerSettings::ShadeMode m_shadeMode = Q3DSViewerSettings::ShadeModeShaded;
bool m_showRenderStats = false;
QColor m_matteColor = QColor(Qt::black);
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)
{
diff --git a/src/api/studio3d/q3dsviewersettings.h b/src/api/studio3d/q3dsviewersettings.h
index 0a5e699..f956649 100644
--- a/src/api/studio3d/q3dsviewersettings.h
+++ b/src/api/studio3d/q3dsviewersettings.h
@@ -52,6 +52,7 @@ class Q_STUDIO3D_EXPORT Q3DSViewerSettings : public QObject
Q_PROPERTY(ScaleMode scaleMode READ scaleMode WRITE setScaleMode NOTIFY scaleModeChanged)
Q_PROPERTY(StereoMode stereoMode READ stereoMode WRITE setStereoMode NOTIFY stereoModeChanged REVISION 1)
Q_PROPERTY(double stereoEyeSeparation READ stereoEyeSeparation WRITE setStereoEyeSeparation NOTIFY stereoEyeSeparationChanged REVISION 1)
+ Q_PROPERTY(bool stereoProgressiveEnabled READ stereoProgressiveEnabled WRITE setStereoProgressiveEnabled NOTIFY stereoProgressiveEnabledChanged REVISION 2)
public:
enum ShadeMode {
@@ -82,6 +83,7 @@ public:
ScaleMode scaleMode() const;
StereoMode stereoMode() const;
double stereoEyeSeparation() const;
+ Q_REVISION(2) bool stereoProgressiveEnabled() const;
Q_INVOKABLE void save(const QString &group, const QString &organization = QString(),
const QString &application = QString());
@@ -95,6 +97,7 @@ public Q_SLOTS:
void setScaleMode(ScaleMode mode);
void setStereoMode(StereoMode mode);
void setStereoEyeSeparation(double separation);
+ Q_REVISION(2) void setStereoProgressiveEnabled(bool enabled);
Q_SIGNALS:
void matteEnabledChanged(bool enabled);
@@ -104,6 +107,7 @@ Q_SIGNALS:
void scaleModeChanged(ScaleMode mode);
void stereoModeChanged(StereoMode mode);
void stereoEyeSeparationChanged(double separation);
+ Q_REVISION(2) void stereoProgressiveEnabledChanged(bool enabled);
private:
Q_DISABLE_COPY(Q3DSViewerSettings)
diff --git a/src/api/studio3d/q3dsviewersettings_p.h b/src/api/studio3d/q3dsviewersettings_p.h
index 8ff9394..44e1227 100644
--- a/src/api/studio3d/q3dsviewersettings_p.h
+++ b/src/api/studio3d/q3dsviewersettings_p.h
@@ -69,6 +69,7 @@ public:
void setScaleMode(Q3DSViewerSettings::ScaleMode mode);
void setStereoMode(Q3DSViewerSettings::StereoMode mode);
void setStereoEyeSeparation(double separation);
+ void setStereoProgressiveEnabled(bool enabled);
public:
Q3DSViewerSettings *q_ptr;
@@ -86,6 +87,7 @@ private:
Q3DSViewerSettings::ScaleMode m_scaleMode;
Q3DSViewerSettings::StereoMode m_stereoMode;
double m_stereoEyeSeparation;
+ bool m_stereoProgressiveEnabled;
QSettings *m_savedSettings;
};
diff --git a/src/api/studio3dqml/q3dsplugin.cpp b/src/api/studio3dqml/q3dsplugin.cpp
index ee9a9b9..6ce3628 100644
--- a/src/api/studio3dqml/q3dsplugin.cpp
+++ b/src/api/studio3dqml/q3dsplugin.cpp
@@ -67,6 +67,7 @@ void Q3DSPlugin::registerTypes(const char *uri)
// 2.7
qmlRegisterType<Q3DSPresentationItem, 2>(uri, 2, 7, "Presentation");
+ qmlRegisterType<Q3DSViewerSettings, 2>(uri, 2, 7, "ViewerSettings");
qmlRegisterRevision<Q3DSPresentation, 2>(uri, 2, 7);
// Automatically register the latest version
diff --git a/src/api/studio3dqml/q3dsrenderer.cpp b/src/api/studio3dqml/q3dsrenderer.cpp
index 1f78bf7..f7bd25b 100644
--- a/src/api/studio3dqml/q3dsrenderer.cpp
+++ b/src/api/studio3dqml/q3dsrenderer.cpp
@@ -351,6 +351,8 @@ void Q3DSRenderer::processCommands()
m_settings->setStereoMode(m_commands.m_stereoMode);
if (m_commands.m_stereoEyeSeparationChanged)
m_settings->setStereoEyeSeparation(m_commands.m_stereoEyeSeparation);
+ if (m_commands.m_stereoProgressiveEnabledChanged)
+ m_settings->setStereoProgressiveEnabled(m_commands.m_stereoProgressiveEnabled);
if (m_commands.m_shadeModeChanged)
m_settings->setShadeMode(m_commands.m_shadeMode);
if (m_commands.m_matteColorChanged)