diff options
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) { |