summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/qt3d/compute-particles/ComputeMaterial.qml4
-rw-r--r--examples/qt3d/instanced-arrays-qml/main.qml3
-rw-r--r--src/plugins/sceneparsers/gltf/gltfparser.cpp6
-rw-r--r--src/quick3d/imports/render/qt3dquick3drenderplugin.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3drenderpass.cpp35
-rw-r--r--src/quick3d/quick3drender/items/quick3drenderpass_p.h7
-rw-r--r--src/render/backend/abstractrenderer_p.h22
-rw-r--r--src/render/backend/backendnode.cpp2
-rw-r--r--src/render/backend/backendnode_p.h4
-rw-r--r--src/render/backend/boundingvolumedebug.cpp2
-rw-r--r--src/render/backend/cameralens.cpp2
-rw-r--r--src/render/backend/computejob.cpp5
-rw-r--r--src/render/backend/entity.cpp2
-rw-r--r--src/render/backend/layer.cpp2
-rw-r--r--src/render/backend/renderattachment.cpp2
-rw-r--r--src/render/backend/rendercommand_p.h2
-rw-r--r--src/render/backend/renderer.cpp35
-rw-r--r--src/render/backend/renderer_p.h4
-rw-r--r--src/render/backend/renderersettings.cpp2
-rw-r--r--src/render/backend/rendertarget.cpp2
-rw-r--r--src/render/backend/renderview.cpp101
-rw-r--r--src/render/backend/renderview_p.h2
-rw-r--r--src/render/backend/shadervariables_p.h14
-rw-r--r--src/render/backend/transform.cpp2
-rw-r--r--src/render/framegraph/cameraselectornode.cpp2
-rw-r--r--src/render/framegraph/clearbuffer.cpp2
-rw-r--r--src/render/framegraph/dispatchcompute.cpp2
-rw-r--r--src/render/framegraph/frustumculling.cpp2
-rw-r--r--src/render/framegraph/layerfilternode.cpp2
-rw-r--r--src/render/framegraph/lighting.cpp2
-rw-r--r--src/render/framegraph/nodraw.cpp2
-rw-r--r--src/render/framegraph/renderpassfilternode.cpp2
-rw-r--r--src/render/framegraph/rendersurfaceselector.cpp2
-rw-r--r--src/render/framegraph/rendertargetselectornode.cpp2
-rw-r--r--src/render/framegraph/sortcriterion.cpp2
-rw-r--r--src/render/framegraph/sortmethod.cpp2
-rw-r--r--src/render/framegraph/statesetnode.cpp2
-rw-r--r--src/render/framegraph/techniquefilternode.cpp2
-rw-r--r--src/render/framegraph/viewportnode.cpp2
-rw-r--r--src/render/frontend/qrenderaspect.cpp1
-rw-r--r--src/render/geometry/attribute.cpp7
-rw-r--r--src/render/geometry/attribute_p.h2
-rw-r--r--src/render/geometry/buffer.cpp2
-rw-r--r--src/render/geometry/geometry.cpp2
-rw-r--r--src/render/geometry/geometryrenderer.cpp2
-rw-r--r--src/render/io/scene.cpp2
-rw-r--r--src/render/materialsystem/annotation.cpp2
-rw-r--r--src/render/materialsystem/effect.cpp2
-rw-r--r--src/render/materialsystem/material.cpp2
-rw-r--r--src/render/materialsystem/materialsystem.pri5
-rw-r--r--src/render/materialsystem/parameter.cpp2
-rw-r--r--src/render/materialsystem/parametermapping.cpp103
-rw-r--r--src/render/materialsystem/parametermapping_p.h92
-rw-r--r--src/render/materialsystem/qparametermapping.cpp203
-rw-r--r--src/render/materialsystem/qparametermapping.h101
-rw-r--r--src/render/materialsystem/qparametermapping_p.h77
-rw-r--r--src/render/materialsystem/qrenderpass.cpp41
-rw-r--r--src/render/materialsystem/qrenderpass.h4
-rw-r--r--src/render/materialsystem/renderpass.cpp25
-rw-r--r--src/render/materialsystem/renderpass_p.h6
-rw-r--r--src/render/materialsystem/shader.cpp7
-rw-r--r--src/render/materialsystem/shader_p.h2
-rw-r--r--src/render/materialsystem/shaderdata.cpp2
-rw-r--r--src/render/materialsystem/technique.cpp2
-rw-r--r--src/render/picking/objectpicker.cpp2
-rw-r--r--src/render/renderstates/renderstates.cpp2
-rw-r--r--src/render/texture/texture.cpp2
-rw-r--r--src/render/texture/textureimage.cpp2
-rw-r--r--tests/auto/render/commons/testrenderer.cpp9
-rw-r--r--tests/auto/render/commons/testrenderer.h7
-rw-r--r--tests/auto/render/qmaterial/tst_qmaterial.cpp18
-rw-r--r--tests/auto/render/renderpass/tst_renderpass.cpp43
72 files changed, 151 insertions, 924 deletions
diff --git a/examples/qt3d/compute-particles/ComputeMaterial.qml b/examples/qt3d/compute-particles/ComputeMaterial.qml
index f4ac1105a..01fef2bd9 100644
--- a/examples/qt3d/compute-particles/ComputeMaterial.qml
+++ b/examples/qt3d/compute-particles/ComputeMaterial.qml
@@ -100,10 +100,6 @@ Material {
shaderProgram: drawShader
// We assume the mesh to be drawn will also receive
// Vertex buffers attributes that will be used to position and color
- bindings: [
- ParameterMapping { parameterName: "particlePosition"; shaderVariableName: "particlePosition"; bindingType: ParameterMapping.Attribute },
- ParameterMapping { parameterName: "particleColor"; shaderVariableName: "particleColor"; bindingType: ParameterMapping.Attribute }
- ]
}
]
annotations: [
diff --git a/examples/qt3d/instanced-arrays-qml/main.qml b/examples/qt3d/instanced-arrays-qml/main.qml
index 993e740fa..96a258da4 100644
--- a/examples/qt3d/instanced-arrays-qml/main.qml
+++ b/examples/qt3d/instanced-arrays-qml/main.qml
@@ -93,9 +93,6 @@ Entity {
}
annotations: Annotation { name: "renderingStyle"; value: "forward" }
renderPasses: RenderPass {
- bindings: [
- ParameterMapping { parameterName: "pos"; shaderVariableName: "pos"; bindingType: ParameterMapping.Attribute }
- ]
shaderProgram: ShaderProgram {
vertexShaderCode: loadSource("qrc:/instanced.vert")
fragmentShaderCode: loadSource("qrc:/instanced.frag")
diff --git a/src/plugins/sceneparsers/gltf/gltfparser.cpp b/src/plugins/sceneparsers/gltf/gltfparser.cpp
index cca52d396..abb3f8559 100644
--- a/src/plugins/sceneparsers/gltf/gltfparser.cpp
+++ b/src/plugins/sceneparsers/gltf/gltfparser.cpp
@@ -67,7 +67,6 @@
#include <Qt3DRender/QMaterial>
#include <Qt3DRender/QGraphicsApiFilter>
#include <Qt3DRender/QParameter>
-#include <Qt3DRender/QParameterMapping>
#include <Qt3DRender/QPolygonOffset>
#include <Qt3DRender/QRenderState>
#include <Qt3DRender/QScissorTest>
@@ -102,7 +101,7 @@ const QString KEY_ROTATION = QStringLiteral("rotation");
const QString KEY_SCALE = QStringLiteral("scale");
const QString KEY_TRANSLATION = QStringLiteral("translation");
const QString KEY_TYPE = QStringLiteral("type");
-const QString KEY_PERSPECTIVE =QStringLiteral("perspective");
+const QString KEY_PERSPECTIVE = QStringLiteral("perspective");
const QString KEY_NAME = QStringLiteral("name");
const QString KEY_COUNT = QStringLiteral("count");
const QString KEY_YFOV = QStringLiteral("yfov");
@@ -993,7 +992,6 @@ void GLTFParser::processJSONTechnique(const QString &id, const QJsonObject &json
delete parameter;
}
- pass->addBinding(new QParameterMapping(attributeName, shaderAttributeName, QParameterMapping::Attribute));
} // of program-instance attributes
// Uniforms
@@ -1009,9 +1007,7 @@ void GLTFParser::processJSONTechnique(const QString &id, const QJsonObject &json
//Check if the parameter has a standard uniform semantic
QString standardUniformName = standardUniformNamefromSemantic(m_parameterDataDict[parameter].semantic);
if (standardUniformName.isNull()) {
- pass->addBinding(new QParameterMapping(pname, shaderUniformName, QParameterMapping::Uniform));
} else {
- pass->addBinding(new QParameterMapping(standardUniformName, shaderUniformName, QParameterMapping::StandardUniform));
t->removeParameter(parameter);
m_parameterDataDict.remove(parameter);
delete parameter;
diff --git a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp
index d06a8e06c..1cb5dd857 100644
--- a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp
+++ b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp
@@ -56,7 +56,6 @@
#include <Qt3DRender/qeffect.h>
#include <Qt3DRender/qparameter.h>
#include <Qt3DRender/qannotation.h>
-#include <Qt3DRender/qparametermapping.h>
#include <Qt3DRender/qcuboidmesh.h>
#include <Qt3DRender/qconemesh.h>
#include <Qt3DRender/qcylindermesh.h>
@@ -193,7 +192,6 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri)
qmlRegisterType<Qt3DRender::QGraphicsApiFilter>(uri, 2, 0, "GraphicsApiFilter");
qmlRegisterUncreatableType<Qt3DRender::QParameter>(uri, 2, 0, "QParameter", "Quick3D should instantiate Quick3DParameter only");
qmlRegisterType<Qt3DRender::Render::Quick::Quick3DParameter>(uri, 2, 0, "Parameter");
- qmlRegisterType<Qt3DRender::QParameterMapping>(uri, 2, 0, "ParameterMapping");
Qt3DRender::Quick::registerExtendedType<Qt3DRender::QMaterial, Qt3DRender::Render::Quick::Quick3DMaterial>("QMaterial", "Qt3D.Render/Material", uri, 2, 0, "Material");
Qt3DRender::Quick::registerExtendedType<Qt3DRender::QRenderPass, Qt3DRender::Render::Quick::Quick3DRenderPass>("QRenderPass", "Qt3D.Render/RenderPass", uri, 2, 0, "RenderPass");
qmlRegisterType<Qt3DRender::QShaderProgram>(uri, 2, 0, "ShaderProgram");
diff --git a/src/quick3d/quick3drender/items/quick3drenderpass.cpp b/src/quick3d/quick3drender/items/quick3drenderpass.cpp
index 14524afe9..5433c1bd2 100644
--- a/src/quick3d/quick3drender/items/quick3drenderpass.cpp
+++ b/src/quick3d/quick3drender/items/quick3drenderpass.cpp
@@ -39,7 +39,6 @@
****************************************************************************/
#include "quick3drenderpass_p.h"
-#include <Qt3DRender/qparametermapping.h>
QT_BEGIN_NAMESPACE
@@ -61,15 +60,6 @@ QQmlListProperty<QAnnotation> Quick3DRenderPass::annotationList()
&Quick3DRenderPass::clearAnnotations);
}
-QQmlListProperty<QParameterMapping> Quick3DRenderPass::bindingList()
-{
- return QQmlListProperty<QParameterMapping>(this, 0,
- &Quick3DRenderPass::appendBinding,
- &Quick3DRenderPass::bindingsCount,
- &Quick3DRenderPass::bindingAt,
- &Quick3DRenderPass::clearBindings);
-}
-
QQmlListProperty<QRenderState> Quick3DRenderPass::renderStateList()
{
return QQmlListProperty<QRenderState>(this, 0,
@@ -113,31 +103,6 @@ void Quick3DRenderPass::clearAnnotations(QQmlListProperty<QAnnotation> *list)
rPass->parentRenderPass()->removeAnnotation(c);
}
-void Quick3DRenderPass::appendBinding(QQmlListProperty<QParameterMapping> *list, QParameterMapping *binding)
-{
- Quick3DRenderPass *rPass = qobject_cast<Quick3DRenderPass *>(list->object);
- rPass->parentRenderPass()->addBinding(binding);
-}
-
-QParameterMapping *Quick3DRenderPass::bindingAt(QQmlListProperty<QParameterMapping> *list, int index)
-{
- Quick3DRenderPass *rPass = qobject_cast<Quick3DRenderPass *>(list->object);
- return rPass->parentRenderPass()->bindings().at(index);
-}
-
-int Quick3DRenderPass::bindingsCount(QQmlListProperty<QParameterMapping> *list)
-{
- Quick3DRenderPass *rPass = qobject_cast<Quick3DRenderPass *>(list->object);
- return rPass->parentRenderPass()->bindings().count();
-}
-
-void Quick3DRenderPass::clearBindings(QQmlListProperty<QParameterMapping> *list)
-{
- Quick3DRenderPass *rPass = qobject_cast<Quick3DRenderPass *>(list->object);
- Q_FOREACH (QParameterMapping *binding, rPass->parentRenderPass()->bindings())
- rPass->parentRenderPass()->removeBinding(binding);
-}
-
void Quick3DRenderPass::appendRenderState(QQmlListProperty<QRenderState> *list, QRenderState *state)
{
Quick3DRenderPass *rPass = qobject_cast<Quick3DRenderPass *>(list->object);
diff --git a/src/quick3d/quick3drender/items/quick3drenderpass_p.h b/src/quick3d/quick3drender/items/quick3drenderpass_p.h
index 62fd749fa..a7e7f6cd4 100644
--- a/src/quick3d/quick3drender/items/quick3drenderpass_p.h
+++ b/src/quick3d/quick3drender/items/quick3drenderpass_p.h
@@ -66,14 +66,12 @@ class QT3DQUICKRENDERSHARED_PRIVATE_EXPORT Quick3DRenderPass : public QObject
{
Q_OBJECT
Q_PROPERTY(QQmlListProperty<Qt3DRender::QAnnotation> annotations READ annotationList)
- Q_PROPERTY(QQmlListProperty<Qt3DRender::QParameterMapping> bindings READ bindingList)
Q_PROPERTY(QQmlListProperty<Qt3DRender::QRenderState> renderStates READ renderStateList)
Q_PROPERTY(QQmlListProperty<Qt3DRender::QParameter> parameters READ parameterList)
public:
explicit Quick3DRenderPass(QObject *parent = 0);
QQmlListProperty<QAnnotation> annotationList();
- QQmlListProperty<QParameterMapping> bindingList();
QQmlListProperty<QRenderState> renderStateList();
QQmlListProperty<QParameter> parameterList();
@@ -85,11 +83,6 @@ private:
static int annotationsCount(QQmlListProperty<QAnnotation> *list);
static void clearAnnotations(QQmlListProperty<QAnnotation> *list);
- static void appendBinding(QQmlListProperty<QParameterMapping> *list, QParameterMapping *binding);
- static QParameterMapping *bindingAt(QQmlListProperty<QParameterMapping> *list, int index);
- static int bindingsCount(QQmlListProperty<QParameterMapping> *list);
- static void clearBindings(QQmlListProperty<QParameterMapping> *list);
-
static void appendRenderState(QQmlListProperty<QRenderState> *list, QRenderState *state);
static QRenderState *renderStateAt(QQmlListProperty<QRenderState> *list, int index);
static int renderStateCount(QQmlListProperty<QRenderState> *list);
diff --git a/src/render/backend/abstractrenderer_p.h b/src/render/backend/abstractrenderer_p.h
index dbc157a2c..13eceb3c5 100644
--- a/src/render/backend/abstractrenderer_p.h
+++ b/src/render/backend/abstractrenderer_p.h
@@ -80,15 +80,6 @@ class FrameGraphNode;
class RendererSettings;
class BackendNode;
-// Changes made to backend nodes are reported to the Renderer
-enum class BackendNodeDirtyFlag {
- Transform = 1 << 0,
- Material = 1 << 1,
- Geometry = 1 << 2,
- Any = 1 << 15
-};
-Q_DECLARE_FLAGS(BackendNodeDirtySet, BackendNodeDirtyFlag)
-Q_DECLARE_OPERATORS_FOR_FLAGS(BackendNodeDirtySet)
class QT3DRENDERSHARED_PRIVATE_EXPORT AbstractRenderer
{
@@ -99,6 +90,16 @@ public:
OpenGL
};
+ // Changes made to backend nodes are reported to the Renderer
+ enum BackendNodeDirtyFlag {
+ TransformDirty = 1 << 0,
+ MaterialDirty = 1 << 1,
+ GeometryDirty = 1 << 2,
+ ComputeDirty = 1 << 3,
+ AllDirty = 1 << 15
+ };
+ Q_DECLARE_FLAGS(BackendNodeDirtySet, BackendNodeDirtyFlag)
+
virtual API api() const = 0;
virtual qint64 time() const = 0;
@@ -125,6 +126,7 @@ public:
virtual void markDirty(BackendNodeDirtySet changes, BackendNode *node) = 0;
virtual BackendNodeDirtySet dirtyBits() = 0;
+ virtual void clearDirtyBits(BackendNodeDirtySet changes) = 0;
virtual bool shouldRender() = 0;
virtual void skipNextFrame() = 0;
@@ -145,6 +147,8 @@ public:
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(AbstractRenderer::BackendNodeDirtySet)
+
} // Render
} // Qt3DRender
diff --git a/src/render/backend/backendnode.cpp b/src/render/backend/backendnode.cpp
index 247f6340b..89a2c797c 100644
--- a/src/render/backend/backendnode.cpp
+++ b/src/render/backend/backendnode.cpp
@@ -61,7 +61,7 @@ void BackendNode::setRenderer(AbstractRenderer *renderer)
m_renderer = renderer;
}
-void BackendNode::markDirty(BackendNodeDirtySet changes)
+void BackendNode::markDirty(AbstractRenderer::BackendNodeDirtySet changes)
{
Q_ASSERT(m_renderer);
m_renderer->markDirty(changes, this);
diff --git a/src/render/backend/backendnode_p.h b/src/render/backend/backendnode_p.h
index e5e6c7b33..5688c2412 100644
--- a/src/render/backend/backendnode_p.h
+++ b/src/render/backend/backendnode_p.h
@@ -70,9 +70,7 @@ public:
void setRenderer(AbstractRenderer *renderer);
protected:
- void markDirty(BackendNodeDirtySet changes);
-
-private:
+ void markDirty(AbstractRenderer::BackendNodeDirtySet changes);
AbstractRenderer *m_renderer;
};
diff --git a/src/render/backend/boundingvolumedebug.cpp b/src/render/backend/boundingvolumedebug.cpp
index 21073e989..4fa87233d 100644
--- a/src/render/backend/boundingvolumedebug.cpp
+++ b/src/render/backend/boundingvolumedebug.cpp
@@ -82,7 +82,7 @@ void BoundingVolumeDebug::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
if (propertyName == QByteArrayLiteral("recursive")) {
m_recursive = propertyChange->value().toBool();
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/backend/cameralens.cpp b/src/render/backend/cameralens.cpp
index d1a273a99..9b76dfece 100644
--- a/src/render/backend/cameralens.cpp
+++ b/src/render/backend/cameralens.cpp
@@ -93,7 +93,7 @@ void CameraLens::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
m_enabled = propertyChange->value().toBool();
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
break;
diff --git a/src/render/backend/computejob.cpp b/src/render/backend/computejob.cpp
index 6444e271e..983954221 100644
--- a/src/render/backend/computejob.cpp
+++ b/src/render/backend/computejob.cpp
@@ -40,6 +40,7 @@
#include "computejob_p.h"
#include <Qt3DCore/qnode.h>
#include <Qt3DCore/qscenepropertychange.h>
+#include <Qt3DRender/private/abstractrenderer_p.h>
QT_BEGIN_NAMESPACE
@@ -65,6 +66,8 @@ void ComputeJob::cleanup()
void ComputeJob::updateFromPeer(Qt3DCore::QNode *peer)
{
m_enabled = peer->isEnabled();
+ if (m_renderer != Q_NULLPTR)
+ BackendNode::markDirty(AbstractRenderer::ComputeDirty);
}
void ComputeJob::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
@@ -73,7 +76,7 @@ void ComputeJob::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
if (e->type() == Qt3DCore::NodeUpdated) {
if (propertyChange->propertyName() == QByteArrayLiteral("enabled"))
m_enabled = propertyChange->value().toBool();
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/backend/entity.cpp b/src/render/backend/entity.cpp
index b7edb7c25..f20def97a 100644
--- a/src/render/backend/entity.cpp
+++ b/src/render/backend/entity.cpp
@@ -205,7 +205,7 @@ void Entity::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
void Entity::dump() const
diff --git a/src/render/backend/layer.cpp b/src/render/backend/layer.cpp
index c1a0a7d0b..e2f5d9de5 100644
--- a/src/render/backend/layer.cpp
+++ b/src/render/backend/layer.cpp
@@ -91,7 +91,7 @@ void Layer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
} else if (propertyChange->propertyName() == QByteArrayLiteral("enabled")) {
m_enabled = propertyChange->value().toBool();
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
} // namespace Render
diff --git a/src/render/backend/renderattachment.cpp b/src/render/backend/renderattachment.cpp
index fd2b43926..bcba92f50 100644
--- a/src/render/backend/renderattachment.cpp
+++ b/src/render/backend/renderattachment.cpp
@@ -110,7 +110,7 @@ void RenderAttachment::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
else if (propertyChange->propertyName() == QByteArrayLiteral("face")) {
m_attachmentData.m_face = static_cast<QRenderAttachment::CubeMapFace>(propertyChange->value().toInt());
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/backend/rendercommand_p.h b/src/render/backend/rendercommand_p.h
index 4d4c9b97d..300f4daf2 100644
--- a/src/render/backend/rendercommand_p.h
+++ b/src/render/backend/rendercommand_p.h
@@ -86,7 +86,7 @@ public:
// A QAttribute pack might be interesting
// This is a temporary fix in the meantime, to remove the hacked methods in Technique
- QHash<QString, QString> m_parameterAttributeToShaderNames;
+ QVector<int> m_attributes;
float m_depth;
int m_changeCost;
diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp
index d94d83151..a519db502 100644
--- a/src/render/backend/renderer.cpp
+++ b/src/render/backend/renderer.cpp
@@ -44,7 +44,6 @@
#include <Qt3DRender/qmaterial.h>
#include <Qt3DRender/qmesh.h>
-#include <Qt3DRender/qparametermapping.h>
#include <Qt3DRender/qrenderpass.h>
#include <Qt3DRender/qshaderprogram.h>
#include <Qt3DRender/qtechnique.h>
@@ -220,17 +219,14 @@ void Renderer::buildDefaultTechnique()
m_defaultTechnique->addPass(basicPass);
- QParameter* ka = new QParameter(QStringLiteral("ambient"), QVector3D(0.2f, 0.2f, 0.2f));
+ QParameter* ka = new QParameter(QStringLiteral("ka"), QVector3D(0.2f, 0.2f, 0.2f));
m_defaultTechnique->addParameter(ka);
- basicPass->addBinding(new QParameterMapping(QStringLiteral("ambient"), QStringLiteral("ka"), QParameterMapping::Uniform));
- QParameter* kd = new QParameter(QStringLiteral("diffuse"), QVector3D(1.0f, 0.5f, 0.0f));
+ QParameter* kd = new QParameter(QStringLiteral("kd"), QVector3D(1.0f, 0.5f, 0.0f));
m_defaultTechnique->addParameter(kd);
- basicPass->addBinding(new QParameterMapping(QStringLiteral("diffuse"), QStringLiteral("kd"), QParameterMapping::Uniform));
- QParameter* ks = new QParameter(QStringLiteral("specular"), QVector3D(0.01f, 0.01f, 0.01f));
+ QParameter* ks = new QParameter(QStringLiteral("ks"), QVector3D(0.01f, 0.01f, 0.01f));
m_defaultTechnique->addParameter(ks);
- basicPass->addBinding(new QParameterMapping(QStringLiteral("specular"), QStringLiteral("ks"), QParameterMapping::Uniform));
m_defaultTechnique->addParameter(new QParameter(QStringLiteral("shininess"), 150.0f));
}
@@ -600,7 +596,13 @@ bool Renderer::submitRenderViews()
const int renderViewsCount = renderViews.size();
quint64 frameElapsed = queueElapsed;
m_lastFrameCorrect.store(1); // everything fine until now.....
- m_changeSet = 0; // mark "not dirty"
+
+ // Clear all dirty flags but Compute so that
+ // we still render every frame when a compute shader is used in a scene
+ BackendNodeDirtySet changesToUnset = m_changeSet;
+ if (changesToUnset.testFlag(Renderer::ComputeDirty))
+ changesToUnset.setFlag(Renderer::ComputeDirty, false);
+ clearDirtyBits(changesToUnset);
// Early return if there's actually nothing to render
if (renderViewsCount <= 0)
@@ -716,11 +718,16 @@ void Renderer::markDirty(BackendNodeDirtySet changes, BackendNode *node)
m_changeSet |= changes;
}
-BackendNodeDirtySet Renderer::dirtyBits()
+Renderer::BackendNodeDirtySet Renderer::dirtyBits()
{
return m_changeSet;
}
+void Renderer::clearDirtyBits(BackendNodeDirtySet changes)
+{
+ m_changeSet &= ~changes;
+}
+
bool Renderer::shouldRender()
{
// Only render if something changed during the last frame, or the last frame
@@ -839,6 +846,9 @@ void Renderer::performCompute(const RenderView *rv, RenderCommand *command)
workGroups[1],
workGroups[2]);
+ // HACK: Reset the compute flag to dirty
+ m_changeSet |= AbstractRenderer::ComputeDirty;
+
#if defined(QT3D_RENDER_ASPECT_OPENGL_DEBUG)
int err = m_graphicsContext->openGLContext()->functions()->glGetError();
if (err)
@@ -909,7 +919,6 @@ bool Renderer::executeCommands(const RenderView *rv)
Shader *shader = m_nodesManager->data<Shader, ShaderManager>(command->m_shader);
if (shader == Q_NULLPTR) {
shader = m_defaultRenderShader;
- command->m_parameterAttributeToShaderNames = m_defaultParameterToGLSLAttributeNames;
command->m_parameterPack = m_defaultUniformPack;
}
@@ -941,7 +950,7 @@ bool Renderer::executeCommands(const RenderView *rv)
if (needsToBindVAO && vao != Q_NULLPTR)
vao->bind();
- if (!command->m_parameterAttributeToShaderNames.isEmpty()) {
+ if (!command->m_attributes.isEmpty()) {
// Update or set Attributes and Buffers for the given rGeometry and Command
indexAttribute = updateBuffersAndAttributes(rGeometry, command, primitiveCount, requiresVAOUpdate);
specified = true;
@@ -1030,9 +1039,9 @@ Attribute *Renderer::updateBuffersAndAttributes(Geometry *geometry, RenderComman
m_graphicsContext->specifyIndices(buffer);
indexAttribute = attribute;
// Vertex Attribute
- } else if (command->m_parameterAttributeToShaderNames.contains(attribute->name())) {
+ } else if (command->m_attributes.contains(attribute->nameId())) {
if (attribute->isDirty() || forceUpdate)
- m_graphicsContext->specifyAttribute(attribute, buffer, command->m_parameterAttributeToShaderNames.value(attribute->name()));
+ m_graphicsContext->specifyAttribute(attribute, buffer, attribute->name());
estimatedCount = qMax(attribute->count(), estimatedCount);
}
diff --git a/src/render/backend/renderer_p.h b/src/render/backend/renderer_p.h
index f68d8f9db..6933c4ead 100644
--- a/src/render/backend/renderer_p.h
+++ b/src/render/backend/renderer_p.h
@@ -154,6 +154,9 @@ public:
void markDirty(BackendNodeDirtySet changes, BackendNode *node) Q_DECL_OVERRIDE;
BackendNodeDirtySet dirtyBits() Q_DECL_OVERRIDE;
+ void clearDirtyBits(BackendNodeDirtySet changes) Q_DECL_OVERRIDE;
+
+
bool shouldRender() Q_DECL_OVERRIDE;
void skipNextFrame() Q_DECL_OVERRIDE;
@@ -227,7 +230,6 @@ private:
// is missing a shader
Shader *m_defaultRenderShader;
RenderStateSet *m_defaultRenderStateSet;
- QHash<QString, QString> m_defaultParameterToGLSLAttributeNames;
ShaderParameterPack m_defaultUniformPack;
QScopedPointer<GraphicsContext> m_graphicsContext;
diff --git a/src/render/backend/renderersettings.cpp b/src/render/backend/renderersettings.cpp
index 56e705bd7..db6bfc55a 100644
--- a/src/render/backend/renderersettings.cpp
+++ b/src/render/backend/renderersettings.cpp
@@ -75,7 +75,7 @@ void RendererSettings::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
m_pickMethod = propertyChange->value().value<QRendererSettings::PickMethod>();
else if (propertyChange->propertyName() == QByteArrayLiteral("pickResult"))
m_pickResultMode = propertyChange->value().value<QRendererSettings::PickResultMode>();
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/backend/rendertarget.cpp b/src/render/backend/rendertarget.cpp
index 2d7130c23..0aa149eb1 100644
--- a/src/render/backend/rendertarget.cpp
+++ b/src/render/backend/rendertarget.cpp
@@ -90,7 +90,7 @@ void RenderTarget::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
appendRenderAttachment(propertyChange->value().value<QNodeId>());
else if (e->type() == NodeRemoved && propertyChange->propertyName() == QByteArrayLiteral("attachment"))
removeRenderAttachment(propertyChange->value().value<QNodeId>());
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
} // namespace Render
diff --git a/src/render/backend/renderview.cpp b/src/render/backend/renderview.cpp
index a2b0d7eca..a44cee13d 100644
--- a/src/render/backend/renderview.cpp
+++ b/src/render/backend/renderview.cpp
@@ -67,7 +67,6 @@
#include <Qt3DRender/private/geometryrenderermanager_p.h>
#include <Qt3DRender/private/stringtoint_p.h>
-#include <Qt3DRender/qparametermapping.h>
#include <Qt3DCore/qentity.h>
#include <QtGui/qsurface.h>
#include <algorithm>
@@ -133,7 +132,7 @@ bool isEntityFrustumCulled(const Entity *entity, const Plane *planes)
bool wasInitialized = false;
RenderView::StandardUniformsPFuncsHash RenderView::ms_standardUniformSetters;
-QStringList RenderView::ms_standardAttributesNames = RenderView::initializeStandardAttributeNames();
+QStringList RenderView::m_standardAttributesNames = RenderView::initializeStandardAttributeNames();
@@ -817,7 +816,7 @@ void RenderView::setShaderAndUniforms(RenderCommand *command, RenderPass *rPass,
const QVector<int> uniformNamesIds = shader->uniformsNamesIds();
const QVector<int> uniformBlockNamesIds = shader->uniformBlockNamesIds();
const QVector<int> shaderStorageBlockNamesIds = shader->storageBlockNamesIds();
- const QVector<QString> attributeNames = shader->attributesNames();
+ const QVector<int> attributeNamesIds = shader->attributeNamesIds();
// Set fragData Name and index
// Later on we might want to relink the shader if attachments have changed
@@ -830,7 +829,8 @@ void RenderView::setShaderAndUniforms(RenderCommand *command, RenderPass *rPass,
}
}
- if (!uniformNamesIds.isEmpty() || !attributeNames.isEmpty() || !shaderStorageBlockNamesIds.isEmpty()) {
+ if (!uniformNamesIds.isEmpty() || !attributeNamesIds.isEmpty() ||
+ !shaderStorageBlockNamesIds.isEmpty() || !attributeNamesIds.isEmpty()) {
// Set default standard uniforms without bindings
Q_FOREACH (const int uniformNameId, uniformNamesIds) {
@@ -839,56 +839,8 @@ void RenderView::setShaderAndUniforms(RenderCommand *command, RenderPass *rPass,
}
// Set default attributes
- Q_FOREACH (const QString &attributeName, attributeNames) {
- if (ms_standardAttributesNames.contains(attributeName))
- command->m_parameterAttributeToShaderNames.insert(attributeName, attributeName);
- }
-
- // Set uniforms and attributes explicitly binded
- Q_FOREACH (const ParameterMapping &binding, rPass->bindings()) {
- const ParameterInfoList::const_iterator it = findParamInfo(&parameters, binding.parameterNameId());
-
- if (it == parameters.end()) {
- // A Parameters wasn't found with the name binding.parameterName
- // -> we need to use the binding.shaderVariableName
- switch (binding.bindingType()) {
-
- case QParameterMapping::Attribute:
- if (attributeNames.contains(binding.shaderVariableName())) {
- command->m_parameterAttributeToShaderNames.insert(binding.parameterName(), binding.shaderVariableName());
- break;
- }
- case QParameterMapping::StandardUniform:
- if (uniformNamesIds.contains(binding.shaderVariableNameId())
- && ms_standardUniformSetters.contains(binding.parameterNameId())) {
- setStandardUniformValue(command->m_parameterPack, binding.shaderVariableNameId(), binding.parameterNameId(), worldTransform);
- break;
- }
-
- case QParameterMapping::FragmentOutput:
- if (fragOutputs.contains(binding.parameterName())) {
- fragOutputs.insert(binding.shaderVariableName(), fragOutputs.take(binding.parameterName()));
- break;
- }
-
- case QParameterMapping::UniformBufferObject:
- if (uniformBlockNamesIds.contains(binding.parameterNameId())) {
- setUniformBlockValue(command->m_parameterPack, shader, shader->uniformBlockForBlockNameId(it->nameId), it->value);
- break;
- }
-
- case QParameterMapping::ShaderStorageBufferObject:
- if (shaderStorageBlockNamesIds.contains(binding.parameterNameId())) {
- setShaderStorageValue(command->m_parameterPack, shader, shader->storageBlockForBlockNameId(it->nameId), it->value);
- break;
- }
-
- default:
- qCWarning(Render::Backend) << Q_FUNC_INFO << "Trying to bind a Parameter that hasn't been defined " << binding.parameterName();
- break;
- }
- }
- }
+ Q_FOREACH (const int attributeNameId, attributeNamesIds)
+ command->m_attributes.push_back(attributeNameId);
// Parameters remaining could be
// -> uniform scalar / vector
@@ -896,30 +848,27 @@ void RenderView::setShaderAndUniforms(RenderCommand *command, RenderPass *rPass,
// -> uniform block / array (4.3)
// -> ssbo block / array (4.3)
- if ((!uniformNamesIds.isEmpty() || !uniformBlockNamesIds.isEmpty() || !shaderStorageBlockNamesIds.isEmpty())
- && !parameters.isEmpty()) {
- ParameterInfoList::const_iterator it = parameters.cbegin();
- const ParameterInfoList::const_iterator parametersEnd = parameters.cend();
-
- while (it != parametersEnd) {
- if (uniformNamesIds.contains(it->nameId)) { // Parameter is a regular uniform
- setUniformValue(command->m_parameterPack, it->nameId, it->value);
- } else if (uniformBlockNamesIds.indexOf(it->nameId) != -1) { // Parameter is a uniform block
- setUniformBlockValue(command->m_parameterPack, shader, shader->uniformBlockForBlockNameId(it->nameId), it->value);
- } else if (shaderStorageBlockNamesIds.indexOf(it->nameId) != -1) { // Parameters is a SSBO
- setShaderStorageValue(command->m_parameterPack, shader, shader->storageBlockForBlockNameId(it->nameId), it->value);
- } else { // Parameter is a struct
- const QVariant &v = it->value;
- ShaderData *shaderData = Q_NULLPTR;
- if (static_cast<QMetaType::Type>(v.userType()) == qNodeIdTypeId &&
- (shaderData = m_manager->shaderDataManager()->lookupResource(variant_value<Qt3DCore::QNodeId>(v))) != Q_NULLPTR) {
- // Try to check if we have a struct or array matching a QShaderData parameter
- setDefaultUniformBlockShaderDataValue(command->m_parameterPack, shader, shaderData, StringToInt::lookupString(it->nameId));
- }
- // Otherwise: param unused by current shader
+ ParameterInfoList::const_iterator it = parameters.cbegin();
+ const ParameterInfoList::const_iterator parametersEnd = parameters.cend();
+
+ while (it != parametersEnd) {
+ if (uniformNamesIds.contains(it->nameId)) { // Parameter is a regular uniform
+ setUniformValue(command->m_parameterPack, it->nameId, it->value);
+ } else if (uniformBlockNamesIds.indexOf(it->nameId) != -1) { // Parameter is a uniform block
+ setUniformBlockValue(command->m_parameterPack, shader, shader->uniformBlockForBlockNameId(it->nameId), it->value);
+ } else if (shaderStorageBlockNamesIds.indexOf(it->nameId) != -1) { // Parameters is a SSBO
+ setShaderStorageValue(command->m_parameterPack, shader, shader->storageBlockForBlockNameId(it->nameId), it->value);
+ } else { // Parameter is a struct
+ const QVariant &v = it->value;
+ ShaderData *shaderData = Q_NULLPTR;
+ if (static_cast<QMetaType::Type>(v.userType()) == qNodeIdTypeId &&
+ (shaderData = m_manager->shaderDataManager()->lookupResource(variant_value<Qt3DCore::QNodeId>(v))) != Q_NULLPTR) {
+ // Try to check if we have a struct or array matching a QShaderData parameter
+ setDefaultUniformBlockShaderDataValue(command->m_parameterPack, shader, shaderData, StringToInt::lookupString(it->nameId));
}
- ++it;
+ // Otherwise: param unused by current shader
}
+ ++it;
}
// Lights
diff --git a/src/render/backend/renderview_p.h b/src/render/backend/renderview_p.h
index c03ee3707..32ba72d4b 100644
--- a/src/render/backend/renderview_p.h
+++ b/src/render/backend/renderview_p.h
@@ -306,7 +306,7 @@ private:
typedef QHash<int, QUniformValue (RenderView::*)(const QMatrix4x4& model) const> StandardUniformsPFuncsHash;
static StandardUniformsPFuncsHash ms_standardUniformSetters;
static StandardUniformsPFuncsHash initializeStandardUniformSetters();
- static QStringList ms_standardAttributesNames;
+ static QStringList m_standardAttributesNames;
static QStringList initializeStandardAttributeNames();
QUniformValue modelMatrix(const QMatrix4x4& model) const;
diff --git a/src/render/backend/shadervariables_p.h b/src/render/backend/shadervariables_p.h
index 9fd7efa02..09088df26 100644
--- a/src/render/backend/shadervariables_p.h
+++ b/src/render/backend/shadervariables_p.h
@@ -62,7 +62,15 @@ namespace Render {
struct ShaderAttribute
{
+ ShaderAttribute()
+ : m_nameId(-1)
+ , m_type(0)
+ , m_size(0)
+ , m_location(-1)
+ {}
+
QString m_name;
+ int m_nameId;
GLenum m_type;
int m_size;
int m_location;
@@ -71,7 +79,8 @@ struct ShaderAttribute
struct ShaderUniform
{
ShaderUniform()
- : m_size(0)
+ : m_nameId(-1)
+ , m_size(0)
, m_offset(-1)
, m_location(-1)
, m_blockIndex(-1)
@@ -93,7 +102,8 @@ struct ShaderUniform
struct ShaderUniformBlock
{
ShaderUniformBlock()
- : m_index(-1)
+ : m_nameId(-1)
+ , m_index(-1)
, m_binding(-1)
, m_activeUniformsCount(0)
, m_size(0)
diff --git a/src/render/backend/transform.cpp b/src/render/backend/transform.cpp
index 96fe7e991..42514493e 100644
--- a/src/render/backend/transform.cpp
+++ b/src/render/backend/transform.cpp
@@ -93,7 +93,7 @@ void Transform::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
}
}
- markDirty(BackendNodeDirtyFlag::Transform);
+ markDirty(AbstractRenderer::TransformDirty);
}
void Transform::updateMatrix()
diff --git a/src/render/framegraph/cameraselectornode.cpp b/src/render/framegraph/cameraselectornode.cpp
index c2327cdc6..e686eb140 100644
--- a/src/render/framegraph/cameraselectornode.cpp
+++ b/src/render/framegraph/cameraselectornode.cpp
@@ -75,7 +75,7 @@ void CameraSelector::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
m_cameraUuid = propertyChange->value().value<QNodeId>();
else if (propertyChange->propertyName() == QByteArrayLiteral("enabled"))
setEnabled(propertyChange->value().toBool());
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/framegraph/clearbuffer.cpp b/src/render/framegraph/clearbuffer.cpp
index 2f9e4b30b..d74a2d383 100644
--- a/src/render/framegraph/clearbuffer.cpp
+++ b/src/render/framegraph/clearbuffer.cpp
@@ -68,7 +68,7 @@ void ClearBuffer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
m_type = static_cast<QClearBuffer::BufferType>(propertyChange->value().toInt());
else if (propertyChange->propertyName() == QByteArrayLiteral("enabled"))
setEnabled(propertyChange->value().toBool());
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/framegraph/dispatchcompute.cpp b/src/render/framegraph/dispatchcompute.cpp
index f5ec2bcbc..2e85b876b 100644
--- a/src/render/framegraph/dispatchcompute.cpp
+++ b/src/render/framegraph/dispatchcompute.cpp
@@ -85,7 +85,7 @@ void DispatchCompute::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
m_workGroups[2] = propertyChange->value().toInt();
else if (propertyChange->propertyName() == QByteArrayLiteral("enabled"))
setEnabled(propertyChange->value().toBool());
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/framegraph/frustumculling.cpp b/src/render/framegraph/frustumculling.cpp
index 9037f81d2..07c11ffe8 100644
--- a/src/render/framegraph/frustumculling.cpp
+++ b/src/render/framegraph/frustumculling.cpp
@@ -75,7 +75,7 @@ void FrustumCulling::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
break;
}
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
} // namespace Render
diff --git a/src/render/framegraph/layerfilternode.cpp b/src/render/framegraph/layerfilternode.cpp
index 8f7fe3d75..50ea07f19 100644
--- a/src/render/framegraph/layerfilternode.cpp
+++ b/src/render/framegraph/layerfilternode.cpp
@@ -69,7 +69,7 @@ void LayerFilterNode::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
setLayers(propertyChange->value().value<QStringList>());
else if (propertyChange->propertyName() == QByteArrayLiteral("enabled"))
setEnabled(propertyChange->value().toBool());
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/framegraph/lighting.cpp b/src/render/framegraph/lighting.cpp
index d4823212d..d18614b21 100644
--- a/src/render/framegraph/lighting.cpp
+++ b/src/render/framegraph/lighting.cpp
@@ -71,7 +71,7 @@ void Lighting::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
} // namespace Render
diff --git a/src/render/framegraph/nodraw.cpp b/src/render/framegraph/nodraw.cpp
index d7bd33637..56bd43fbb 100644
--- a/src/render/framegraph/nodraw.cpp
+++ b/src/render/framegraph/nodraw.cpp
@@ -71,7 +71,7 @@ void NoDraw::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
case NodeUpdated: {
if (propertyChange->propertyName() == QByteArrayLiteral("enabled"))
setEnabled(propertyChange->value().toBool());
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
break;
default:
diff --git a/src/render/framegraph/renderpassfilternode.cpp b/src/render/framegraph/renderpassfilternode.cpp
index d1a3fab80..eede0e7d7 100644
--- a/src/render/framegraph/renderpassfilternode.cpp
+++ b/src/render/framegraph/renderpassfilternode.cpp
@@ -116,7 +116,7 @@ void RenderPassFilter::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
} // namespace Render
diff --git a/src/render/framegraph/rendersurfaceselector.cpp b/src/render/framegraph/rendersurfaceselector.cpp
index ceee513d8..785054119 100644
--- a/src/render/framegraph/rendersurfaceselector.cpp
+++ b/src/render/framegraph/rendersurfaceselector.cpp
@@ -74,7 +74,7 @@ void RenderSurfaceSelector::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
m_surface = propertyChange->value().value<QSurface *>();
else if (propertyChange->propertyName() == QByteArrayLiteral("enabled"))
setEnabled(propertyChange->value().toBool());
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/framegraph/rendertargetselectornode.cpp b/src/render/framegraph/rendertargetselectornode.cpp
index d5df14df5..9ff8edf03 100644
--- a/src/render/framegraph/rendertargetselectornode.cpp
+++ b/src/render/framegraph/rendertargetselectornode.cpp
@@ -79,7 +79,7 @@ void RenderTargetSelector::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
setEnabled(propertyChange->value().toBool());
else if (propertyChange->propertyName() == QByteArrayLiteral("drawBuffers"))
m_drawBuffers = propertyChange->value().value<QList<Qt3DRender::QRenderAttachment::RenderAttachmentType> >();
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/framegraph/sortcriterion.cpp b/src/render/framegraph/sortcriterion.cpp
index 9b31e71cc..8fe31bbf1 100644
--- a/src/render/framegraph/sortcriterion.cpp
+++ b/src/render/framegraph/sortcriterion.cpp
@@ -75,7 +75,7 @@ void SortCriterion::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
if (e->type() == NodeUpdated && propertyChange->propertyName() == QByteArrayLiteral("sort")) {
m_type = static_cast<QSortCriterion::SortType>(propertyChange->value().toInt());
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
} // namespace Render
diff --git a/src/render/framegraph/sortmethod.cpp b/src/render/framegraph/sortmethod.cpp
index 7ee462e6f..7209b2e93 100644
--- a/src/render/framegraph/sortmethod.cpp
+++ b/src/render/framegraph/sortmethod.cpp
@@ -76,7 +76,7 @@ void SortMethod::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
} else if (propertyChange->propertyName() == QByteArrayLiteral("enabled") && e->type() == NodeUpdated) {
setEnabled(propertyChange->value().toBool());
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
QList<QNodeId> SortMethod::criteria() const
diff --git a/src/render/framegraph/statesetnode.cpp b/src/render/framegraph/statesetnode.cpp
index b1c713b51..90baf5773 100644
--- a/src/render/framegraph/statesetnode.cpp
+++ b/src/render/framegraph/statesetnode.cpp
@@ -90,7 +90,7 @@ void StateSetNode::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
} // namespace Render
diff --git a/src/render/framegraph/techniquefilternode.cpp b/src/render/framegraph/techniquefilternode.cpp
index bd567d4ac..4acbde6fc 100644
--- a/src/render/framegraph/techniquefilternode.cpp
+++ b/src/render/framegraph/techniquefilternode.cpp
@@ -117,7 +117,7 @@ void TechniqueFilter::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
} // namespace Render
diff --git a/src/render/framegraph/viewportnode.cpp b/src/render/framegraph/viewportnode.cpp
index 9fa1684b0..e08bcceaa 100644
--- a/src/render/framegraph/viewportnode.cpp
+++ b/src/render/framegraph/viewportnode.cpp
@@ -126,7 +126,7 @@ void ViewportNode::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
} else if (propertyChange->propertyName() == QByteArrayLiteral("enabled")) {
setEnabled(propertyChange->value().toBool());
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp
index 464ac56ed..9679dd785 100644
--- a/src/render/frontend/qrenderaspect.cpp
+++ b/src/render/frontend/qrenderaspect.cpp
@@ -54,7 +54,6 @@
#include <Qt3DRender/qmaterial.h>
#include <Qt3DRender/qmesh.h>
#include <Qt3DRender/qparameter.h>
-#include <Qt3DRender/qparametermapping.h>
#include <Qt3DRender/qrenderpassfilter.h>
#include <Qt3DRender/qrendertargetselector.h>
#include <Qt3DRender/qtechniquefilter.h>
diff --git a/src/render/geometry/attribute.cpp b/src/render/geometry/attribute.cpp
index 9cf995b0d..c49757d22 100644
--- a/src/render/geometry/attribute.cpp
+++ b/src/render/geometry/attribute.cpp
@@ -40,6 +40,7 @@
#include "attribute_p.h"
#include <Qt3DCore/qscenepropertychange.h>
#include <Qt3DRender/qbuffer.h>
+#include <Qt3DRender/private/stringtoint_p.h>
QT_BEGIN_NAMESPACE
@@ -50,6 +51,7 @@ namespace Render {
Attribute::Attribute()
: BackendNode(ReadOnly)
+ , m_nameId(0)
, m_dataType(QAttribute::Float)
, m_dataSize(1)
, m_count(0)
@@ -77,6 +79,7 @@ void Attribute::cleanup()
m_bufferId = Qt3DCore::QNodeId();
m_name.clear();
m_attributeDirty = false;
+ m_nameId = 0;
}
void Attribute::updateFromPeer(Qt3DCore::QNode *peer)
@@ -91,6 +94,7 @@ void Attribute::updateFromPeer(Qt3DCore::QNode *peer)
m_divisor = attribute->divisor();
m_attributeType = attribute->attributeType();
m_name = attribute->name();
+ m_nameId = StringToInt::lookupId(m_name);
if (attribute->buffer())
m_bufferId = attribute->buffer()->id();
m_attributeDirty = true;
@@ -107,6 +111,7 @@ void Attribute::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
case NodeUpdated: {
if (propertyName == QByteArrayLiteral("name")) {
m_name = propertyChange->value().value<QString>();
+ m_nameId = StringToInt::lookupId(m_name);
m_attributeDirty = true;
} else if (propertyName == QByteArrayLiteral("dataType")) {
m_dataType = static_cast<QAttribute::DataType>(propertyChange->value().value<int>());
@@ -133,7 +138,7 @@ void Attribute::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
m_bufferId = propertyChange->value().value<QNodeId>();
m_attributeDirty = true;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
break;
}
diff --git a/src/render/geometry/attribute_p.h b/src/render/geometry/attribute_p.h
index dcf321be8..10fda4542 100644
--- a/src/render/geometry/attribute_p.h
+++ b/src/render/geometry/attribute_p.h
@@ -73,6 +73,7 @@ public:
inline Qt3DCore::QNodeId bufferId() const { return m_bufferId; }
inline QString name() const { return m_name; }
+ inline int nameId() const { return m_nameId; }
inline QAttribute::DataType dataType() const { return m_dataType; }
inline uint dataSize() const { return m_dataSize; }
inline uint count() const { return m_count; }
@@ -86,6 +87,7 @@ public:
private:
Qt3DCore::QNodeId m_bufferId;
QString m_name;
+ int m_nameId;
QAttribute::DataType m_dataType;
uint m_dataSize;
uint m_count;
diff --git a/src/render/geometry/buffer.cpp b/src/render/geometry/buffer.cpp
index 92217ff1e..f5f0050bb 100644
--- a/src/render/geometry/buffer.cpp
+++ b/src/render/geometry/buffer.cpp
@@ -135,7 +135,7 @@ void Buffer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
} else if (propertyName == QByteArrayLiteral("sync")) {
m_sync = propertyChange->value().toBool();
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/geometry/geometry.cpp b/src/render/geometry/geometry.cpp
index 447313771..32d4e6aef 100644
--- a/src/render/geometry/geometry.cpp
+++ b/src/render/geometry/geometry.cpp
@@ -120,7 +120,7 @@ void Geometry::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
void Geometry::unsetDirty()
diff --git a/src/render/geometry/geometryrenderer.cpp b/src/render/geometry/geometryrenderer.cpp
index ff2fa149c..5edc4ea79 100644
--- a/src/render/geometry/geometryrenderer.cpp
+++ b/src/render/geometry/geometryrenderer.cpp
@@ -174,7 +174,7 @@ void GeometryRenderer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
// Add to dirty list in manager
}
diff --git a/src/render/io/scene.cpp b/src/render/io/scene.cpp
index d4f9bb010..333698500 100644
--- a/src/render/io/scene.cpp
+++ b/src/render/io/scene.cpp
@@ -74,7 +74,7 @@ void Scene::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
m_source = propertyChange->value().toUrl();
m_sceneManager->addSceneData(m_source, peerUuid());
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
QUrl Scene::source() const
diff --git a/src/render/materialsystem/annotation.cpp b/src/render/materialsystem/annotation.cpp
index b0ceeaf5c..60796e94d 100644
--- a/src/render/materialsystem/annotation.cpp
+++ b/src/render/materialsystem/annotation.cpp
@@ -87,7 +87,7 @@ void Annotation::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
else if (propertyChange->propertyName() == QByteArrayLiteral("name"))
m_name = propertyChange->value().toString();
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
bool Annotation::operator ==(const Annotation &other)
diff --git a/src/render/materialsystem/effect.cpp b/src/render/materialsystem/effect.cpp
index b31cd9485..2e3ad3e02 100644
--- a/src/render/materialsystem/effect.cpp
+++ b/src/render/materialsystem/effect.cpp
@@ -105,7 +105,7 @@ void Effect::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
void Effect::appendRenderTechnique(Qt3DCore::QNodeId technique)
diff --git a/src/render/materialsystem/material.cpp b/src/render/materialsystem/material.cpp
index b93422015..ca111e012 100644
--- a/src/render/materialsystem/material.cpp
+++ b/src/render/materialsystem/material.cpp
@@ -113,7 +113,7 @@ void Material::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
QList<Qt3DCore::QNodeId> Material::parameters() const
diff --git a/src/render/materialsystem/materialsystem.pri b/src/render/materialsystem/materialsystem.pri
index 53f7e94f7..06b2caaae 100644
--- a/src/render/materialsystem/materialsystem.pri
+++ b/src/render/materialsystem/materialsystem.pri
@@ -5,7 +5,6 @@ HEADERS += \
$$PWD/effect_p.h \
$$PWD/material_p.h \
$$PWD/parameter_p.h \
- $$PWD/parametermapping_p.h \
$$PWD/qannotation.h \
$$PWD/qannotation_p.h \
$$PWD/qeffect.h \
@@ -14,8 +13,6 @@ HEADERS += \
$$PWD/qmaterial_p.h \
$$PWD/qparameter.h \
$$PWD/qparameter_p.h \
- $$PWD/qparametermapping.h \
- $$PWD/qparametermapping_p.h \
$$PWD/qrenderpass_p.h \
$$PWD/qrenderpass.h \
$$PWD/qshaderdata.h \
@@ -35,12 +32,10 @@ SOURCES += \
$$PWD/effect.cpp \
$$PWD/material.cpp \
$$PWD/parameter.cpp \
- $$PWD/parametermapping.cpp \
$$PWD/qannotation.cpp \
$$PWD/qeffect.cpp \
$$PWD/qmaterial.cpp \
$$PWD/qparameter.cpp \
- $$PWD/qparametermapping.cpp \
$$PWD/qrenderpass.cpp \
$$PWD/qshaderdata.cpp \
$$PWD/qshaderprogram.cpp \
diff --git a/src/render/materialsystem/parameter.cpp b/src/render/materialsystem/parameter.cpp
index 58e5bb6bd..d0739bd20 100644
--- a/src/render/materialsystem/parameter.cpp
+++ b/src/render/materialsystem/parameter.cpp
@@ -81,7 +81,7 @@ void Parameter::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
} else if (propertyChange->propertyName() == QByteArrayLiteral("value")) {
m_value = propertyChange->value();
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/materialsystem/parametermapping.cpp b/src/render/materialsystem/parametermapping.cpp
deleted file mode 100644
index 574025030..000000000
--- a/src/render/materialsystem/parametermapping.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "parametermapping_p.h"
-#include <Qt3DRender/private/stringtoint_p.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DRender {
-namespace Render {
-
-ParameterMapping::ParameterMapping()
- : m_bindingType(QParameterMapping::Uniform)
- , m_parameterNameId(-1)
- , m_shaderVariableNameId(-1)
-{
-}
-
-ParameterMapping::ParameterMapping(QParameterMapping *mapping)
- : m_id(mapping ? mapping->id() : Qt3DCore::QNodeId())
- , m_parameterName(mapping ? mapping->parameterName() : QString())
- , m_shaderVariableName(mapping ? mapping->shaderVariableName() : QString())
- , m_parameterNameId(StringToInt::lookupId(m_parameterName))
- , m_shaderVariableNameId(StringToInt::lookupId(m_shaderVariableName))
- , m_bindingType(mapping ? mapping->bindingType() : QParameterMapping::Uniform)
-{
-}
-
-bool ParameterMapping::isValid() const
-{
- return !m_id.isNull();
-}
-
-Qt3DCore::QNodeId ParameterMapping::id() const
-{
- return m_id;
-}
-
-QString ParameterMapping::parameterName() const
-{
- return m_parameterName;
-}
-
-QString ParameterMapping::shaderVariableName() const
-{
- return m_shaderVariableName;
-}
-
-int ParameterMapping::parameterNameId() const
-{
- return m_parameterNameId;
-}
-
-int ParameterMapping::shaderVariableNameId() const
-{
- return m_shaderVariableNameId;
-}
-
-QParameterMapping::Binding ParameterMapping::bindingType() const
-{
- return m_bindingType;
-}
-
-} // namespace Render
-} // namespace Qt3DRender
-
-QT_END_NAMESPACE
diff --git a/src/render/materialsystem/parametermapping_p.h b/src/render/materialsystem/parametermapping_p.h
deleted file mode 100644
index 975fed18e..000000000
--- a/src/render/materialsystem/parametermapping_p.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3DRENDER_RENDER_PARAMETERMAPPING_P_H
-#define QT3DRENDER_RENDER_PARAMETERMAPPING_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of other Qt classes. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <Qt3DRender/qparametermapping.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DRender {
-
-namespace Render {
-
-class Q_AUTOTEST_EXPORT ParameterMapping
-{
-public:
- ParameterMapping();
- ParameterMapping(QParameterMapping *mapping);
-
- bool isValid() const;
-
- Qt3DCore::QNodeId id() const;
- QString parameterName() const;
- QString shaderVariableName() const;
- int parameterNameId() const;
- int shaderVariableNameId() const;
- QParameterMapping::Binding bindingType() const;
-
-private:
- Qt3DCore::QNodeId m_id;
- QString m_parameterName;
- QString m_shaderVariableName;
- int m_parameterNameId;
- int m_shaderVariableNameId;
- QParameterMapping::Binding m_bindingType;
-};
-
-} // namespace Render
-
-} // namespace Qt3DRender
-
-QT_END_NAMESPACE
-
-#endif // QT3DRENDER_RENDER_PARAMETERMAPPING_P_H
diff --git a/src/render/materialsystem/qparametermapping.cpp b/src/render/materialsystem/qparametermapping.cpp
deleted file mode 100644
index eeaa8a621..000000000
--- a/src/render/materialsystem/qparametermapping.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qparametermapping.h"
-#include <private/qparametermapping_p.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DRender {
-
-QParameterMappingPrivate::QParameterMappingPrivate()
- : QNodePrivate()
- , m_bindingType(QParameterMapping::Uniform)
-{
-}
-/*!
- \class Qt3DRender::QParameterMapping
- \inmodule Qt3DRender
- \since 5.5
- \brief The QParameterMapping class provides ...
-*/
-
-/*!
- \qmltype ParameterMapping
- \instantiates Qt3DRender::QParameterMapping
- \inherits Node
- \inqmlmodule Qt3D.Render
- \since 5.5
- \brief For ...
-*/
-
-/*! \fn void Qt3DRender::QParameterMapping::copy(const Qt3DCore::QNode *ref)
- Copies the \a ref instance into this one.
- */
-void QParameterMapping::copy(const QNode *ref)
-{
- QNode::copy(ref);
- const QParameterMapping *mapper = static_cast<const QParameterMapping*>(ref);
- d_func()->m_parameterName = mapper->d_func()->m_parameterName;
- d_func()->m_shaderVariableName = mapper->d_func()->m_shaderVariableName;
- d_func()->m_bindingType = mapper->d_func()->m_bindingType;
-}
-
-/*! \fn Qt3DRender::QParameterMapping::QParameterMapping(Qt3DCore::QNode *parent)
- Constructs a new QParameterMapping with the specified \a parent.
- */
-QParameterMapping::QParameterMapping(QNode *parent)
- : QNode(*new QParameterMappingPrivate, parent)
-{
-}
-
-/*!
- \enum Qt3DRender::QParameterMapping::Binding
-
- \value Uniform
- \value Attribute
- \value StandardUniform
- \value FragmentOutput
- \value UniformBufferObject
- \value ShaderStorageBufferObject
-*/
-
-/*! \internal */
-QParameterMapping::QParameterMapping(QParameterMappingPrivate &dd, QNode *parent)
- : QNode(dd, parent)
-{
-}
-
-/*!
- This constructor takes a \a parameterName, a \a shaderParameterName,
- a \a bindingType, and a \a parent.
- */
-QParameterMapping::QParameterMapping(const QString &parameterName, const QString &shaderParameterName, QParameterMapping::Binding bindingType, QNode *parent)
- : QNode(*new QParameterMappingPrivate, parent)
-{
- Q_D(QParameterMapping);
- d->m_parameterName = parameterName;
- d->m_shaderVariableName = shaderParameterName;
- d->m_bindingType = bindingType;
-}
-
-QParameterMapping::~QParameterMapping()
-{
- QNode::cleanup();
-}
-
-/*!
- \property Qt3DRender::QParameterMapping::parameterName
-
-*/
-
-/*!
- \qmlproperty string Qt3D.Render::ParameterMapping::parameterName
-
-*/
-
-void QParameterMapping::setParameterName(const QString &name)
-{
- Q_D(QParameterMapping);
- if (d->m_parameterName != name) {
- d->m_parameterName = name;
- emit parameterNameChanged(name);
- }
-}
-
-/*!
- \property Qt3DRender::QParameterMapping::shaderVariableName
-
-*/
-
-/*!
- \qmlproperty string Qt3D.Render::ParameterMapping::shaderVariableName
-
-*/
-
-void QParameterMapping::setShaderVariableName(const QString &name)
-{
- Q_D(QParameterMapping);
- if (d->m_shaderVariableName != name) {
- d->m_shaderVariableName = name;
- emit shaderVariableNameChanged(name);
- }
-}
-
-/*!
- \property Qt3DRender::QParameterMapping::bindingType
-
-*/
-
-/*!
- \qmlproperty BindingType Qt3D.Render::ParameterMapping::bindingType
-
- \value Uniform
- \value Attribute
- \value StandardUniform
- \value FragmentOutput
-*/
-void QParameterMapping::setBindingType(QParameterMapping::Binding type)
-{
- Q_D(QParameterMapping);
- if (d->m_bindingType != type) {
- d->m_bindingType = type;
- emit bindingTypeChanged(type);
- }
-}
-
-QString QParameterMapping::parameterName() const
-{
- Q_D(const QParameterMapping);
- return d->m_parameterName;
-}
-
-QString QParameterMapping::shaderVariableName() const
-{
- Q_D(const QParameterMapping);
- return d->m_shaderVariableName;
-}
-
-QParameterMapping::Binding QParameterMapping::bindingType() const
-{
- Q_D(const QParameterMapping);
- return d->m_bindingType;
-}
-
-} // namespace Qt3DRender
-
-QT_END_NAMESPACE
diff --git a/src/render/materialsystem/qparametermapping.h b/src/render/materialsystem/qparametermapping.h
deleted file mode 100644
index 3b17a4191..000000000
--- a/src/render/materialsystem/qparametermapping.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3DRENDER_QPARAMETERMAPPING_H
-#define QT3DRENDER_QPARAMETERMAPPING_H
-
-#include <Qt3DCore/qnode.h>
-#include <Qt3DRender/qt3drender_global.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DRender {
-
-class QParameterMappingPrivate;
-
-class QT3DRENDERSHARED_EXPORT QParameterMapping : public Qt3DCore::QNode
-{
- Q_OBJECT
- Q_PROPERTY(QString parameterName READ parameterName WRITE setParameterName NOTIFY parameterNameChanged)
- Q_PROPERTY(QString shaderVariableName READ shaderVariableName WRITE setShaderVariableName NOTIFY shaderVariableNameChanged)
- Q_PROPERTY(Binding bindingType READ bindingType WRITE setBindingType NOTIFY bindingTypeChanged)
-public:
- enum Binding
- {
- Uniform = 0,
- Attribute,
- StandardUniform,
- FragmentOutput,
- UniformBufferObject,
- ShaderStorageBufferObject
- };
- Q_ENUM(Binding)
-
- explicit QParameterMapping(Qt3DCore::QNode *parent = 0);
- QParameterMapping(const QString &parameterName, const QString &shaderParameterName, QParameterMapping::Binding bindingType, Qt3DCore::QNode *parent = 0);
- ~QParameterMapping();
-
- QString parameterName() const;
- QString shaderVariableName() const;
- Binding bindingType() const;
-
-public Q_SLOTS:
- void setParameterName(const QString &name);
- void setShaderVariableName(const QString &name);
- void setBindingType(Binding type);
-
-Q_SIGNALS:
- void parameterNameChanged(const QString &parameterName);
- void shaderVariableNameChanged(const QString &shaderVariableName);
- void bindingTypeChanged(Binding bindingType);
-
-protected:
- QParameterMapping(QParameterMappingPrivate &dd, Qt3DCore::QNode *parent = 0);
- void copy(const Qt3DCore::QNode *ref) Q_DECL_OVERRIDE;
-
-private:
- Q_DECLARE_PRIVATE(QParameterMapping)
- QT3D_CLONEABLE(QParameterMapping)
-};
-
-} // namespace Qt3DRender
-
-QT_END_NAMESPACE
-
-#endif // QT3DRENDER_QPARAMETERBINDER_H
diff --git a/src/render/materialsystem/qparametermapping_p.h b/src/render/materialsystem/qparametermapping_p.h
deleted file mode 100644
index 2fee05639..000000000
--- a/src/render/materialsystem/qparametermapping_p.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3DRENDER_QPARAMETERMAPPING_P_H
-#define QT3DRENDER_QPARAMETERMAPPING_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of other Qt classes. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qnode_p.h>
-#include <Qt3DRender/QParameterMapping>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DRender {
-
-class QParameterMappingPrivate : public Qt3DCore::QNodePrivate
-{
-public:
- QParameterMappingPrivate();
-
- Q_DECLARE_PUBLIC(QParameterMapping)
-
- QString m_parameterName;
- QString m_shaderVariableName;
- QParameterMapping::Binding m_bindingType;
-};
-
-} // namespace Qt3DRender
-
-QT_END_NAMESPACE
-
-#endif // QT3DRENDER_QPARAMETERMAPPING_P_H
diff --git a/src/render/materialsystem/qrenderpass.cpp b/src/render/materialsystem/qrenderpass.cpp
index d62adffe2..5efbafb19 100644
--- a/src/render/materialsystem/qrenderpass.cpp
+++ b/src/render/materialsystem/qrenderpass.cpp
@@ -42,7 +42,6 @@
#include "qrenderpass_p.h"
#include "qparameter.h"
#include "qannotation.h"
-#include "qparametermapping.h"
#include "qscenepropertychange.h"
#include "qrenderstate.h"
#include "private/qnode_p.h"
@@ -67,10 +66,10 @@ void QRenderPass::copy(const QNode *ref)
Q_FOREACH (QAnnotation *crit, other->d_func()->m_annotationList)
addAnnotation(qobject_cast<QAnnotation *>(QNode::clone(crit)));
- Q_FOREACH (QParameterMapping *binding, other->d_func()->m_bindings)
- addBinding(qobject_cast<QParameterMapping *>(QNode::clone(binding)));
Q_FOREACH (QRenderState *renderState, other->d_func()->m_renderStates)
addRenderState(qobject_cast<QRenderState *>(QNode::clone(renderState)));
+ Q_FOREACH (QParameter *p, other->d_func()->m_parameters)
+ addParameter(qobject_cast<QParameter *>(QNode::clone(p)));
}
QRenderPass::QRenderPass(QNode *parent)
@@ -183,42 +182,6 @@ QList<QAnnotation *> QRenderPass::annotations() const
return d->m_annotationList;
}
-void QRenderPass::addBinding(QParameterMapping *binding)
-{
- Q_D(QRenderPass);
- if (!d->m_bindings.contains(binding)) {
- d->m_bindings.append(binding);
-
- if (!binding->parent())
- binding->setParent(this);
-
- if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
- change->setPropertyName("binding");
- change->setValue(QVariant::fromValue(QNode::clone(binding)));
- d->notifyObservers(change);
- }
- }
-}
-
-void QRenderPass::removeBinding(QParameterMapping *binding)
-{
- Q_D(QRenderPass);
- if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
- change->setPropertyName("binding");
- change->setValue(QVariant::fromValue(binding->id()));
- d->notifyObservers(change);
- }
- d->m_bindings.removeOne(binding);
-}
-
-QList<QParameterMapping *> QRenderPass::bindings() const
-{
- Q_D(const QRenderPass);
- return d->m_bindings;
-}
-
/*!
* Adds a Qt3DCore::QRenderState \a state to the rendering pass. That implies that
* when the pass is executed at render time, the globally set render state will
diff --git a/src/render/materialsystem/qrenderpass.h b/src/render/materialsystem/qrenderpass.h
index a6cffaa3a..9f6ea329c 100644
--- a/src/render/materialsystem/qrenderpass.h
+++ b/src/render/materialsystem/qrenderpass.h
@@ -81,10 +81,6 @@ public:
void removeAnnotation(QAnnotation *criterion);
QList<QAnnotation *> annotations() const;
- void addBinding(QParameterMapping *binding);
- void removeBinding(QParameterMapping *binding);
- QList<QParameterMapping *> bindings() const;
-
void addRenderState(QRenderState *state);
void removeRenderState(QRenderState *state);
QList<QRenderState *> renderStates() const;
diff --git a/src/render/materialsystem/renderpass.cpp b/src/render/materialsystem/renderpass.cpp
index ece7972db..ae3022a1c 100644
--- a/src/render/materialsystem/renderpass.cpp
+++ b/src/render/materialsystem/renderpass.cpp
@@ -40,7 +40,6 @@
#include "renderpass_p.h"
#include <Qt3DRender/private/annotation_p.h>
-#include <Qt3DRender/qparametermapping.h>
#include <Qt3DRender/qrenderstate.h>
#include <Qt3DRender/qrenderpass.h>
#include <Qt3DRender/qparameter.h>
@@ -80,8 +79,6 @@ void RenderPass::updateFromPeer(Qt3DCore::QNode *peer)
m_shaderUuid = pass->shaderProgram()->id();
// The RenderPass clones frontend bindings in case the frontend ever removes them
// TO DO: We probably need a QParameterMapper manager
- Q_FOREACH (QParameterMapping *binding, pass->bindings())
- appendBinding(ParameterMapping(binding));
Q_FOREACH (QAnnotation *c, pass->annotations())
appendAnnotation(c->id());
Q_FOREACH (QRenderState *renderState, pass->renderStates())
@@ -100,8 +97,6 @@ void RenderPass::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
appendAnnotation(propertyChange->value().value<QNodeId>());
} else if (propertyChange->propertyName() == QByteArrayLiteral("shaderProgram")) {
m_shaderUuid = propertyChange->value().value<QNodeId>();
- } else if (propertyChange->propertyName() == QByteArrayLiteral("binding")) {
- appendBinding(ParameterMapping(propertyChange->value().value<QParameterMapping *>()));
} else if (propertyChange->propertyName() == QByteArrayLiteral("renderState")) {
QNodePtr nodePtr = propertyChange->value().value<QNodePtr>();
appendRenderState(nodePtr->id());
@@ -116,8 +111,6 @@ void RenderPass::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
removeAnnotation(propertyChange->value().value<QNodeId>());
} else if (propertyChange->propertyName() == QByteArrayLiteral("shaderProgram")) {
m_shaderUuid = QNodeId();
- } else if (propertyChange->propertyName() == QByteArrayLiteral("binding")) {
- removeBinding(propertyChange->value().value<QNodeId>());
} else if (propertyChange->propertyName() == QByteArrayLiteral("renderState")) {
removeRenderState(propertyChange->value().value<QNodeId>());
} else if (propertyChange->propertyName() == QByteArrayLiteral("parameter")) {
@@ -129,7 +122,7 @@ void RenderPass::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
Qt3DCore::QNodeId RenderPass::shaderProgram() const
@@ -137,11 +130,6 @@ Qt3DCore::QNodeId RenderPass::shaderProgram() const
return m_shaderUuid;
}
-QList<ParameterMapping> RenderPass::bindings() const
-{
- return m_bindings.values();
-}
-
QList<Qt3DCore::QNodeId> RenderPass::annotations() const
{
return m_annotationList;
@@ -163,17 +151,6 @@ void RenderPass::removeAnnotation(Qt3DCore::QNodeId annotationId)
m_annotationList.removeOne(annotationId);
}
-void RenderPass::appendBinding(const ParameterMapping &binding)
-{
- if (!m_bindings.contains(binding.id()))
- m_bindings[binding.id()] = binding;
-}
-
-void RenderPass::removeBinding(Qt3DCore::QNodeId bindingId)
-{
- m_bindings.remove(bindingId);
-}
-
} // namespace Render
} // namespace Qt3DRender
diff --git a/src/render/materialsystem/renderpass_p.h b/src/render/materialsystem/renderpass_p.h
index 5b6ef6bf3..bdd3ab6a4 100644
--- a/src/render/materialsystem/renderpass_p.h
+++ b/src/render/materialsystem/renderpass_p.h
@@ -54,7 +54,6 @@
#include <Qt3DRender/private/backendnode_p.h>
#include <Qt3DRender/qt3drender_global.h>
-#include <Qt3DRender/private/parametermapping_p.h>
#include <Qt3DRender/private/parameterpack_p.h>
#include <Qt3DRender/private/renderstatecollection_p.h>
#include <Qt3DCore/private/qabstractaspect_p.h>
@@ -86,7 +85,6 @@ public:
void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE;
Qt3DCore::QNodeId shaderProgram() const;
- QList<ParameterMapping> bindings() const;
QList<Qt3DCore::QNodeId> annotations() const;
QList<Qt3DCore::QNodeId> parameters() const;
@@ -94,11 +92,7 @@ private:
void appendAnnotation(Qt3DCore::QNodeId criterionId);
void removeAnnotation(Qt3DCore::QNodeId criterionId);
- void appendBinding(const ParameterMapping &binding);
- void removeBinding(Qt3DCore::QNodeId bindingId);
-
Qt3DCore::QNodeId m_shaderUuid;
- QHash<Qt3DCore::QNodeId, ParameterMapping> m_bindings;
QList<Qt3DCore::QNodeId> m_annotationList;
ParameterPack m_parameterPack;
};
diff --git a/src/render/materialsystem/shader.cpp b/src/render/materialsystem/shader.cpp
index e4ffe59e4..6d2e1b96b 100644
--- a/src/render/materialsystem/shader.cpp
+++ b/src/render/materialsystem/shader.cpp
@@ -156,7 +156,7 @@ void Shader::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
}
if (!m_isLoaded)
updateDNA();
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
@@ -362,8 +362,12 @@ void Shader::initializeAttributes(const QVector<ShaderAttribute> &attributesDesc
{
m_attributes = attributesDescription;
m_attributesNames.resize(attributesDescription.size());
+ m_attributeNamesIds.resize(attributesDescription.size());
for (int i = 0, m = attributesDescription.size(); i < m; i++) {
m_attributesNames[i] = attributesDescription[i].m_name;
+ m_attributes[i].m_nameId = StringToInt::lookupId(m_attributesNames[i]);
+ m_attributeNamesIds[i] = m_attributes[i].m_nameId;
+ qDebug() << m_attributes[i].m_nameId << m_attributeNamesIds[i] << m_attributesNames[i];
qCDebug(Shaders) << "Active Attribute " << attributesDescription[i].m_name;
}
}
@@ -430,6 +434,7 @@ void Shader::initialize(const Shader &other)
m_uniformsNames = other.m_uniformsNames;
m_uniforms = other.m_uniforms;
m_attributesNames = other.m_attributesNames;
+ m_attributeNamesIds = other.m_attributeNamesIds;
m_attributes = other.m_attributes;
m_uniformBlockNamesIds = other.m_uniformBlockNamesIds;
m_uniformBlockNames = other.m_uniformBlockNames;
diff --git a/src/render/materialsystem/shader_p.h b/src/render/materialsystem/shader_p.h
index 614914bd7..175584e0c 100644
--- a/src/render/materialsystem/shader_p.h
+++ b/src/render/materialsystem/shader_p.h
@@ -87,6 +87,7 @@ public:
inline QVector<int> uniformsNamesIds() const Q_DECL_NOEXCEPT { return m_uniformsNamesIds; }
inline QVector<int> uniformBlockNamesIds() const Q_DECL_NOEXCEPT { return m_uniformBlockNamesIds; }
inline QVector<int> storageBlockNamesIds() const Q_DECL_NOEXCEPT { return m_shaderStorageBlockNamesIds; }
+ inline QVector<int> attributeNamesIds() const Q_DECL_NOEXCEPT { return m_attributeNamesIds; }
QVector<QString> uniformsNames() const;
QVector<QString> attributesNames() const;
@@ -124,6 +125,7 @@ private:
QVector<ShaderUniform> m_uniforms;
QVector<QString> m_attributesNames;
+ QVector<int> m_attributeNamesIds;
QVector<ShaderAttribute> m_attributes;
QVector<QString> m_uniformBlockNames;
diff --git a/src/render/materialsystem/shaderdata.cpp b/src/render/materialsystem/shaderdata.cpp
index 52ee7220b..5c6a50156 100644
--- a/src/render/materialsystem/shaderdata.cpp
+++ b/src/render/materialsystem/shaderdata.cpp
@@ -322,7 +322,7 @@ void ShaderData::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- BackendNode::markDirty(BackendNodeDirtyFlag::Any);
+ BackendNode::markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/materialsystem/technique.cpp b/src/render/materialsystem/technique.cpp
index 3526e134f..895175752 100644
--- a/src/render/materialsystem/technique.cpp
+++ b/src/render/materialsystem/technique.cpp
@@ -149,7 +149,7 @@ void Technique::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
default:
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
QList<Qt3DCore::QNodeId> Technique::parameters() const
diff --git a/src/render/picking/objectpicker.cpp b/src/render/picking/objectpicker.cpp
index 172f1733e..15ce64e15 100644
--- a/src/render/picking/objectpicker.cpp
+++ b/src/render/picking/objectpicker.cpp
@@ -95,7 +95,7 @@ void ObjectPicker::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
m_mouseTrackingEnabled = propertyChange->value().toBool();
m_isDirty = true;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/renderstates/renderstates.cpp b/src/render/renderstates/renderstates.cpp
index 3cce233b8..2f5f95753 100644
--- a/src/render/renderstates/renderstates.cpp
+++ b/src/render/renderstates/renderstates.cpp
@@ -99,7 +99,7 @@ void RenderStateNode::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
} else {
m_impl->updateProperty(propertyChange->propertyName(), propertyChange->value());
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
}
diff --git a/src/render/texture/texture.cpp b/src/render/texture/texture.cpp
index f17ac8ee5..18b526ad0 100644
--- a/src/render/texture/texture.cpp
+++ b/src/render/texture/texture.cpp
@@ -597,7 +597,7 @@ void Texture::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
break;
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
TextureDNA Texture::dna() const
diff --git a/src/render/texture/textureimage.cpp b/src/render/texture/textureimage.cpp
index aef4908bb..fe4247410 100644
--- a/src/render/texture/textureimage.cpp
+++ b/src/render/texture/textureimage.cpp
@@ -121,7 +121,7 @@ void TextureImage::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
if (txt != Q_NULLPTR)
txt->addToPendingTextureJobs();
}
- markDirty(BackendNodeDirtyFlag::Any);
+ markDirty(AbstractRenderer::AllDirty);
}
void TextureImage::setTextureManager(TextureManager *manager)
diff --git a/tests/auto/render/commons/testrenderer.cpp b/tests/auto/render/commons/testrenderer.cpp
index 39cf936ac..db038dbc4 100644
--- a/tests/auto/render/commons/testrenderer.cpp
+++ b/tests/auto/render/commons/testrenderer.cpp
@@ -39,17 +39,22 @@ TestRenderer::~TestRenderer()
{
}
-void TestRenderer::markDirty(Qt3DRender::Render::BackendNodeDirtySet changes, Qt3DRender::Render::BackendNode *node)
+void TestRenderer::markDirty(Qt3DRender::Render::AbstractRenderer::BackendNodeDirtySet changes, Qt3DRender::Render::BackendNode *node)
{
Q_UNUSED(node);
m_changes |= changes;
}
-Qt3DRender::Render::BackendNodeDirtySet TestRenderer::dirtyBits()
+Qt3DRender::Render::AbstractRenderer::BackendNodeDirtySet TestRenderer::dirtyBits()
{
return m_changes;
}
+void TestRenderer::clearDirtyBits(Qt3DRender::Render::AbstractRenderer::BackendNodeDirtySet changes)
+{
+ m_changes &= changes;
+}
+
void TestRenderer::resetDirty()
{
m_changes = 0;
diff --git a/tests/auto/render/commons/testrenderer.h b/tests/auto/render/commons/testrenderer.h
index d237b6051..1194e6c38 100644
--- a/tests/auto/render/commons/testrenderer.h
+++ b/tests/auto/render/commons/testrenderer.h
@@ -67,13 +67,14 @@ public:
void setSettings(Qt3DRender::Render::RendererSettings *settings) Q_DECL_OVERRIDE { Q_UNUSED(settings); }
Qt3DRender::Render::RendererSettings *settings() const Q_DECL_OVERRIDE { return Q_NULLPTR; }
- void markDirty(Qt3DRender::Render::BackendNodeDirtySet changes, Qt3DRender::Render::BackendNode *node) Q_DECL_OVERRIDE;
- Qt3DRender::Render::BackendNodeDirtySet dirtyBits() Q_DECL_OVERRIDE;
+ void markDirty(Qt3DRender::Render::AbstractRenderer::BackendNodeDirtySet changes, Qt3DRender::Render::BackendNode *node) Q_DECL_OVERRIDE;
+ Qt3DRender::Render::AbstractRenderer::BackendNodeDirtySet dirtyBits() Q_DECL_OVERRIDE;
+ void clearDirtyBits(Qt3DRender::Render::AbstractRenderer::BackendNodeDirtySet changes) Q_DECL_OVERRIDE;
void resetDirty();
protected:
- Qt3DRender::Render::BackendNodeDirtySet m_changes;
+ Qt3DRender::Render::AbstractRenderer::BackendNodeDirtySet m_changes;
};
QT_END_NAMESPACE
diff --git a/tests/auto/render/qmaterial/tst_qmaterial.cpp b/tests/auto/render/qmaterial/tst_qmaterial.cpp
index 3b6171030..7b52a798c 100644
--- a/tests/auto/render/qmaterial/tst_qmaterial.cpp
+++ b/tests/auto/render/qmaterial/tst_qmaterial.cpp
@@ -36,7 +36,6 @@
#include <Qt3DRender/QTechnique>
#include <Qt3DRender/QRenderPass>
#include <Qt3DRender/QPhongMaterial>
-#include <Qt3DRender/QParameterMapping>
#include <Qt3DRender/QDiffuseMapMaterial>
#include <Qt3DRender/QPerVertexColorMaterial>
#include <Qt3DRender/QNormalDiffuseMapMaterial>
@@ -131,7 +130,6 @@ private:
compareParameters(original->parameters(), clone->parameters());
compareRenderStates(original->renderStates(), clone->renderStates());
compareAnnotations(original->annotations(), clone->annotations());
- compareBindings(original->bindings(), clone->bindings());
compareShaderPrograms(original->shaderProgram(), clone->shaderProgram());
}
@@ -162,22 +160,6 @@ private:
}
}
- void compareBindings(const QList<Qt3DRender::QParameterMapping *> &original, const QList<Qt3DRender::QParameterMapping *> &clone)
- {
- const int bindingsCount = original.size();
- QCOMPARE(bindingsCount, clone.size());
-
- for (int i = 0; i < bindingsCount; ++i) {
- const Qt3DRender::QParameterMapping *origMapping = original.at(i);
- const Qt3DRender::QParameterMapping *cloneMapping = clone.at(i);
-
- QCOMPARE(origMapping->id(), cloneMapping->id());
- QCOMPARE(origMapping->bindingType(), cloneMapping->bindingType());
- QCOMPARE(origMapping->parameterName(), cloneMapping->parameterName());
- QCOMPARE(origMapping->shaderVariableName(), cloneMapping->shaderVariableName());
- }
- }
-
void compareRenderStates(const QList<Qt3DRender::QRenderState *> &original, const QList<Qt3DRender::QRenderState *> &clone)
{
const int renderStatesCount = original.size();
diff --git a/tests/auto/render/renderpass/tst_renderpass.cpp b/tests/auto/render/renderpass/tst_renderpass.cpp
index 603cfb2a2..390946042 100644
--- a/tests/auto/render/renderpass/tst_renderpass.cpp
+++ b/tests/auto/render/renderpass/tst_renderpass.cpp
@@ -32,7 +32,6 @@
#include <Qt3DCore/QScenePropertyChange>
#include <Qt3DRender/QAnnotation>
-#include <Qt3DRender/QParameterMapping>
#include <Qt3DRender/QRenderPass>
#include <Qt3DRender/QShaderProgram>
#include <Qt3DRender/QParameter>
@@ -84,7 +83,6 @@ private slots:
// THEN
QVERIFY(backend.shaderProgram().isNull());
QVERIFY(backend.annotations().isEmpty());
- QVERIFY(backend.bindings().isEmpty());
QVERIFY(backend.renderStates(m_renderStateManager).isEmpty());
QVERIFY(backend.parameters().isEmpty());
}
@@ -97,8 +95,6 @@ private slots:
frontend.addAnnotation(new QAnnotation(&frontend));
- frontend.addBinding(new QParameterMapping(&frontend));
-
frontend.addParameter(new QParameter(&frontend));
QRenderState *frontendState = new QBlendState();
@@ -119,12 +115,6 @@ private slots:
QCOMPARE(backend.annotations().size(), 1);
QCOMPARE(backend.annotations().first(), frontend.annotations().first()->id());
- QCOMPARE(backend.bindings().size(), 1);
- QCOMPARE(backend.bindings().first().id(), frontend.bindings().first()->id());
- QCOMPARE(backend.bindings().first().bindingType(), frontend.bindings().first()->bindingType());
- QCOMPARE(backend.bindings().first().parameterName(), frontend.bindings().first()->parameterName());
- QCOMPARE(backend.bindings().first().shaderVariableName(), frontend.bindings().first()->shaderVariableName());
-
QCOMPARE(backend.parameters().size(), 1);
QCOMPARE(backend.parameters().first(), frontend.parameters().first()->id());
@@ -191,39 +181,6 @@ private slots:
QVERIFY(backend.annotations().isEmpty());
}
- void shouldHandleBindingsPropertyChangeEvents()
- {
- // GIVEN
- QScopedPointer<QParameterMapping> binding(new QParameterMapping);
-
- RenderPass backend;
- TestRenderer renderer;
- backend.setRenderer(&renderer);
-
- // WHEN
- QScenePropertyChangePtr addChange(new QScenePropertyChange(NodeAdded, QSceneChange::Node, binding->id()));
- addChange->setValue(QVariant::fromValue(binding.data()));
- addChange->setPropertyName("binding");
- backend.sceneChangeEvent(addChange);
-
- // THEN
- QCOMPARE(backend.bindings().size(), 1);
- QCOMPARE(backend.bindings().first().id(), binding->id());
- QCOMPARE(backend.bindings().first().bindingType(), binding->bindingType());
- QCOMPARE(backend.bindings().first().parameterName(), binding->parameterName());
- QCOMPARE(backend.bindings().first().shaderVariableName(), binding->shaderVariableName());
- QVERIFY(renderer.dirtyBits() != 0);
-
- // WHEN
- QScenePropertyChangePtr removeChange(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, binding->id()));
- removeChange->setValue(QVariant::fromValue(binding->id()));
- removeChange->setPropertyName("binding");
- backend.sceneChangeEvent(removeChange);
-
- // THEN
- QVERIFY(backend.bindings().isEmpty());
- }
-
void shouldHandleParametersPropertyChangeEvents()
{
// GIVEN