aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickshadereffectnode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquickshadereffectnode.cpp')
-rw-r--r--src/quick/items/qquickshadereffectnode.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/quick/items/qquickshadereffectnode.cpp b/src/quick/items/qquickshadereffectnode.cpp
index b84d251de5..3ab13dbbc7 100644
--- a/src/quick/items/qquickshadereffectnode.cpp
+++ b/src/quick/items/qquickshadereffectnode.cpp
@@ -45,6 +45,7 @@
#include "qquickshadereffect_p.h"
#include <QtQuick/qsgtextureprovider.h>
#include <QtQuick/private/qsgrenderer_p.h>
+#include <QtQuick/private/qsgshadersourcebuilder_p.h>
QT_BEGIN_NAMESPACE
@@ -196,6 +197,12 @@ void QQuickCustomMaterialShader::updateState(const RenderState &state, QSGMateri
case QMetaType::QVector4D:
program()->setUniformValue(loc, qvariant_cast<QVector4D>(d.value));
break;
+ case QMetaType::QQuaternion:
+ {
+ QQuaternion q = qvariant_cast<QQuaternion>(d.value);
+ program()->setUniformValue(loc, q.x(), q.y(), q.z(), q.scalar());
+ }
+ break;
case QMetaType::QMatrix4x4:
program()->setUniformValue(loc, qvariant_cast<QMatrix4x4>(d.value));
break;
@@ -276,20 +283,15 @@ void QQuickCustomMaterialShader::compile()
m_log += program()->log();
}
- static const char fallbackVertexShader[] =
- "uniform highp mat4 qt_Matrix;"
- "attribute highp vec4 v;"
- "void main() { gl_Position = qt_Matrix * v; }";
- static const char fallbackFragmentShader[] =
- "void main() { gl_FragColor = vec4(1., 0., 1., 1.); }";
-
if (!m_compiled) {
qWarning("QQuickCustomMaterialShader: Shader compilation failed:");
qWarning() << program()->log();
- program()->removeAllShaders();
- program()->addShaderFromSourceCode(QOpenGLShader::Vertex, fallbackVertexShader);
- program()->addShaderFromSourceCode(QOpenGLShader::Fragment, fallbackFragmentShader);
+ QSGShaderSourceBuilder::initializeProgramFromFiles(
+ program(),
+ QStringLiteral(":/items/shaders/shadereffectfallback.vert"),
+ QStringLiteral(":/items/shaders/shadereffectfallback.frag"));
+
#ifndef QT_NO_DEBUG
for (int i = 0; i < attrCount; ++i) {
#else