summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2017-07-06 16:58:36 +0200
committerSean Harmer <sean.harmer@kdab.com>2017-07-08 09:05:23 +0000
commit0d196b42683deb852c0df90ce76eb9cf98112fb9 (patch)
tree2d189538a0919a077eecc16bc92f474ad6583e35 /src/gui
parent13ecd686b93a8c8d915301e95eb4f1a2626651de (diff)
Add support for parameters in QShaderGenerator
Change-Id: Iff8fec51ddbf9b018cb5ec3aff357125134013eb Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/util/qshadergenerator.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/gui/util/qshadergenerator.cpp b/src/gui/util/qshadergenerator.cpp
index 5d6a05e2a0..52bd275cf7 100644
--- a/src/gui/util/qshadergenerator.cpp
+++ b/src/gui/util/qshadergenerator.cpp
@@ -41,6 +41,22 @@
QT_BEGIN_NAMESPACE
+namespace
+{
+ QByteArray replaceParameters(const QByteArray &original, const QShaderNode &node)
+ {
+ auto result = original;
+
+ for (const auto &parameterName : node.parameterNames()) {
+ const auto placeholder = QByteArray(QByteArrayLiteral("$") + parameterName.toUtf8());
+ const auto value = node.parameter(parameterName).toString().toUtf8();
+ result.replace(placeholder, value);
+ }
+
+ return result;
+ }
+}
+
QByteArray QShaderGenerator::createShaderCode() const
{
auto code = QByteArrayList();
@@ -67,7 +83,7 @@ QByteArray QShaderGenerator::createShaderCode() const
for (const auto &node : graph.nodes()) {
for (const auto &snippet : node.rule(format).headerSnippets) {
- code << snippet;
+ code << replaceParameters(snippet, node);
}
}
@@ -93,7 +109,8 @@ QByteArray QShaderGenerator::createShaderCode() const
const auto variable = QByteArray(QByteArrayLiteral("v") + QByteArray::number(variableIndex));
line.replace(placeholder, variable);
}
- code << QByteArrayLiteral(" ") + line;
+
+ code << QByteArrayLiteral(" ") + replaceParameters(line, node);
}
code << QByteArrayLiteral("}");