summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h2
-rw-r--r--src/plugins/renderers/opengl/renderer/commandexecuter.cpp72
-rw-r--r--src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp9
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer.cpp7
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer_p.h1
-rw-r--r--src/quick3d/quick3dscene2d/items/qscene2d.cpp9
-rw-r--r--src/quick3d/quick3dscene2d/items/qscene2d.h1
-rw-r--r--src/render/materialsystem/shader.cpp2
8 files changed, 15 insertions, 88 deletions
diff --git a/src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h b/src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h
index 139267d9a..cd5af8124 100644
--- a/src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h
+++ b/src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h
@@ -80,7 +80,7 @@ public:
inline void setNodeManagers(NodeManagers *manager) Q_DECL_NOTHROW { m_manager = manager; }
inline void setTechniqueFilter(TechniqueFilter *techniqueFilter) Q_DECL_NOTHROW { m_techniqueFilter = techniqueFilter; }
inline void setRenderPassFilter(RenderPassFilter *renderPassFilter) Q_DECL_NOTHROW { m_renderPassFilter = renderPassFilter; }
- inline const QHash<Qt3DCore::QNodeId, QVector<RenderPassParameterData>> &materialToPassAndParameter() Q_DECL_NOTHROW { return m_parameters; }
+ inline const MaterialParameterGathererData &materialToPassAndParameter() Q_DECL_NOTHROW { return m_parameters; }
inline void setHandles(const QVector<HMaterial> &handles) Q_DECL_NOTHROW { m_handles = handles; }
inline TechniqueFilter *techniqueFilter() const Q_DECL_NOTHROW { return m_techniqueFilter; }
diff --git a/src/plugins/renderers/opengl/renderer/commandexecuter.cpp b/src/plugins/renderers/opengl/renderer/commandexecuter.cpp
index 03d5d5a7f..ff8ff3669 100644
--- a/src/plugins/renderers/opengl/renderer/commandexecuter.cpp
+++ b/src/plugins/renderers/opengl/renderer/commandexecuter.cpp
@@ -67,24 +67,11 @@ QJsonObject typeToJsonObj(const Type &)
template<typename Type>
QJsonValue typeToJsonValue(const Type &t)
{
- Q_UNUSED(t);
+ Q_UNUSED(t)
return QJsonValue();
}
template<>
-QJsonObject typeToJsonObj<QRectF>(const QRectF &rect)
-{
- QJsonObject obj;
-
- obj.insert(QLatin1String("x"), rect.x());
- obj.insert(QLatin1String("y"), rect.y());
- obj.insert(QLatin1String("width"), rect.width());
- obj.insert(QLatin1String("height"), rect.height());
-
- return obj;
-}
-
-template<>
QJsonValue typeToJsonValue<QRectF>(const QRectF &rect)
{
QJsonArray value;
@@ -98,17 +85,6 @@ QJsonValue typeToJsonValue<QRectF>(const QRectF &rect)
}
template<>
-QJsonObject typeToJsonObj<QSize>(const QSize &s)
-{
- QJsonObject obj;
-
- obj.insert(QLatin1String("width"), s.width());
- obj.insert(QLatin1String("height"), s.height());
-
- return obj;
-}
-
-template<>
QJsonValue typeToJsonValue<QSize>(const QSize &s)
{
QJsonArray value;
@@ -120,18 +96,6 @@ QJsonValue typeToJsonValue<QSize>(const QSize &s)
}
template<>
-QJsonObject typeToJsonObj<QVector3D>(const QVector3D &v)
-{
- QJsonObject obj;
-
- obj.insert(QLatin1String("x"), v.x());
- obj.insert(QLatin1String("y"), v.y());
- obj.insert(QLatin1String("z"), v.z());
-
- return obj;
-}
-
-template<>
QJsonValue typeToJsonValue<QVector3D>(const QVector3D &v)
{
QJsonArray value;
@@ -144,14 +108,6 @@ QJsonValue typeToJsonValue<QVector3D>(const QVector3D &v)
}
template<>
-QJsonObject typeToJsonObj<Qt3DCore::QNodeId>(const Qt3DCore::QNodeId &v)
-{
- QJsonObject obj;
- obj.insert(QLatin1String("id"), qint64(v.id()));
- return obj;
-}
-
-template<>
QJsonValue typeToJsonValue<Qt3DCore::QNodeId>(const Qt3DCore::QNodeId &v)
{
QJsonValue value(qint64(v.id()));
@@ -159,19 +115,6 @@ QJsonValue typeToJsonValue<Qt3DCore::QNodeId>(const Qt3DCore::QNodeId &v)
}
template<>
-QJsonObject typeToJsonObj<QVector4D>(const QVector4D &v)
-{
- QJsonObject obj;
-
- obj.insert(QLatin1String("x"), v.x());
- obj.insert(QLatin1String("y"), v.y());
- obj.insert(QLatin1String("z"), v.z());
- obj.insert(QLatin1String("w"), v.w());
-
- return obj;
-}
-
-template<>
QJsonValue typeToJsonValue<QVector4D>(const QVector4D &v)
{
QJsonArray value;
@@ -185,19 +128,6 @@ QJsonValue typeToJsonValue<QVector4D>(const QVector4D &v)
}
template<>
-QJsonObject typeToJsonObj<QMatrix4x4>(const QMatrix4x4 &v)
-{
- QJsonObject obj;
-
- obj.insert(QLatin1String("row 0"), typeToJsonObj(v.row(0)));
- obj.insert(QLatin1String("row 1"), typeToJsonObj(v.row(0)));
- obj.insert(QLatin1String("row 2"), typeToJsonObj(v.row(0)));
- obj.insert(QLatin1String("row 3"), typeToJsonObj(v.row(0)));
-
- return obj;
-}
-
-template<>
QJsonValue typeToJsonValue<QMatrix4x4>(const QMatrix4x4 &v)
{
QJsonArray value;
diff --git a/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp b/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp
index a80fbe445..a9713d2b9 100644
--- a/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp
+++ b/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp
@@ -441,8 +441,13 @@ public:
RendererCache::LeafNodeData &dataCacheForLeaf = m_renderer->cache()->leafNodeCache[m_leafNode];
dataCacheForLeaf.materialParameterGatherer.clear();
- for (const auto &materialGatherer : qAsConst(m_materialParameterGathererJobs))
- dataCacheForLeaf.materialParameterGatherer.unite(materialGatherer->materialToPassAndParameter());
+ for (const auto &materialGatherer : qAsConst(m_materialParameterGathererJobs)) {
+ const MaterialParameterGathererData &source = materialGatherer->materialToPassAndParameter();
+ for (auto it = std::begin(source); it != std::end(source); ++it) {
+ Q_ASSERT(!dataCacheForLeaf.materialParameterGatherer.contains(it.key()));
+ dataCacheForLeaf.materialParameterGatherer.insert(it.key(), it.value());
+ }
+ }
}
private:
diff --git a/src/quick3d/imports/scene3d/scene3drenderer.cpp b/src/quick3d/imports/scene3d/scene3drenderer.cpp
index 71cf6c240..f78271bea 100644
--- a/src/quick3d/imports/scene3d/scene3drenderer.cpp
+++ b/src/quick3d/imports/scene3d/scene3drenderer.cpp
@@ -327,7 +327,9 @@ void Scene3DRenderer::beforeSynchronize()
const bool generateNewTexture = m_finalFBO.isNull() || forceRecreate;
if (generateNewTexture) {
m_finalFBO.reset(createFramebufferObject(m_lastSize));
- m_texture.reset(m_window->createTextureFromId(m_finalFBO->texture(), m_finalFBO->size(), QQuickWindow::TextureHasAlphaChannel));
+ m_textureId = m_finalFBO->texture();
+ m_texture.reset(m_window->createTextureFromNativeObject(QQuickWindow::NativeObjectTexture, &m_textureId,
+ 0, m_finalFBO->size(), QQuickWindow::TextureHasAlphaChannel));
}
// We can render either the Scene3D or the Scene3DView but not both
@@ -349,9 +351,8 @@ void Scene3DRenderer::beforeSynchronize()
}
}
- if (m_aspectEngine->rootEntity() != m_item->entity()) {
+ if (m_aspectEngine->rootEntity() != m_item->entity())
scheduleRootEntityChange();
- }
// Mark SGNodes as dirty so that QQuick will trigger some rendering
if (m_node)
diff --git a/src/quick3d/imports/scene3d/scene3drenderer_p.h b/src/quick3d/imports/scene3d/scene3drenderer_p.h
index 08a2c60a3..b558359c6 100644
--- a/src/quick3d/imports/scene3d/scene3drenderer_p.h
+++ b/src/quick3d/imports/scene3d/scene3drenderer_p.h
@@ -123,6 +123,7 @@ private:
QSemaphore m_allowRendering;
Scene3DItem::CompositingMode m_compositingMode;
QVector<Scene3DView *> m_views;
+ quint32 m_textureId;
friend class Scene3DCleaner;
};
diff --git a/src/quick3d/quick3dscene2d/items/qscene2d.cpp b/src/quick3d/quick3dscene2d/items/qscene2d.cpp
index 70516ff09..6efc6a84c 100644
--- a/src/quick3d/quick3dscene2d/items/qscene2d.cpp
+++ b/src/quick3d/quick3dscene2d/items/qscene2d.cpp
@@ -289,15 +289,6 @@ bool QScene2D::isMouseEnabled() const
/*!
Retrieve entities associated with the QScene2D.
*/
-QVector<Qt3DCore::QEntity*> QScene2D::entities()
-{
- Q_D(const QScene2D);
- return d->m_entities;
-}
-
-/*!
- Retrieve entities associated with the QScene2D.
- */
QVector<Qt3DCore::QEntity*> QScene2D::entities() const
{
Q_D(const QScene2D);
diff --git a/src/quick3d/quick3dscene2d/items/qscene2d.h b/src/quick3d/quick3dscene2d/items/qscene2d.h
index e87c0be05..136d6347f 100644
--- a/src/quick3d/quick3dscene2d/items/qscene2d.h
+++ b/src/quick3d/quick3dscene2d/items/qscene2d.h
@@ -81,7 +81,6 @@ public:
QQuickItem *item() const;
bool isMouseEnabled() const;
- Q_DECL_DEPRECATED QVector<Qt3DCore::QEntity *> entities();
QVector<Qt3DCore::QEntity *> entities() const;
void addEntity(Qt3DCore::QEntity *entity);
void removeEntity(Qt3DCore::QEntity *entity);
diff --git a/src/render/materialsystem/shader.cpp b/src/render/materialsystem/shader.cpp
index d0e2e9a76..be7d0f1ea 100644
--- a/src/render/materialsystem/shader.cpp
+++ b/src/render/materialsystem/shader.cpp
@@ -82,8 +82,8 @@ const int Shader::skinningPaletteNameId = StringToInt::lookupId(QLatin1String("s
Shader::Shader()
: BackendNode(ReadWrite)
- , m_status(QShaderProgram::NotReady)
, m_requiresFrontendSync(false)
+ , m_status(QShaderProgram::NotReady)
, m_format(QShaderProgram::GLSL)
, m_dirty(false)
{