diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-09-12 18:17:32 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-09-29 22:53:21 +0200 |
commit | 0d5b71f4df0d0acfc807076441a52b4ceefb410b (patch) | |
tree | cb714bb858a50b8692258ea1f84611bf41d48d90 | |
parent | c2332dd5480943e5bbcc190c879a2b6647d69bf5 (diff) |
QParameter new overloaded ctors
Change-Id: Ia6e3c3285884265b303485176109a4d2c80ccabe
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | examples/deferred-renderer-cpp/main.cpp | 20 | ||||
-rw-r--r-- | src/plugins/sceneparsers/assimp/assimpparser.cpp | 30 | ||||
-rw-r--r-- | src/render/backend/renderer.cpp | 16 | ||||
-rw-r--r-- | src/render/frontend/qparameter.cpp | 11 | ||||
-rw-r--r-- | src/render/frontend/qparameter.h | 4 | ||||
-rw-r--r-- | src/render/io/gltfparser.cpp | 2 |
6 files changed, 45 insertions, 38 deletions
diff --git a/examples/deferred-renderer-cpp/main.cpp b/examples/deferred-renderer-cpp/main.cpp index 8c26ba343..d331f672f 100644 --- a/examples/deferred-renderer-cpp/main.cpp +++ b/examples/deferred-renderer-cpp/main.cpp @@ -141,20 +141,18 @@ int main(int ac, char **av) Qt3D::QMaterial *sphereOneMaterial = new Qt3D::QMaterial(); sphereOneMaterial->setEffect(sceneEffect); - sphereOneMaterial->addParameter(new Qt3D::QParameter(sphereOneMaterial, QStringLiteral("meshColor"), QColor(Qt::blue))); + sphereOneMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("meshColor"), QColor(Qt::blue))); - Qt3D::QTransform *sphereOneTransform = new Qt3D::QTransform(); Qt3D::QTranslateTransform *sphereOneTranslate = new Qt3D::QTranslateTransform(); sphereOneTranslate->setDx(-10.0f); sphereOneTranslate->setDy(0.0f); sphereOneTranslate->setDz(25.0f); - sphereOneTransform->appendTransform(sphereOneTranslate); Qt3D::QPointLight *light2 = new Qt3D::QPointLight(); light2->setColor(Qt::white); light2->setIntensity(1.5f); - sphereOne->addComponent(sphereOneTransform); + sphereOne->addComponent(new Qt3D::QTransform(sphereOneTranslate)); sphereOne->addComponent(sphereOneMaterial); sphereOne->addComponent(sphereMesh); sphereOne->addComponent(sceneLayer); @@ -163,7 +161,7 @@ int main(int ac, char **av) Qt3D::QEntity *sphereTwo = new Qt3D::QEntity(); Qt3D::QMaterial *sphereTwoMaterial = new Qt3D::QMaterial(); sphereTwoMaterial->setEffect(sceneEffect); - sphereTwoMaterial->addParameter(new Qt3D::QParameter(sphereTwoMaterial, QStringLiteral("meshColor"), QColor(Qt::yellow))); + sphereTwoMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("meshColor"), QColor(Qt::yellow))); Qt3D::QPointLight *light3 = new Qt3D::QPointLight(); light3->setColor(Qt::blue); @@ -177,20 +175,18 @@ int main(int ac, char **av) // Screen Quad Qt3D::QEntity *screenQuad = new Qt3D::QEntity(); Qt3D::QMaterial *screenQuadMaterial = new Qt3D::QMaterial(); - screenQuadMaterial->addParameter(new Qt3D::QParameter(0, QStringLiteral("position"),QVariant::fromValue(gBuffer->positionTexture()))); - screenQuadMaterial->addParameter(new Qt3D::QParameter(0, QStringLiteral("normal"), QVariant::fromValue(gBuffer->normalTexture()))); - screenQuadMaterial->addParameter(new Qt3D::QParameter(0, QStringLiteral("color"), QVariant::fromValue(gBuffer->colorTexture()))); - screenQuadMaterial->addParameter(new Qt3D::QParameter(0, QStringLiteral("winSize"), QSize(1024, 1024))); + screenQuadMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("position"), gBuffer->positionTexture())); + screenQuadMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("normal"), gBuffer->normalTexture())); + screenQuadMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("color"), gBuffer->colorTexture())); + screenQuadMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("winSize"), QSize(1024, 1024))); screenQuadMaterial->setEffect(finalEffect); - Qt3D::QTransform *screenQuadTransform = new Qt3D::QTransform(); Qt3D::QRotateTransform *screenPlaneRotation = new Qt3D::QRotateTransform(); screenPlaneRotation->setAngleDeg(90); screenPlaneRotation->setAxis(QVector3D(1.0f, 0.0f, 0.0f)); - screenQuadTransform->appendTransform(screenPlaneRotation); screenQuad->addComponent(quadLayer); - screenQuad->addComponent(screenQuadTransform); + screenQuad->addComponent(new Qt3D::QTransform(screenPlaneRotation)); screenQuad->addComponent(screenQuadMaterial); screenQuad->addComponent(planeMesh); diff --git a/src/plugins/sceneparsers/assimp/assimpparser.cpp b/src/plugins/sceneparsers/assimp/assimpparser.cpp index 9adac2fca..66d429945 100644 --- a/src/plugins/sceneparsers/assimp/assimpparser.cpp +++ b/src/plugins/sceneparsers/assimp/assimpparser.cpp @@ -694,17 +694,17 @@ void AssimpParser::copyMaterialColorProperties(QMaterial *material, aiMaterial * { aiColor3D color; if (assimpMaterial->Get(AI_MATKEY_COLOR_DIFFUSE, color) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_DIFFUSE_COLOR, QColor::fromRgbF(color.r, color.g, color.b))); + material->addParameter(new QParameter(ASSIMP_MATERIAL_DIFFUSE_COLOR, QColor::fromRgbF(color.r, color.g, color.b), material)); if (assimpMaterial->Get(AI_MATKEY_COLOR_SPECULAR, color) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_SPECULAR_COLOR, QColor::fromRgbF(color.r, color.g, color.b))); + material->addParameter(new QParameter(ASSIMP_MATERIAL_SPECULAR_COLOR, QColor::fromRgbF(color.r, color.g, color.b), material)); if (assimpMaterial->Get(AI_MATKEY_COLOR_AMBIENT, color) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_AMBIENT_COLOR, QColor::fromRgbF(color.r, color.g, color.b))); + material->addParameter(new QParameter(ASSIMP_MATERIAL_AMBIENT_COLOR, QColor::fromRgbF(color.r, color.g, color.b), material)); if (assimpMaterial->Get(AI_MATKEY_COLOR_EMISSIVE, color) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_EMISSIVE_COLOR, QColor::fromRgbF(color.r, color.g, color.b))); + material->addParameter(new QParameter(ASSIMP_MATERIAL_EMISSIVE_COLOR, QColor::fromRgbF(color.r, color.g, color.b), material)); if (assimpMaterial->Get(AI_MATKEY_COLOR_TRANSPARENT, color) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_TRANSPARENT_COLOR, QColor::fromRgbF(color.r, color.g, color.b))); + material->addParameter(new QParameter(ASSIMP_MATERIAL_TRANSPARENT_COLOR, QColor::fromRgbF(color.r, color.g, color.b), material)); if (assimpMaterial->Get(AI_MATKEY_COLOR_REFLECTIVE, color) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_REFLECTIVE_COLOR, QColor::fromRgbF(color.r, color.g, color.b))); + material->addParameter(new QParameter(ASSIMP_MATERIAL_REFLECTIVE_COLOR, QColor::fromRgbF(color.r, color.g, color.b), material)); } /*! @@ -714,9 +714,9 @@ void AssimpParser::copyMaterialBoolProperties(QMaterial *material, aiMaterial *a { int value; if (assimpMaterial->Get(AI_MATKEY_TWOSIDED, value) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_IS_TWOSIDED, (value == 0) ? false : true)); + material->addParameter(new QParameter(ASSIMP_MATERIAL_IS_TWOSIDED, (value == 0) ? false : true, material)); if (assimpMaterial->Get(AI_MATKEY_ENABLE_WIREFRAME, value) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_IS_WIREFRAME, (value == 0) ? false : true)); + material->addParameter(new QParameter(ASSIMP_MATERIAL_IS_WIREFRAME, (value == 0) ? false : true, material)); } void AssimpParser::copyMaterialShadingModel(QMaterial *material, aiMaterial *assimpMaterial) @@ -789,8 +789,8 @@ void AssimpParser::copyMaterialTextures(QMaterial *material, aiMaterial *assimpM } } if (textureLoaded) { - material->addParameter(new QParameter(material, m_textureToParameterName[textureType[i]], - QVariant::fromValue(m_materialTextures[fullPath]))); + material->addParameter(new QParameter(m_textureToParameterName[textureType[i]], + m_materialTextures[fullPath], material)); } } } @@ -803,15 +803,15 @@ void AssimpParser::copyMaterialFloatProperties(QMaterial *material, aiMaterial * { float value = 0; if (assimpMaterial->Get(AI_MATKEY_OPACITY, value) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_OPACITY, value)); + material->addParameter(new QParameter(ASSIMP_MATERIAL_OPACITY, value, material)); if (assimpMaterial->Get(AI_MATKEY_SHININESS, value) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_SHININESS,value)); + material->addParameter(new QParameter(ASSIMP_MATERIAL_SHININESS, value, material)); if (assimpMaterial->Get(AI_MATKEY_SHININESS_STRENGTH, value) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_SHININESS_STRENGTH, value)); + material->addParameter(new QParameter(ASSIMP_MATERIAL_SHININESS_STRENGTH, value, material)); if (assimpMaterial->Get(AI_MATKEY_REFRACTI, value) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_REFRACTI, value)); + material->addParameter(new QParameter(ASSIMP_MATERIAL_REFRACTI, value, material)); if (assimpMaterial->Get(AI_MATKEY_REFLECTIVITY, value) == aiReturn_SUCCESS) - material->addParameter(new QParameter(material, ASSIMP_MATERIAL_REFLECTIVITY, value)); + material->addParameter(new QParameter(ASSIMP_MATERIAL_REFLECTIVITY, value, material)); } AssimpMesh::AssimpMesh(QNode *parent) diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp index 6cf5c30f2..9453a2c1e 100644 --- a/src/render/backend/renderer.cpp +++ b/src/render/backend/renderer.cpp @@ -198,18 +198,18 @@ void Renderer::buildDefaultTechnique() m_defaultTechnique->addPass(basicPass); // diffuse lighting uniforms - QParameter* lightPos = new QParameter(m_defaultTechnique, QStringLiteral("lightPos"), QVector4D(10.0f, 10.0f, 0.0f, 1.0f)); + QParameter* lightPos = new QParameter(QStringLiteral("lightPos"), QVector4D(10.0f, 10.0f, 0.0f, 1.0f)); m_defaultTechnique->addParameter(lightPos); basicPass->addBinding(new QParameterMapper(QStringLiteral("lightPos"), QStringLiteral("lightPosition"), QParameterMapper::Uniform)); - QParameter* lightIntensity = new QParameter(m_defaultTechnique, QStringLiteral("lightIntensity"), QVector3D(0.5f, 0.5f, 0.5f)); + QParameter* lightIntensity = new QParameter(QStringLiteral("lightIntensity"), QVector3D(0.5f, 0.5f, 0.5f)); m_defaultTechnique->addParameter(lightIntensity); - QParameter* kd = new QParameter(m_defaultTechnique, QStringLiteral("diffuse"), QVector3D(1.0f, 0.5f, 0.0f)); + QParameter* kd = new QParameter(QStringLiteral("diffuse"), QVector3D(1.0f, 0.5f, 0.0f)); m_defaultTechnique->addParameter(kd); basicPass->addBinding(new QParameterMapper(QStringLiteral("diffuse"), QStringLiteral("kd"), QParameterMapper::Uniform)); - QParameter* ka = new QParameter(m_defaultTechnique, QStringLiteral("ambient"), QVector3D(0.2f, 0.2f, 0.2f)); + QParameter* ka = new QParameter(QStringLiteral("ambient"), QVector3D(0.2f, 0.2f, 0.2f)); m_defaultTechnique->addParameter(ka); basicPass->addBinding(new QParameterMapper(QStringLiteral("ambient"), QStringLiteral("ka"), QParameterMapper::Uniform)); @@ -219,10 +219,10 @@ void Renderer::buildDefaultMaterial() { m_defaultMaterial = new QMaterial(); m_defaultMaterial->setObjectName(QStringLiteral("DefaultMaterial")); - m_defaultMaterial->addParameter(new QParameter(m_defaultMaterial, QStringLiteral("lightPos"), QVector4D(10.0f, 10.0f, 0.0f, 1.0f))); - m_defaultMaterial->addParameter(new QParameter(m_defaultMaterial, QStringLiteral("lightIntensity"), QVector3D(0.5f, 0.5f, 0.5f))); - m_defaultMaterial->addParameter(new QParameter(m_defaultMaterial, QStringLiteral("ambient"), QVector3D(0.2f, 0.2f, 0.2f))); - m_defaultMaterial->addParameter(new QParameter(m_defaultMaterial, QStringLiteral("diffuse"), QVector3D(1.0f, 0.5f, 0.0f))); + m_defaultMaterial->addParameter(new QParameter(QStringLiteral("lightPos"), QVector4D(10.0f, 10.0f, 0.0f, 1.0f))); + m_defaultMaterial->addParameter(new QParameter(QStringLiteral("lightIntensity"), QVector3D(0.5f, 0.5f, 0.5f))); + m_defaultMaterial->addParameter(new QParameter(QStringLiteral("ambient"), QVector3D(0.2f, 0.2f, 0.2f))); + m_defaultMaterial->addParameter(new QParameter(QStringLiteral("diffuse"), QVector3D(1.0f, 0.5f, 0.0f))); QEffect* defEff = new QEffect; defEff->addTechnique(m_defaultTechnique); diff --git a/src/render/frontend/qparameter.cpp b/src/render/frontend/qparameter.cpp index ba964abef..c771202a4 100644 --- a/src/render/frontend/qparameter.cpp +++ b/src/render/frontend/qparameter.cpp @@ -72,7 +72,7 @@ QParameter::QParameter(QNode *parent) { } -QParameter::QParameter(QNode *parent, const QString &name, const QVariant &value, QParameter::OpenGLTypes ty) +QParameter::QParameter(const QString &name, const QVariant &value, QNode *parent, QParameter::OpenGLTypes ty) : QNode(*new QParameterPrivate(this), parent) { Q_D(QParameter); @@ -81,6 +81,15 @@ QParameter::QParameter(QNode *parent, const QString &name, const QVariant &value d->m_type = ty; } +QParameter::QParameter(const QString &name, QTexture *texture, QNode *parent) + : QNode(*new QParameterPrivate(this), parent) +{ + Q_D(QParameter); + d->m_name = name; + d->m_value = QVariant::fromValue(texture); + d->m_type = Undefined; +} + void QParameter::copy(const QNode *ref) { Q_D(QParameter); diff --git a/src/render/frontend/qparameter.h b/src/render/frontend/qparameter.h index 5eec02517..b60f53488 100644 --- a/src/render/frontend/qparameter.h +++ b/src/render/frontend/qparameter.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE namespace Qt3D { class QParameterPrivate; +class QTexture; class QT3DRENDERERSHARED_EXPORT QParameter : public QNode { @@ -90,7 +91,8 @@ public: }; explicit QParameter(QNode *parent = 0); - QParameter(QNode* parent, const QString& name, const QVariant& value, OpenGLTypes ty = Undefined); + QParameter(const QString& name, const QVariant& value, QNode* parent = 0, OpenGLTypes ty = Undefined); + QParameter(const QString &name, QTexture *texture, QNode *parent = 0); void copy(const QNode *ref) Q_DECL_OVERRIDE; diff --git a/src/render/io/gltfparser.cpp b/src/render/io/gltfparser.cpp index 527f10272..012d8c438 100644 --- a/src/render/io/gltfparser.cpp +++ b/src/render/io/gltfparser.cpp @@ -824,7 +824,7 @@ void GLTFParser::processJSONTechnique( QString id, QJsonObject jsonObj ) QString semantic = po.value(KEY_SEMANTIC).toString(); // The Standard has changed, it doesn't return the raw int value for a type // But a string - QParameter* p = new QParameter(t, pname, parseType(po.value(KEY_TYPE).toString().toUtf8())); + QParameter* p = new QParameter(pname, parseType(po.value(KEY_TYPE).toString().toUtf8()), t); // Parameter::StandardUniform su = parseSemanticName(semantic.toUtf8()); // if (su != Parameter::None) { // p->setStandardUniform(su); |