diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/render/backend/renderer.cpp | 21 | ||||
-rw-r--r-- | src/render/frontend/parameter.cpp | 30 | ||||
-rw-r--r-- | src/render/frontend/parameter.h | 16 | ||||
-rw-r--r-- | src/render/frontend/parameterbinder.h | 3 | ||||
-rw-r--r-- | src/render/io/gltfparser.cpp | 16 |
5 files changed, 19 insertions, 67 deletions
diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp index 11270b6bb..a5cbd84e7 100644 --- a/src/render/backend/renderer.cpp +++ b/src/render/backend/renderer.cpp @@ -166,30 +166,25 @@ void Renderer::buildDefaultTechnique() m_defaultTechnique->addPass(basicPass); Parameter* vp = new Parameter(m_defaultTechnique, QStringLiteral("position"), Parameter::FloatVec3); - vp->setMeshAttributeName(QStringLiteral("position")); m_defaultTechnique->addParameter(vp); basicPass->addBinding(new ParameterBinder(QStringLiteral("position"), QStringLiteral("vertexPosition"), ParameterBinder::Attribute)); Parameter* np = new Parameter(m_defaultTechnique, QStringLiteral("normal"), Parameter::FloatVec3); - np->setMeshAttributeName(QStringLiteral("normal")); m_defaultTechnique->addParameter(np); basicPass->addBinding(new ParameterBinder(QStringLiteral("normal"), QStringLiteral("vertexNormal"), ParameterBinder::Attribute)); // matrix uniforms from standard Parameter* mvMat = new Parameter(m_defaultTechnique, QStringLiteral("modelView"), Parameter::FloatMat4); - mvMat->setStandardUniform(Parameter::ModelView); m_defaultTechnique->addParameter(mvMat); - basicPass->addBinding(new ParameterBinder(QStringLiteral("modelView"), QStringLiteral("modelViewMatrix"), ParameterBinder::Uniform)); + basicPass->addBinding(new ParameterBinder(QStringLiteral("modelView"), QStringLiteral("modelViewMatrix"), ParameterBinder::StandardUniform)); Parameter* nMat = new Parameter(m_defaultTechnique, QStringLiteral("normalMat"), Parameter::FloatMat4); - nMat->setStandardUniform(Parameter::ModelViewNormal); m_defaultTechnique->addParameter(nMat); - basicPass->addBinding(new ParameterBinder(QStringLiteral("normalMat"), QStringLiteral("normalMatrix"), ParameterBinder::Uniform)); + basicPass->addBinding(new ParameterBinder(QStringLiteral("normalMat"), QStringLiteral("normalMatrix"), ParameterBinder::StandardUniform)); Parameter* mvpMat = new Parameter(m_defaultTechnique, QStringLiteral("mvp"), Parameter::FloatMat4); - mvpMat->setStandardUniform(Parameter::ModelViewProjection); m_defaultTechnique->addParameter(mvpMat); - basicPass->addBinding(new ParameterBinder(QStringLiteral("mvp"), QStringLiteral("mvp"), ParameterBinder::Uniform)); + basicPass->addBinding(new ParameterBinder(QStringLiteral("mvp"), QStringLiteral("mvp"), ParameterBinder::StandardUniform)); // diffuse lighting uniforms Parameter* lightPos = new Parameter(m_defaultTechnique, QStringLiteral("lightPos"), Parameter::FloatVec4, QVector4D(10.0f, 10.0f, 0.0f, 1.0f)); @@ -230,12 +225,10 @@ void Renderer::buildDefaultMaterial() if (binding->bindingType() == ParameterBinder::Uniform) { Q_FOREACH (Parameter *param, m_defaultTechnique->parameters()) { if (param->name() == binding->parameterName()) { - if (!param->isStandardUniform()) { - if (param->datatype() >= Parameter::Float && param->datatype() <= Parameter::FloatMat4) - m_defaultUniformPack.setUniform(binding->shaderVariableName(), QUniformValue(QUniformValue::Float, param->value())); - else if (param->datatype() >= Parameter::Int) - m_defaultUniformPack.setUniform(binding->shaderVariableName(), QUniformValue(QUniformValue::Int, param->value())); - } + if (param->datatype() >= Parameter::Float && param->datatype() <= Parameter::FloatMat4) + m_defaultUniformPack.setUniform(binding->shaderVariableName(), QUniformValue(QUniformValue::Float, param->value())); + else if (param->datatype() >= Parameter::Int) + m_defaultUniformPack.setUniform(binding->shaderVariableName(), QUniformValue(QUniformValue::Int, param->value())); } } } diff --git a/src/render/frontend/parameter.cpp b/src/render/frontend/parameter.cpp index a721ec711..2f595e702 100644 --- a/src/render/frontend/parameter.cpp +++ b/src/render/frontend/parameter.cpp @@ -50,18 +50,14 @@ namespace Qt3D { Parameter::Parameter(Node *parent, const QString &name, OpenGLTypes ty) : Node(parent), m_name(name), - m_type(ty), - m_standardUniform(None) + m_type(ty) { - } Parameter::Parameter(Node *parent) : Node(parent) , m_type(Undefined) - , m_standardUniform(None) { - } Parameter::Parameter(Node *parent, const QString &name, Parameter::OpenGLTypes ty, const QVariant &value) @@ -69,7 +65,6 @@ Parameter::Parameter(Node *parent, const QString &name, Parameter::OpenGLTypes t , m_name(name) , m_type(ty) , m_value(value) - , m_standardUniform(None) { } @@ -82,29 +77,6 @@ void Parameter::setName(const QString &name) } } -void Parameter::setMeshAttributeName(QString name) -{ - if (m_meshName != name) { - m_meshName = name; - emit meshAttributeNameChanged(); - } -} - -bool Parameter::isStandardUniform() const -{ - return (m_standardUniform != None); -} - -void Parameter::setStandardUniform(Parameter::StandardUniform su) -{ - m_standardUniform = su; -} - -Parameter::StandardUniform Parameter::standardUniform() const -{ - return m_standardUniform; -} - void Parameter::setValue(const QVariant &dv) { if (m_value != dv) { diff --git a/src/render/frontend/parameter.h b/src/render/frontend/parameter.h index f0090dc35..54091702d 100644 --- a/src/render/frontend/parameter.h +++ b/src/render/frontend/parameter.h @@ -56,15 +56,14 @@ class QT3DRENDERERSHARED_EXPORT Parameter : public Node Q_ENUMS(OpenGLTypes) Q_ENUMS(StandardUniform) Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) - Q_PROPERTY(QString meshAttributeName READ meshAttributeName WRITE setMeshAttributeName NOTIFY meshAttributeNameChanged) Q_PROPERTY(OpenGLTypes datatype READ datatype WRITE setDatatype NOTIFY datatypeChanged) Q_PROPERTY(QVariant value READ value WRITE setValue NOTIFY valueChanged) - Q_PROPERTY(StandardUniform standardUniform WRITE setStandardUniform READ standardUniform CONSTANT) public: // FIXME - sort this by frequency, to minimize the size of the // vector in RenderShader. (We want to use compact storage, but we index // by this enum, and resize to the largest value) + // Will be moved out of parameter enum StandardUniform { None = -1, @@ -121,17 +120,6 @@ public: QString name() const { return m_name; } - // permit one extra level of indrection in mesh naming of - // attributes (glTf at least does this) - void setMeshAttributeName(QString name); - QString meshAttributeName() const - { return m_meshName; } - - bool isStandardUniform() const; - - void setStandardUniform(StandardUniform su); - StandardUniform standardUniform() const; - /** * @brief setDefaultValue - for non-texture uniform parameters * @param dv @@ -153,7 +141,6 @@ public: Q_SIGNALS: void valueChanged(); void nameChanged(); - void meshAttributeNameChanged(); void datatypeChanged(); private: @@ -161,7 +148,6 @@ private: OpenGLTypes m_type; QVariant m_value; QString m_meshName; - StandardUniform m_standardUniform; }; } // Qt3D diff --git a/src/render/frontend/parameterbinder.h b/src/render/frontend/parameterbinder.h index 992947335..87e041e7d 100644 --- a/src/render/frontend/parameterbinder.h +++ b/src/render/frontend/parameterbinder.h @@ -60,7 +60,8 @@ public: enum Binding { Uniform = 0, - Attribute + Attribute, + StandardUniform }; explicit ParameterBinder(QObject *parent = 0); diff --git a/src/render/io/gltfparser.cpp b/src/render/io/gltfparser.cpp index 8a0796f1e..0728ff05e 100644 --- a/src/render/io/gltfparser.cpp +++ b/src/render/io/gltfparser.cpp @@ -799,14 +799,14 @@ void GLTFParser::processJSONTechnique( QString id, QJsonObject jsonObj ) // But a string Parameter* p = new Parameter(t, pname, parseType(po.value(KEY_TYPE).toString().toUtf8())); Parameter::StandardUniform su = parseSemanticName(semantic.toUtf8()); - if (su != Parameter::None) { - p->setStandardUniform(su); - } else { - // should really verify it's an attribute parameter? - // but what would be the way to do that? - // check the accessor dict? - p->setMeshAttributeName(semantic); - } +// if (su != Parameter::None) { +// p->setStandardUniform(su); +// } else { +// // should really verify it's an attribute parameter? +// // but what would be the way to do that? +// // check the accessor dict? +// p->setMeshAttributeName(semantic); +// } t->addParameter(p); |