35 Q_PROPERTY(QQmlListProperty<QQuick3DShaderUtilsRenderPass> passes READ passes)
37 QML_NAMED_ELEMENT(Effect)
39 explicit QQuick3DEffect(QQuick3DObject *parent =
nullptr);
41 QQmlListProperty<QQuick3DShaderUtilsRenderPass> passes();
44 static void qmlAppendPass(QQmlListProperty<QQuick3DShaderUtilsRenderPass> *list,
45 QQuick3DShaderUtilsRenderPass *pass);
46 static QQuick3DShaderUtilsRenderPass *qmlPassAt(QQmlListProperty<QQuick3DShaderUtilsRenderPass> *list,
48 static qsizetype qmlPassCount(QQmlListProperty<QQuick3DShaderUtilsRenderPass> *list);
49 static void qmlPassClear(QQmlListProperty<QQuick3DShaderUtilsRenderPass> *list);
51 void effectChainDirty();
54 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
55 void itemChange(QQuick3DObject::ItemChange ,
const QQuick3DObject::ItemChangeData &) override;
58 void onPropertyDirty();
59 void onTextureDirty();
63 friend class QQuick3DShaderUtilsTextureInput;
64 friend class QQuick3DSceneRenderer;
69 EffectChainDirty = 0x4
72 void setDynamicTextureMap(QQuick3DShaderUtilsTextureInput *textureMap);
73 void markDirty(QQuick3DEffect::Dirty type);
75 quint32 m_dirtyAttributes = 0xffffffff;
77 void updateSceneManager(QQuick3DSceneManager *sceneManager);
79 QVector<QQuick3DShaderUtilsRenderPass *> m_passes;
80 QSet<QQuick3DShaderUtilsTextureInput *> m_dynamicTextureMaps;