diff options
author | Inho Lee <inho.lee@qt.io> | 2023-01-05 23:56:11 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-01-10 18:35:29 +0000 |
commit | 2459f5f029d67e14349b4038a5867ab973a9cdb8 (patch) | |
tree | b6a7c608361b9daff716f6d109bfd16f9777491c | |
parent | 51096ff5cf087612240a9e34a358e8d0790283ca (diff) | |
download | qt3d-2459f5f029d67e14349b4038a5867ab973a9cdb8.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.json | 3 | ||||
-rw-r--r-- | src/render/shadergraph/qshadernodesloader.cpp | 8 |
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(), |