diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2016-11-15 09:57:32 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2016-12-09 14:14:28 +0000 |
commit | 4f2011cef1565bb9c9f2c0e92d63bb67fb3f661d (patch) | |
tree | 41b8220d83ac0fae130e3994403780125435db90 /src/plugins/sceneparsers/gltf/gltfimporter.h | |
parent | 79e308da8dd303070e989280f940a8bd6a274fcc (diff) |
GLTF exporting materials with custom shaders
Generic materials can now be exported with GLTF exporter
and imported back with GLTF importer.
Change-Id: I05f1f4d4be414d9a17c7ba91ee139e801dbccae8
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Diffstat (limited to 'src/plugins/sceneparsers/gltf/gltfimporter.h')
-rw-r--r-- | src/plugins/sceneparsers/gltf/gltfimporter.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/plugins/sceneparsers/gltf/gltfimporter.h b/src/plugins/sceneparsers/gltf/gltfimporter.h index 5033c4f05..8f6b9b356 100644 --- a/src/plugins/sceneparsers/gltf/gltfimporter.h +++ b/src/plugins/sceneparsers/gltf/gltfimporter.h @@ -52,12 +52,13 @@ // We mean it. // -#include <QtCore/QJsonDocument> -#include <QtCore/QMultiHash> +#include <QtCore/qjsondocument.h> +#include <QtCore/qjsonobject.h> +#include <QtCore/qhash.h> #include <Qt3DRender/qattribute.h> #include <Qt3DRender/qbuffer.h> -#include <Qt3DRender/private/qsceneimporter_p.h> +#include <private/qsceneimporter_p.h> QT_BEGIN_NAMESPACE @@ -80,6 +81,7 @@ class QTechnique; class QParameter; class QGeometryRenderer; class QAbstractLight; +class QRenderPass; Q_DECLARE_LOGGING_CATEGORY(GLTFImporterLog) @@ -141,7 +143,7 @@ private: static void renameFromJson(const QJsonObject& json, QObject * const object ); static bool hasStandardUniformNameFromSemantic(const QString &semantic); static QString standardAttributeNameFromSemantic(const QString &semantic); - static QParameter *parameterFromTechnique(QTechnique *technique, const QString ¶meterName); + QParameter *parameterFromTechnique(QTechnique *technique, const QString ¶meterName); Qt3DCore::QEntity *defaultScene(); QMaterial *material(const QString &id); @@ -160,6 +162,8 @@ private: void processJSONImage(const QString &id, const QJsonObject &jsonObject); void processJSONTexture(const QString &id, const QJsonObject &jsonObject); void processJSONExtensions(const QString &id, const QJsonObject &jsonObject); + void processJSONEffect(const QString &id, const QJsonObject &jsonObject); + void processJSONRenderPass(const QString &id, const QJsonObject &jsonObject); void loadBufferData(); void unloadBufferData(); @@ -172,6 +176,9 @@ private: static QRenderState *buildStateEnable(int state); static QRenderState *buildState(const QString& functionName, const QJsonValue &value, int &type); + QParameter *buildParameter(const QString &key, const QJsonObject ¶mObj); + void populateRenderStates(QRenderPass *pass, const QJsonObject &states); + void addProgramToPass(QRenderPass *pass, const QString &progName); QMaterial *materialWithCustomShader(const QString &id, const QJsonObject &jsonObj); QMaterial *commonMaterial(const QJsonObject &jsonObj); @@ -200,6 +207,9 @@ private: QHash<QString, QShaderProgram*> m_programs; QHash<QString, QTechnique *> m_techniques; + QHash<QString, QRenderPass *> m_renderPasses; + QHash<QString, QEffect *> m_effects; + QHash<QTechnique *, QList<QParameter *> > m_techniqueParameters; QHash<QParameter*, ParameterData> m_parameterDataDict; QHash<QString, QAbstractTexture*> m_textures; |