summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorInho Lee <inho.lee@qt.io>2023-01-05 23:56:11 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-01-10 18:35:29 +0000
commit2459f5f029d67e14349b4038a5867ab973a9cdb8 (patch)
treeb6a7c608361b9daff716f6d109bfd16f9777491c
parent51096ff5cf087612240a9e34a358e8d0790283ca (diff)
Fix the input qualifier of the fragment shader for GLSL1.10
FS's input qualifier is different with VS's in GLSL1.10. If prototypes has 'headerSnippetsFrag', it will be applied for FS instead of 'headerSnippets'. Fixes: QTBUG-99019 Change-Id: I588d3f78d4ba895a9a90b20a87b92a6da9ffee18 Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io> Reviewed-by: Paul Lemire <paul.lemire@kdab.com> (cherry picked from commit d6a9ed5039ef4f1f836f5786998485ee6016b315) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/render/materialsystem/prototypes/default.json3
-rw-r--r--src/render/shadergraph/qshadernodesloader.cpp8
2 files changed, 10 insertions, 1 deletions
diff --git a/src/render/materialsystem/prototypes/default.json b/src/render/materialsystem/prototypes/default.json
index 16a3288ac..f92172d5d 100644
--- a/src/render/materialsystem/prototypes/default.json
+++ b/src/render/materialsystem/prototypes/default.json
@@ -21,6 +21,9 @@
"headerSnippets": [
"attribute highp $type $name;"
],
+ "headerSnippetsFrag": [
+ "varying highp $type $name;"
+ ],
"substitution": "highp $type $value = $name;"
},
{
diff --git a/src/render/shadergraph/qshadernodesloader.cpp b/src/render/shadergraph/qshadernodesloader.cpp
index 7cbc83065..c0d8dc703 100644
--- a/src/render/shadergraph/qshadernodesloader.cpp
+++ b/src/render/shadergraph/qshadernodesloader.cpp
@@ -244,7 +244,13 @@ void QShaderNodesLoader::load(const QJsonObject &prototypesObject)
const QByteArray substitution = substitutionValue.toString().toUtf8();
- const QJsonValue snippetsValue = ruleObject.value(QStringLiteral("headerSnippets"));
+ // WA for QTBUG-99019
+ const auto wIt = (format.shaderType() == QShaderFormat::Fragment)
+ ? ruleObject.constFind(QStringLiteral("headerSnippetsFrag"))
+ : ruleObject.constEnd();
+ const QJsonValue snippetsValue = (wIt != ruleObject.constEnd())
+ ? *wIt
+ : ruleObject.value(QStringLiteral("headerSnippets"));
const QJsonArray snippetsArray = snippetsValue.toArray();
auto snippets = QByteArrayList();
std::transform(snippetsArray.constBegin(), snippetsArray.constEnd(),