summaryrefslogtreecommitdiff
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:28 +0000
commitcf631950bea06296c97cbbc6ef479ccf4e4237e9 (patch)
treec0356beb4cec8b8d1596ed6e7a70cca746b3c7ce
parentdcd923df472f296461f28230f4391ff549b48764 (diff)
downloadqt3d-cf631950bea06296c97cbbc6ef479ccf4e4237e9.tar.gz
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(),