diff --git a/src/quick3d/qquick3deffect.cpp b/src/quick3d/qquick3deffect.cpp index 43284c16b49bcab3a07e542f800e3870c485f334..f09b8bf67e0d3de68248cd4ba2b60765b5161bc1 100644 --- a/src/quick3d/qquick3deffect.cpp +++ b/src/quick3d/qquick3deffect.cpp @@ -258,7 +258,15 @@ QSSGRenderGraphObject *QQuick3DEffect::updateSpatialNode(QSSGRenderGraphObject * // Properties -> uniforms QByteArray uniforms; const int propCount = metaObject()->propertyCount(); - const int propOffset = metaObject()->propertyOffset(); + int propOffset = metaObject()->propertyOffset(); + + // Effect can have multilayered inheritance structure, so find the actual propOffset + const QMetaObject *superClass = metaObject()->superClass(); + while (superClass && qstrcmp(superClass->className(), "QQuick3DEffect") != 0) { + propOffset = superClass->propertyOffset(); + superClass = superClass->superClass(); + } + QVector<QMetaProperty> textureProperties; // We'll deal with these later for (int i = propOffset; i != propCount; ++i) { const auto property = metaObject()->property(i);