diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2017-07-06 16:58:36 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-07-08 09:05:23 +0000 |
commit | 0d196b42683deb852c0df90ce76eb9cf98112fb9 (patch) | |
tree | 2d189538a0919a077eecc16bc92f474ad6583e35 /src/gui/util | |
parent | 13ecd686b93a8c8d915301e95eb4f1a2626651de (diff) |
Add support for parameters in QShaderGenerator
Change-Id: Iff8fec51ddbf9b018cb5ec3aff357125134013eb
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/gui/util')
-rw-r--r-- | src/gui/util/qshadergenerator.cpp | 21 |
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 ¶meterName : 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("}"); |