diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-01-09 10:10:13 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-01-18 15:30:47 +0100 |
commit | 074263ba87e73c67e355ee5dc5037477090f6957 (patch) | |
tree | 18bf0672f9c93c5a1a64d50d6723791f50637f6f /src/quick3d/quick3drenderer/items/quick3dshaderdataarray.h | |
parent | 67ffbd60ed6f383f3629a1848587da049c3ff3c9 (diff) |
RenderShaderData handling entirely reworked
- UBO created for each Shader/ShaderData
- We deal with nested QShaderData by looking for QNodeId only instead of looking
for QShaderData*
- We update only the values that have changed into the UBO
- A CleanupFrameJob was added to properly clear all RenderShaderData set for
updates after a frame
- RenderShaderData is cleared of all UBO rendering logic
- BlockToUBO contains all the updated properties for a given UBO in a
RenderView, that solves the issue of properties being updated in the
RenderShaderData while performing a draw call
Note: the QShaderData transformed properties were commented for now
deferred-examples and playground qml updates to follow
Change-Id: I8ecf155288c154f41b505cf465d31f5eb8a71b5d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d/quick3drenderer/items/quick3dshaderdataarray.h')
-rw-r--r-- | src/quick3d/quick3drenderer/items/quick3dshaderdataarray.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/quick3d/quick3drenderer/items/quick3dshaderdataarray.h b/src/quick3d/quick3drenderer/items/quick3dshaderdataarray.h index 710d16519..31defb3a9 100644 --- a/src/quick3d/quick3drenderer/items/quick3dshaderdataarray.h +++ b/src/quick3d/quick3drenderer/items/quick3dshaderdataarray.h @@ -51,6 +51,8 @@ QT_BEGIN_NAMESPACE namespace Qt3D { +class QShaderData; + namespace Render { namespace Quick { @@ -61,21 +63,21 @@ class Quick3DShaderData; class QT3DQUICKRENDERERSHARED_EXPORT Quick3DShaderDataArray : public QNode { Q_OBJECT - Q_PROPERTY(QQmlListProperty<Qt3D::Render::Quick::Quick3DShaderData> values READ valuesList) + Q_PROPERTY(QQmlListProperty<Qt3D::QShaderData> values READ valuesList) Q_CLASSINFO("DefaultProperty", "values") public: explicit Quick3DShaderDataArray(QNode *parent = 0); - QQmlListProperty<Quick3DShaderData> valuesList(); - QList<Quick3DShaderData *> values() const; + QQmlListProperty<QShaderData> valuesList(); + QList<QShaderData *> values() const; protected: void copy(const QNode *ref) Q_DECL_OVERRIDE; private: - static void appendValue(QQmlListProperty<Quick3DShaderData> *list, Quick3DShaderData *bar); - static Quick3DShaderData *valueAt(QQmlListProperty<Quick3DShaderData> *list, int index); - static int valueCount(QQmlListProperty<Quick3DShaderData> *list); - static void clearValues(QQmlListProperty<Quick3DShaderData> *list); + static void appendValue(QQmlListProperty<QShaderData> *list, QShaderData *bar); + static QShaderData *valueAt(QQmlListProperty<QShaderData> *list, int index); + static int valueCount(QQmlListProperty<QShaderData> *list); + static void clearValues(QQmlListProperty<QShaderData> *list); Q_DECLARE_PRIVATE(Quick3DShaderDataArray) QT3D_CLONEABLE(Quick3DShaderDataArray) }; @@ -88,6 +90,6 @@ private: QT_END_NAMESPACE -Q_DECLARE_METATYPE(Qt3D::Render::Quick::Quick3DShaderDataArray *) +Q_DECLARE_METATYPE(Qt3D::Render::Quick::Quick3DShaderDataArray*) #endif // QT3D_RENDER_QUICK_QUICK3DSHADERDATAARRAY_H |