summaryrefslogtreecommitdiffstats
path: root/src/plugins/sceneparsers/gltf/gltfimporter.h
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2016-11-15 09:57:32 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2016-12-09 14:14:28 +0000
commit4f2011cef1565bb9c9f2c0e92d63bb67fb3f661d (patch)
tree41b8220d83ac0fae130e3994403780125435db90 /src/plugins/sceneparsers/gltf/gltfimporter.h
parent79e308da8dd303070e989280f940a8bd6a274fcc (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.h18
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 &parameterName);
+ QParameter *parameterFromTechnique(QTechnique *technique, const QString &parameterName);
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 &paramObj);
+ 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;