diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2017-07-12 14:03:08 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-08-02 17:34:35 +0000 |
commit | dd04551504d8687a9795a52de28380efbc5a091c (patch) | |
tree | 929673ee843bc8b096b9e213dde03ae44e8ca30c /tests/auto/gui/util | |
parent | 50775424beb886e1fa0c32982a46642a8e1fa888 (diff) |
Extend the parameter support in QShaderGraphLoader for richer types
In particular, go through QMetaType/QMetaEnum to deal with enums.
Change-Id: I2e847ba328eb46609b86b3dfd6c4dbf532d78b7d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/gui/util')
-rw-r--r-- | tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp b/tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp index 38828e3a9b..4fec89117e 100644 --- a/tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp +++ b/tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp @@ -32,6 +32,7 @@ #include <QtCore/qbuffer.h> #include <QtGui/private/qshadergraphloader_p.h> +#include <QtGui/private/qshaderlanguage_p.h> using QBufferPointer = QSharedPointer<QBuffer>; Q_DECLARE_METATYPE(QBufferPointer); @@ -98,10 +99,12 @@ namespace }); worldPosition.setUuid(QUuid("{00000000-0000-0000-0000-000000000001}")); worldPosition.setParameter("name", "worldPosition"); - worldPosition.addRule(openGLES2, QShaderNode::Rule("highp vec3 $value = $name;", - QByteArrayList() << "varying highp vec3 $name;")); - worldPosition.addRule(openGL3, QShaderNode::Rule("vec3 $value = $name;", - QByteArrayList() << "in vec3 $name;")); + worldPosition.setParameter("qualifier", QVariant::fromValue<QShaderLanguage::StorageQualifier>(QShaderLanguage::Input)); + worldPosition.setParameter("type", QVariant::fromValue<QShaderLanguage::VariableType>(QShaderLanguage::Vec3)); + worldPosition.addRule(openGLES2, QShaderNode::Rule("highp $type $value = $name;", + QByteArrayList() << "$qualifier highp $type $name;")); + worldPosition.addRule(openGL3, QShaderNode::Rule("$type $value = $name;", + QByteArrayList() << "$qualifier $type $name;")); auto texture = createNode({ createPort(QShaderNodePort::Output, "texture") @@ -126,10 +129,12 @@ namespace }); lightIntensity.setUuid(QUuid("{00000000-0000-0000-0000-000000000004}")); lightIntensity.setParameter("name", "defaultName"); - lightIntensity.addRule(openGLES2, QShaderNode::Rule("highp vec3 $value = $name;", - QByteArrayList() << "varying highp vec3 $name;")); - lightIntensity.addRule(openGL3, QShaderNode::Rule("vec3 $value = $name;", - QByteArrayList() << "in vec3 $name;")); + lightIntensity.setParameter("qualifier", QVariant::fromValue<QShaderLanguage::StorageQualifier>(QShaderLanguage::Uniform)); + lightIntensity.setParameter("type", QVariant::fromValue<QShaderLanguage::VariableType>(QShaderLanguage::Float)); + lightIntensity.addRule(openGLES2, QShaderNode::Rule("highp $type $value = $name;", + QByteArrayList() << "$qualifier highp $type $name;")); + lightIntensity.addRule(openGL3, QShaderNode::Rule("$type $value = $name;", + QByteArrayList() << "$qualifier $type $name;")); auto exposure = createNode({ createPort(QShaderNodePort::Output, "exposure") @@ -377,7 +382,15 @@ void tst_QShaderGraphLoader::shouldLoadFromJsonStream_data() " \"uuid\": \"{00000000-0000-0000-0000-000000000001}\"," " \"type\": \"inputValue\"," " \"parameters\": {" - " \"name\": \"worldPosition\"" + " \"name\": \"worldPosition\"," + " \"qualifier\": {" + " \"type\": \"QShaderLanguage::StorageQualifier\"," + " \"value\": \"QShaderLanguage::Input\"" + " }," + " \"type\": {" + " \"type\": \"QShaderLanguage::VariableType\"," + " \"value\": \"QShaderLanguage::Vec3\"" + " }" " }" " }," " {" @@ -475,10 +488,12 @@ void tst_QShaderGraphLoader::shouldLoadFromJsonStream_data() createPort(QShaderNodePort::Output, "value") }); inputValue.setParameter("name", "defaultName"); - inputValue.addRule(openGLES2, QShaderNode::Rule("highp vec3 $value = $name;", - QByteArrayList() << "varying highp vec3 $name;")); - inputValue.addRule(openGL3, QShaderNode::Rule("vec3 $value = $name;", - QByteArrayList() << "in vec3 $name;")); + inputValue.setParameter("qualifier", QVariant::fromValue<QShaderLanguage::StorageQualifier>(QShaderLanguage::Uniform)); + inputValue.setParameter("type", QVariant::fromValue<QShaderLanguage::VariableType>(QShaderLanguage::Float)); + inputValue.addRule(openGLES2, QShaderNode::Rule("highp $type $value = $name;", + QByteArrayList() << "$qualifier highp $type $name;")); + inputValue.addRule(openGL3, QShaderNode::Rule("$type $value = $name;", + QByteArrayList() << "$qualifier $type $name;")); protos.insert("inputValue", inputValue); auto texture = createNode({ |