37 Q_PROPERTY(QQmlListProperty<QQuick3DShaderUtilsRenderPass> passes READ passes)
39 QML_NAMED_ELEMENT(Effect)
41 explicit QQuick3DEffect(QQuick3DObject *parent =
nullptr);
43 QQmlListProperty<QQuick3DShaderUtilsRenderPass> passes();
46 static void qmlAppendPass(QQmlListProperty<QQuick3DShaderUtilsRenderPass> *list,
47 QQuick3DShaderUtilsRenderPass *pass);
48 static QQuick3DShaderUtilsRenderPass *qmlPassAt(QQmlListProperty<QQuick3DShaderUtilsRenderPass> *list,
50 static qsizetype qmlPassCount(QQmlListProperty<QQuick3DShaderUtilsRenderPass> *list);
51 static void qmlPassClear(QQmlListProperty<QQuick3DShaderUtilsRenderPass> *list);
53 void effectChainDirty();
56 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
57 void itemChange(QQuick3DObject::ItemChange ,
const QQuick3DObject::ItemChangeData &) override;
60 void onPropertyDirty();
61 void onTextureDirty();
65 friend class QQuick3DShaderUtilsTextureInput;
66 friend class QQuick3DSceneRenderer;
71 EffectChainDirty = 0x4
74 void setDynamicTextureMap(QQuick3DShaderUtilsTextureInput *textureMap);
75 void markDirty(QQuick3DEffect::Dirty type);
77 quint32 m_dirtyAttributes = 0xffffffff;
79 void updateSceneManager(QQuick3DSceneManager *sceneManager);
81 QVector<QQuick3DShaderUtilsRenderPass *> m_passes;
82 QSet<QQuick3DShaderUtilsTextureInput *> m_dynamicTextureMaps;