diff options
author | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-10-06 15:41:51 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-10-06 15:41:52 +0200 |
commit | 50559ea3325c0215da155911836c0416d0027716 (patch) | |
tree | 15c6a93f310e125cbbae710fef73b5b859c3fc20 | |
parent | 8683c285d20a2235ed92d90ab14fed1c039bcdf3 (diff) | |
parent | e7a846b61d4635a1524fa16ce029ce47bc378c7e (diff) | |
download | qt3d-50559ea3325c0215da155911836c0416d0027716.tar.gz |
Merge 5.7 into 5.7.1
Change-Id: Ic6d5cf08de0765d1555ef4e41a404af4b818c5a0
-rw-r--r-- | examples/qt3d/basicshapes-cpp/main.cpp | 10 | ||||
-rw-r--r-- | src/input/frontend/qbuttonaxisinput.cpp | 4 | ||||
-rw-r--r-- | src/input/frontend/qbuttonaxisinput_p.h | 2 | ||||
-rw-r--r-- | src/quick3d/imports/core/plugins.qmltypes | 145 | ||||
-rw-r--r-- | src/quick3d/imports/extras/plugins.qmltypes | 90 | ||||
-rw-r--r-- | src/quick3d/imports/input/plugins.qmltypes | 42 | ||||
-rw-r--r-- | src/quick3d/imports/logic/plugins.qmltypes | 3 | ||||
-rw-r--r-- | src/quick3d/imports/render/plugins.qmltypes | 1246 | ||||
-rw-r--r-- | src/quick3d/imports/scene3d/plugins.qmltypes | 2 | ||||
-rw-r--r-- | src/render/backend/renderview.cpp | 3 | ||||
-rw-r--r-- | src/render/framegraph/framegraphnode.cpp | 33 | ||||
-rw-r--r-- | src/render/framegraph/framegraphnode_p.h | 2 | ||||
-rw-r--r-- | src/render/frontend/qrendersettings.h | 2 | ||||
-rw-r--r-- | src/render/materialsystem/shaderdata.cpp | 2 | ||||
-rw-r--r-- | tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp | 12 | ||||
-rw-r--r-- | tests/auto/render/framegraphnode/tst_framegraphnode.cpp | 125 | ||||
-rw-r--r-- | tools/qgltf/qgltf.cpp | 118 | ||||
-rw-r--r-- | tools/qgltf/qgltf.pro | 3 |
18 files changed, 1650 insertions, 194 deletions
diff --git a/examples/qt3d/basicshapes-cpp/main.cpp b/examples/qt3d/basicshapes-cpp/main.cpp index b4b01ff30..fffb83a20 100644 --- a/examples/qt3d/basicshapes-cpp/main.cpp +++ b/examples/qt3d/basicshapes-cpp/main.cpp @@ -73,6 +73,7 @@ #include <Qt3DRender/qtexture.h> #include <Qt3DRender/qrenderpass.h> #include <Qt3DRender/qsceneloader.h> +#include <Qt3DRender/qpointlight.h> #include <Qt3DCore/qtransform.h> #include <Qt3DCore/qaspectengine.h> @@ -116,6 +117,15 @@ int main(int argc, char **argv) cameraEntity->setUpVector(QVector3D(0, 1, 0)); cameraEntity->setViewCenter(QVector3D(0, 0, 0)); + Qt3DCore::QEntity *lightEntity = new Qt3DCore::QEntity(rootEntity); + Qt3DRender::QPointLight *light = new Qt3DRender::QPointLight(lightEntity); + light->setColor("white"); + light->setIntensity(1); + lightEntity->addComponent(light); + Qt3DCore::QTransform *lightTransform = new Qt3DCore::QTransform(lightEntity); + lightTransform->setTranslation(cameraEntity->position()); + lightEntity->addComponent(lightTransform); + // For camera controls Qt3DExtras::QFirstPersonCameraController *camController = new Qt3DExtras::QFirstPersonCameraController(rootEntity); camController->setCamera(cameraEntity); diff --git a/src/input/frontend/qbuttonaxisinput.cpp b/src/input/frontend/qbuttonaxisinput.cpp index 6d95ad187..aaf1b6a1c 100644 --- a/src/input/frontend/qbuttonaxisinput.cpp +++ b/src/input/frontend/qbuttonaxisinput.cpp @@ -65,6 +65,8 @@ namespace Qt3DInput { */ /*! \qmlproperty real ButtonAxisInput::scale + Specifies how the axis output value is scaled. No scaling is applied by default + so it defaults to 1. */ /*! @@ -97,6 +99,8 @@ QButtonAxisInput::~QButtonAxisInput() /*! \property QButtonAxisInput::scale + Specifies how the axis output value is scaled. No scaling is applied by default + so it defaults to 1. */ void QButtonAxisInput::setScale(float scale) { diff --git a/src/input/frontend/qbuttonaxisinput_p.h b/src/input/frontend/qbuttonaxisinput_p.h index e56e58575..849498f06 100644 --- a/src/input/frontend/qbuttonaxisinput_p.h +++ b/src/input/frontend/qbuttonaxisinput_p.h @@ -62,7 +62,7 @@ class QButtonAxisInputPrivate : public QAbstractAxisInputPrivate public: QButtonAxisInputPrivate() : QAbstractAxisInputPrivate() - , m_scale(0.0f) + , m_scale(1.0f) , m_acceleration(-1.0f) , m_deceleration(-1.0f) {} diff --git a/src/quick3d/imports/core/plugins.qmltypes b/src/quick3d/imports/core/plugins.qmltypes index 310bfe93e..ed06f8e0c 100644 --- a/src/quick3d/imports/core/plugins.qmltypes +++ b/src/quick3d/imports/core/plugins.qmltypes @@ -7,7 +7,7 @@ import QtQuick.tooling 1.2 // 'qmlplugindump -nonrelocatable Qt3D.Core 2.0' Module { - dependencies: ["QtQuick 2.0"] + dependencies: ["QtQuick 2.7"] Component { name: "Qt3DCore::QComponent" prototype: "Qt3DCore::QNode" @@ -35,6 +35,7 @@ Module { name: "enabledChanged" Parameter { name: "enabled"; type: "bool" } } + Signal { name: "nodeDestroyed" } Method { name: "setParent" Parameter { name: "parent"; type: "QNode"; isPointer: true } @@ -46,10 +47,127 @@ Module { } Component { name: "Qt3DCore::QTransform" - defaultProperty: "data" - prototype: "Qt3DCore::QTransform" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Core/Transform 2.0"] + Property { name: "matrix"; type: "QMatrix4x4" } + Property { name: "scale"; type: "float" } + Property { name: "scale3D"; type: "QVector3D" } + Property { name: "rotation"; type: "QQuaternion" } + Property { name: "translation"; type: "QVector3D" } + Property { name: "rotationX"; type: "float" } + Property { name: "rotationY"; type: "float" } + Property { name: "rotationZ"; type: "float" } + Signal { + name: "scaleChanged" + Parameter { name: "scale"; type: "float" } + } + Signal { + name: "scale3DChanged" + Parameter { name: "scale"; type: "QVector3D" } + } + Signal { + name: "rotationChanged" + Parameter { name: "rotation"; type: "QQuaternion" } + } + Signal { + name: "translationChanged" + Parameter { name: "translation"; type: "QVector3D" } + } + Signal { + name: "rotationXChanged" + Parameter { name: "rotationX"; type: "float" } + } + Signal { + name: "rotationYChanged" + Parameter { name: "rotationY"; type: "float" } + } + Signal { + name: "rotationZChanged" + Parameter { name: "rotationZ"; type: "float" } + } + Method { + name: "setScale" + Parameter { name: "scale"; type: "float" } + } + Method { + name: "setScale3D" + Parameter { name: "scale"; type: "QVector3D" } + } + Method { + name: "setRotation" + Parameter { name: "rotation"; type: "QQuaternion" } + } + Method { + name: "setTranslation" + Parameter { name: "translation"; type: "QVector3D" } + } + Method { + name: "setMatrix" + Parameter { name: "matrix"; type: "QMatrix4x4" } + } + Method { + name: "setRotationX" + Parameter { name: "rotationX"; type: "float" } + } + Method { + name: "setRotationY" + Parameter { name: "rotationY"; type: "float" } + } + Method { + name: "setRotationZ" + Parameter { name: "rotationZ"; type: "float" } + } + Method { + name: "fromAxisAndAngle" + type: "QQuaternion" + Parameter { name: "axis"; type: "QVector3D" } + Parameter { name: "angle"; type: "float" } + } + Method { + name: "fromAxisAndAngle" + type: "QQuaternion" + Parameter { name: "x"; type: "float" } + Parameter { name: "y"; type: "float" } + Parameter { name: "z"; type: "float" } + Parameter { name: "angle"; type: "float" } + } + Method { + name: "fromAxesAndAngles" + type: "QQuaternion" + Parameter { name: "axis1"; type: "QVector3D" } + Parameter { name: "angle1"; type: "float" } + Parameter { name: "axis2"; type: "QVector3D" } + Parameter { name: "angle2"; type: "float" } + } + Method { + name: "fromAxesAndAngles" + type: "QQuaternion" + Parameter { name: "axis1"; type: "QVector3D" } + Parameter { name: "angle1"; type: "float" } + Parameter { name: "axis2"; type: "QVector3D" } + Parameter { name: "angle2"; type: "float" } + Parameter { name: "axis3"; type: "QVector3D" } + Parameter { name: "angle3"; type: "float" } + } + Method { + name: "fromEulerAngles" + type: "QQuaternion" + Parameter { name: "eulerAngles"; type: "QVector3D" } + } + Method { + name: "fromEulerAngles" + type: "QQuaternion" + Parameter { name: "pitch"; type: "float" } + Parameter { name: "yaw"; type: "float" } + Parameter { name: "roll"; type: "float" } + } + Method { + name: "rotateAround" + type: "QMatrix4x4" + Parameter { name: "point"; type: "QVector3D" } + Parameter { name: "angle"; type: "float" } + Parameter { name: "axis"; type: "QVector3D" } + } } Component { name: "Qt3DCore::Quick::QQuaternionAnimation" @@ -112,8 +230,10 @@ Module { Component { name: "Qt3DCore::Quick::Quick3DEntityLoader" defaultProperty: "data" - prototype: "Qt3DCore::Quick::Quick3DEntityLoader" - Property { name: "components"; type: "Qt3DCore::QComponent"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QEntity" + exports: ["Qt3D.Core/EntityLoader 2.0"] + Property { name: "entity"; type: "Qt3DCore::QEntity"; isPointer: true; isReadonly: true } + Property { name: "source"; type: "QUrl" } } Component { name: "Qt3DCore::Quick::Quick3DNode" @@ -128,8 +248,13 @@ Module { Component { name: "Qt3DCore::Quick::Quick3DNodeInstantiator" defaultProperty: "delegate" - prototype: "Qt3DCore::Quick::Quick3DNodeInstantiator" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Core/NodeInstantiator 2.0"] + Property { name: "active"; type: "bool" } + Property { name: "asynchronous"; type: "bool" } + Property { name: "model"; type: "QVariant" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "delegate"; type: "QQmlComponent" } + Property { name: "object"; type: "QObject"; isReadonly: true } } } diff --git a/src/quick3d/imports/extras/plugins.qmltypes b/src/quick3d/imports/extras/plugins.qmltypes index d30b2591a..6a7e1203d 100644 --- a/src/quick3d/imports/extras/plugins.qmltypes +++ b/src/quick3d/imports/extras/plugins.qmltypes @@ -762,6 +762,14 @@ Module { name: "setBoundingVolumePositionAttribute" Parameter { name: "boundingVolumePositionAttribute"; type: "QAttribute"; isPointer: true } } + Method { + name: "addAttribute" + Parameter { name: "attribute"; type: "Qt3DRender::QAttribute"; isPointer: true } + } + Method { + name: "removeAttribute" + Parameter { name: "attribute"; type: "Qt3DRender::QAttribute"; isPointer: true } + } } Component { name: "Qt3DRender::QGeometryRenderer" @@ -787,6 +795,7 @@ Module { Property { name: "vertexCount"; type: "int" } Property { name: "indexOffset"; type: "int" } Property { name: "firstInstance"; type: "int" } + Property { name: "firstVertex"; type: "int" } Property { name: "restartIndexValue"; type: "int" } Property { name: "verticesPerPatch"; type: "int" } Property { name: "primitiveRestartEnabled"; type: "bool" } @@ -809,6 +818,10 @@ Module { Parameter { name: "firstInstance"; type: "int" } } Signal { + name: "firstVertexChanged" + Parameter { name: "firstVertex"; type: "int" } + } + Signal { name: "restartIndexValueChanged" Parameter { name: "restartIndexValue"; type: "int" } } @@ -845,6 +858,10 @@ Module { Parameter { name: "firstInstance"; type: "int" } } Method { + name: "setFirstVertex" + Parameter { name: "firstVertex"; type: "int" } + } + Method { name: "setRestartIndexValue" Parameter { name: "index"; type: "int" } } @@ -866,6 +883,35 @@ Module { } } Component { + prototype: "Qt3DCore::QNode" + name: "Qt3D.Extras/DefaultAlphaEffect 2.0" + exports: ["Qt3D.Extras/DefaultAlphaEffect 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "vertexES"; type: "string" } + Property { name: "fragmentES"; type: "string" } + Property { name: "vertex"; type: "string" } + Property { name: "fragment"; type: "string" } + Property { name: "sourceRgbArg"; type: "int" } + Property { name: "destinationRgbArg"; type: "int" } + Property { name: "sourceAlphaArg"; type: "int" } + Property { name: "destinationAlphaArg"; type: "int" } + Property { name: "blendFunctionArg"; type: "int" } + } + Component { + prototype: "Qt3DCore::QNode" + name: "Qt3D.Extras/DefaultEffect 2.0" + exports: ["Qt3D.Extras/DefaultEffect 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "vertexES"; type: "string" } + Property { name: "fragmentES"; type: "string" } + Property { name: "vertex"; type: "string" } + Property { name: "fragment"; type: "string" } + } + Component { prototype: "Qt3DCore::QComponent" name: "Qt3D.Extras/DiffuseMapMaterial 2.0" exports: ["Qt3D.Extras/DiffuseMapMaterial 2.0"] @@ -919,6 +965,8 @@ Module { Property { name: "camera"; type: "Qt3DRender::QCamera"; isPointer: true } Property { name: "linearSpeed"; type: "double" } Property { name: "lookSpeed"; type: "double" } + Property { name: "acceleration"; type: "double" } + Property { name: "deceleration"; type: "double" } } Component { prototype: "Qt3DCore::QNode" @@ -957,6 +1005,18 @@ Module { } } Component { + prototype: "Qt3DCore::QNode" + name: "Qt3D.Extras/NormalDiffuseMapAlphaEffect 2.0" + exports: ["Qt3D.Extras/NormalDiffuseMapAlphaEffect 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "vertexES"; type: "string" } + Property { name: "fragmentES"; type: "string" } + Property { name: "vertex"; type: "string" } + Property { name: "fragment"; type: "string" } + } + Component { prototype: "Qt3DCore::QComponent" name: "Qt3D.Extras/NormalDiffuseMapAlphaMaterial 2.0" exports: ["Qt3D.Extras/NormalDiffuseMapAlphaMaterial 2.0"] @@ -1027,8 +1087,8 @@ Module { } Component { prototype: "Qt3DCore::QNode" - name: "Qt3D.Extras/OrbitController 2.0" - exports: ["Qt3D.Extras/OrbitController 2.0"] + name: "Qt3D.Extras/OrbitCameraController 2.0" + exports: ["Qt3D.Extras/OrbitCameraController 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" @@ -1078,6 +1138,11 @@ Module { Property { name: "specular"; type: "QColor" } Property { name: "shininess"; type: "double" } Property { name: "alpha"; type: "double" } + Property { name: "sourceRgbArg"; type: "int" } + Property { name: "destinationRgbArg"; type: "int" } + Property { name: "sourceAlphaArg"; type: "int" } + Property { name: "destinationAlphaArg"; type: "int" } + Property { name: "blendFunctionArg"; type: "int" } Property { name: "effect"; type: "Qt3DRender::QEffect"; isPointer: true } Signal { name: "effectChanged" @@ -1110,15 +1175,22 @@ Module { } } Component { - prototype: "Qt3DCore::QNode" - name: "Qt3D.Extras/SkyboxEntity 2.0" - exports: ["Qt3D.Extras/SkyboxEntity 2.0"] + prototype: "Qt3DCore::QComponent" + name: "Qt3D.Extras/TextureMaterial 2.0" + exports: ["Qt3D.Extras/TextureMaterial 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "baseName"; type: "string" } - Property { name: "extension"; type: "string" } - Property { name: "skyboxTexture"; type: "Qt3DRender::QTextureCubeMap"; isPointer: true } - Property { name: "cameraPosition"; type: "QVector3D" } + Property { name: "texture"; type: "Qt3DRender::QTexture2D"; isPointer: true } + Property { name: "textureOffset"; type: "QVector2D" } + Property { name: "effect"; type: "Qt3DRender::QEffect"; isPointer: true } + Signal { + name: "effectChanged" + Parameter { name: "effect"; type: "QEffect"; isPointer: true } + } + Method { + name: "setEffect" + Parameter { name: "effect"; type: "QEffect"; isPointer: true } + } } } diff --git a/src/quick3d/imports/input/plugins.qmltypes b/src/quick3d/imports/input/plugins.qmltypes index 68ff9fe32..860ab4d68 100644 --- a/src/quick3d/imports/input/plugins.qmltypes +++ b/src/quick3d/imports/input/plugins.qmltypes @@ -7,7 +7,7 @@ import QtQuick.tooling 1.2 // 'qmlplugindump -nonrelocatable Qt3D.Input 2.0' Module { - dependencies: ["QtQuick 2.0"] + dependencies: ["QtQuick 2.7"] Component { name: "Qt3DCore::QComponent" prototype: "Qt3DCore::QNode" @@ -34,6 +34,7 @@ Module { name: "enabledChanged" Parameter { name: "enabled"; type: "bool" } } + Signal { name: "nodeDestroyed" } Method { name: "setParent" Parameter { name: "parent"; type: "QNode"; isPointer: true } @@ -100,7 +101,6 @@ Module { name: "Qt3DInput::Input::Quick::Quick3DPhysicalDevice" prototype: "Qt3DInput::QAbstractPhysicalDevice" exports: ["Qt3D.Input/QAbstractPhysicalDevice 2.0"] - isCreatable: false exportMetaObjectRevisions: [0] Property { name: "axisSettings"; type: "Qt3DInput::QAxisSetting"; isList: true; isReadonly: true } } @@ -262,8 +262,8 @@ Module { } Component { name: "Qt3DInput::QGamepadInput" - prototype: "Qt3DInput::QAbstractPhysicalDevice" - Property { name: "deviceId"; type: "int" } + prototype: "Qt3DInput::QGamepadInput" + Property { name: "axisSettings"; type: "Qt3DInput::QAxisSetting"; isList: true; isReadonly: true } } Component { name: "Qt3DInput::QInputChord" @@ -336,8 +336,18 @@ Module { } Component { name: "Qt3DInput::QKeyboardDevice" - prototype: "Qt3DInput::QKeyboardDevice" - Property { name: "axisSettings"; type: "Qt3DInput::QAxisSetting"; isList: true; isReadonly: true } + prototype: "Qt3DInput::QAbstractPhysicalDevice" + exports: ["Qt3D.Input/KeyboardDevice 2.0"] + Property { + name: "activeInput" + type: "Qt3DInput::QKeyboardHandler" + isReadonly: true + isPointer: true + } + Signal { + name: "activeInputChanged" + Parameter { name: "activeInput"; type: "QKeyboardHandler"; isPointer: true } + } } Component { name: "Qt3DInput::QKeyboardHandler" @@ -526,8 +536,24 @@ Module { Component { name: "Qt3DInput::QLogicalDevice"; prototype: "Qt3DCore::QComponent" } Component { name: "Qt3DInput::QMouseDevice" - prototype: "Qt3DInput::QMouseDevice" - Property { name: "axisSettings"; type: "Qt3DInput::QAxisSetting"; isList: true; isReadonly: true } + prototype: "Qt3DInput::QAbstractPhysicalDevice" + exports: ["Qt3D.Input/MouseDevice 2.0"] + Enum { + name: "Axis" + values: { + "X": 0, + "Y": 1 + } + } + Property { name: "sensitivity"; type: "float" } + Signal { + name: "sensitivityChanged" + Parameter { name: "value"; type: "float" } + } + Method { + name: "setSensitivity" + Parameter { name: "value"; type: "float" } + } } Component { name: "Qt3DInput::QMouseEvent" diff --git a/src/quick3d/imports/logic/plugins.qmltypes b/src/quick3d/imports/logic/plugins.qmltypes index 036ca96f3..0c0ccc847 100644 --- a/src/quick3d/imports/logic/plugins.qmltypes +++ b/src/quick3d/imports/logic/plugins.qmltypes @@ -7,7 +7,7 @@ import QtQuick.tooling 1.2 // 'qmlplugindump -nonrelocatable Qt3D.Logic 2.0' Module { - dependencies: ["QtQuick 2.0"] + dependencies: ["QtQuick 2.7"] Component { name: "Qt3DCore::QComponent" prototype: "Qt3DCore::QNode" @@ -34,6 +34,7 @@ Module { name: "enabledChanged" Parameter { name: "enabled"; type: "bool" } } + Signal { name: "nodeDestroyed" } Method { name: "setParent" Parameter { name: "parent"; type: "QNode"; isPointer: true } diff --git a/src/quick3d/imports/render/plugins.qmltypes b/src/quick3d/imports/render/plugins.qmltypes index af491af6c..a6528daed 100644 --- a/src/quick3d/imports/render/plugins.qmltypes +++ b/src/quick3d/imports/render/plugins.qmltypes @@ -7,7 +7,7 @@ import QtQuick.tooling 1.2 // 'qmlplugindump -nonrelocatable Qt3D.Render 2.0' Module { - dependencies: ["Qt3D.Core 2.0"] + dependencies: ["QtQuick 2.7"] Component { name: "QWindow" prototype: "QObject" @@ -171,22 +171,380 @@ Module { Method { name: "requestUpdate"; revision: 3 } } Component { - name: "Qt3DRender::QAbstractLight" + name: "Qt3DCore::QComponent" + prototype: "Qt3DCore::QNode" + Property { name: "isShareable"; type: "bool" } + Signal { + name: "shareableChanged" + Parameter { name: "isShareable"; type: "bool" } + } + Method { + name: "setShareable" + Parameter { name: "isShareable"; type: "bool" } + } + } + Component { name: "Qt3DCore::QEntity"; prototype: "Qt3DCore::QNode" } + Component { + name: "Qt3DCore::QNode" + prototype: "QObject" + Property { name: "parent"; type: "Qt3DCore::QNode"; isPointer: true } + Property { name: "enabled"; type: "bool" } + Signal { + name: "parentChanged" + Parameter { name: "parent"; type: "QObject"; isPointer: true } + } + Signal { + name: "enabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { name: "nodeDestroyed" } + Method { + name: "setParent" + Parameter { name: "parent"; type: "QNode"; isPointer: true } + } + Method { + name: "setEnabled" + Parameter { name: "isEnabled"; type: "bool" } + } + } + Component { + name: "Qt3DCore::Quick::Quick3DNode" defaultProperty: "data" - prototype: "Qt3DRender::QAbstractLight" + prototype: "Qt3DRender::QCameraSelector" + exports: ["Qt3D.Render/CameraSelector 2.0"] + exportMetaObjectRevisions: [0] Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } } Component { + name: "Qt3DRender::QAbstractLight" + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/Light 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Type" + values: { + "PointLight": 0, + "DirectionalLight": 1, + "SpotLight": 2 + } + } + Property { name: "type"; type: "Type"; isReadonly: true } + Property { name: "color"; type: "QColor" } + Property { name: "intensity"; type: "float" } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "intensityChanged" + Parameter { name: "intensity"; type: "float" } + } + Method { + name: "setColor" + Parameter { name: "color"; type: "QColor" } + } + Method { + name: "setIntensity" + Parameter { name: "intensity"; type: "float" } + } + } + Component { name: "Qt3DRender::QAbstractTexture" - defaultProperty: "data" - prototype: "Qt3DRender::QAbstractTexture" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/Texture 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Status" + values: { + "None": 0, + "Loading": 1, + "Ready": 2, + "Error": 3 + } + } + Enum { + name: "Target" + values: { + "TargetAutomatic": 0, + "Target1D": 3552, + "Target1DArray": 35864, + "Target2D": 3553, + "Target2DArray": 35866, + "Target3D": 32879, + "TargetCubeMap": 34067, + "TargetCubeMapArray": 36873, + "Target2DMultisample": 37120, + "Target2DMultisampleArray": 37122, + "TargetRectangle": 34037, + "TargetBuffer": 35882 + } + } + Enum { + name: "TextureFormat" + values: { + "NoFormat": 0, + "Automatic": 1, + "R8_UNorm": 33321, + "RG8_UNorm": 33323, + "RGB8_UNorm": 32849, + "RGBA8_UNorm": 32856, + "R16_UNorm": 33322, + "RG16_UNorm": 33324, + "RGB16_UNorm": 32852, + "RGBA16_UNorm": 32859, + "R8_SNorm": 36756, + "RG8_SNorm": 36757, + "RGB8_SNorm": 36758, + "RGBA8_SNorm": 36759, + "R16_SNorm": 36760, + "RG16_SNorm": 36761, + "RGB16_SNorm": 36762, + "RGBA16_SNorm": 36763, + "R8U": 33330, + "RG8U": 33336, + "RGB8U": 36221, + "RGBA8U": 36220, + "R16U": 33332, + "RG16U": 33338, + "RGB16U": 36215, + "RGBA16U": 36214, + "R32U": 33334, + "RG32U": 33340, + "RGB32U": 36209, + "RGBA32U": 36208, + "R8I": 33329, + "RG8I": 33335, + "RGB8I": 36239, + "RGBA8I": 36238, + "R16I": 33331, + "RG16I": 33337, + "RGB16I": 36233, + "RGBA16I": 36232, + "R32I": 33333, + "RG32I": 33339, + "RGB32I": 36227, + "RGBA32I": 36226, + "R16F": 33325, + "RG16F": 33327, + "RGB16F": 34843, + "RGBA16F": 34842, + "R32F": 33326, + "RG32F": 33328, + "RGB32F": 34837, + "RGBA32F": 34836, + "RGB9E5": 35901, + "RG11B10F": 35898, + "RG3B2": 10768, + "R5G6B5": 36194, + "RGB5A1": 32855, + "RGBA4": 32854, + "RGB10A2": 36975, + "D16": 33189, + "D24": 33190, + "D24S8": 35056, + "D32": 33191, + "D32F": 36012, + "D32FS8X24": 36013, + "RGB_DXT1": 33776, + "RGBA_DXT1": 33777, + "RGBA_DXT3": 33778, + "RGBA_DXT5": 33779, + "R_ATI1N_UNorm": 36283, + "R_ATI1N_SNorm": 36284, + "RG_ATI2N_UNorm": 36285, + "RG_ATI2N_SNorm": 36286, + "RGB_BP_UNSIGNED_FLOAT": 36495, + "RGB_BP_SIGNED_FLOAT": 36494, + "RGB_BP_UNorm": 36492, + "R11_EAC_UNorm": 37488, + "R11_EAC_SNorm": 37489, + "RG11_EAC_UNorm": 37490, + "RG11_EAC_SNorm": 37491, + "RGB8_ETC2": 37492, + "SRGB8_ETC2": 37493, + "RGB8_PunchThrough_Alpha1_ETC2": 37494, + "SRGB8_PunchThrough_Alpha1_ETC2": 37495, + "RGBA8_ETC2_EAC": 37496, + "SRGB8_Alpha8_ETC2_EAC": 37497, + "RGB8_ETC1": 36196, + "SRGB8": 35905, + "SRGB8_Alpha8": 35907, + "SRGB_DXT1": 35916, + "SRGB_Alpha_DXT1": 35917, + "SRGB_Alpha_DXT3": 35918, + "SRGB_Alpha_DXT5": 35919, + "SRGB_BP_UNorm": 36493, + "DepthFormat": 6402, + "AlphaFormat": 6406, + "RGBFormat": 6407, + "RGBAFormat": 6408, + "LuminanceFormat": 6409, + "LuminanceAlphaFormat": 6410 + } + } + Enum { + name: "Filter" + values: { + "Nearest": 9728, + "Linear": 9729, + "NearestMipMapNearest": 9984, + "NearestMipMapLinear": 9986, + "LinearMipMapNearest": 9985, + "LinearMipMapLinear": 9987 + } + } + Enum { + name: "CubeMapFace" + values: { + "CubeMapPositiveX": 34069, + "CubeMapNegativeX": 34070, + "CubeMapPositiveY": 34071, + "CubeMapNegativeY": 34072, + "CubeMapPositiveZ": 34073, + "CubeMapNegativeZ": 34074 + } + } + Enum { + name: "ComparisonFunction" + values: { + "CompareLessEqual": 515, + "CompareGreaterEqual": 518, + "CompareLess": 513, + "CompareGreater": 516, + "CompareEqual": 514, + "CommpareNotEqual": 517, + "CompareAlways": 519, + "CompareNever": 512 + } + } + Enum { + name: "ComparisonMode" + values: { + "CompareRefToTexture": 34894, + "CompareNone": 0 + } + } + Property { name: "target"; type: "Target"; isReadonly: true } + Property { name: "format"; type: "TextureFormat" } + Property { name: "generateMipMaps"; type: "bool" } + Property { + name: "wrapMode" + type: "Qt3DRender::QTextureWrapMode" + isReadonly: true + isPointer: true + } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "width"; type: "int" } + Property { name: "height"; type: "int" } + Property { name: "depth"; type: "int" } + Property { name: "magnificationFilter"; type: "Filter" } + Property { name: "minificationFilter"; type: "Filter" } + Property { name: "maximumAnisotropy"; type: "float" } + Property { name: "comparisonFunction"; type: "ComparisonFunction" } + Property { name: "comparisonMode"; type: "ComparisonMode" } + Property { name: "layers"; type: "int" } + Signal { + name: "formatChanged" + Parameter { name: "format"; type: "TextureFormat" } + } + Signal { + name: "statusChanged" + Parameter { name: "status"; type: "Status" } + } + Signal { + name: "generateMipMapsChanged" + Parameter { name: "generateMipMaps"; type: "bool" } + } + Signal { + name: "widthChanged" + Parameter { name: "width"; type: "int" } + } + Signal { + name: "heightChanged" + Parameter { name: "height"; type: "int" } + } + Signal { + name: "depthChanged" + Parameter { name: "depth"; type: "int" } + } + Signal { + name: "magnificationFilterChanged" + Parameter { name: "magnificationFilter"; type: "Filter" } + } + Signal { + name: "minificationFilterChanged" + Parameter { name: "minificationFilter"; type: "Filter" } + } + Signal { + name: "maximumAnisotropyChanged" + Parameter { name: "maximumAnisotropy"; type: "float" } + } + Signal { + name: "comparisonFunctionChanged" + Parameter { name: "comparisonFunction"; type: "ComparisonFunction" } + } + Signal { + name: "comparisonModeChanged" + Parameter { name: "comparisonMode"; type: "ComparisonMode" } + } + Signal { + name: "layersChanged" + Parameter { name: "layers"; type: "int" } + } + Method { + name: "setFormat" + Parameter { name: "format"; type: "TextureFormat" } + } + Method { + name: "setGenerateMipMaps" + Parameter { name: "gen"; type: "bool" } + } + Method { + name: "setWidth" + Parameter { name: "width"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "height"; type: "int" } + } + Method { + name: "setDepth" + Parameter { name: "depth"; type: "int" } + } + Method { + name: "setMinificationFilter" + Parameter { name: "f"; type: "Filter" } + } + Method { + name: "setMagnificationFilter" + Parameter { name: "f"; type: "Filter" } + } + Method { + name: "setMaximumAnisotropy" + Parameter { name: "anisotropy"; type: "float" } + } + Method { + name: "setComparisonFunction" + Parameter { name: "function"; type: "ComparisonFunction" } + } + Method { + name: "setComparisonMode" + Parameter { name: "mode"; type: "ComparisonMode" } + } + Method { + name: "setLayers" + Parameter { name: "layers"; type: "int" } + } } Component { name: "Qt3DRender::QAbstractTextureImage" prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/QAbstractTextureImage 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] Property { name: "mipLevel"; type: "int" } Property { name: "layer"; type: "int" } Property { name: "face"; type: "Qt3DRender::QAbstractTexture::CubeMapFace" } @@ -215,10 +573,17 @@ Module { Parameter { name: "face"; type: "QAbstractTexture::CubeMapFace" } } } - Component { name: "Qt3DRender::QAlphaCoverage"; prototype: "Qt3DRender::QRenderState" } + Component { + name: "Qt3DRender::QAlphaCoverage" + prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/AlphaCoverage 2.0"] + exportMetaObjectRevisions: [0] + } Component { name: "Qt3DRender::QAlphaTest" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/AlphaTest 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "AlphaFunction" values: { @@ -253,14 +618,122 @@ Module { } Component { name: "Qt3DRender::QAttribute" - defaultProperty: "data" - prototype: "Qt3DRender::QAttribute" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/Attribute 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "AttributeType" + values: { + "VertexAttribute": 0, + "IndexAttribute": 1 + } + } + Enum { + name: "VertexBaseType" + values: { + "Byte": 0, + "UnsignedByte": 1, + "Short": 2, + "UnsignedShort": 3, + "Int": 4, + "UnsignedInt": 5, + "HalfFloat": 6, + "Float": 7, + "Double": 8 + } + } + Property { name: "buffer"; type: "Qt3DRender::QBuffer"; isPointer: true } + Property { name: "name"; type: "string" } + Property { name: "vertexBaseType"; type: "VertexBaseType" } + Property { name: "vertexSize"; type: "uint" } + Property { name: "count"; type: "uint" } + Property { name: "byteStride"; type: "uint" } + Property { name: "byteOffset"; type: "uint" } + Property { name: "divisor"; type: "uint" } + Property { name: "attributeType"; type: "AttributeType" } + Signal { + name: "bufferChanged" + Parameter { name: "buffer"; type: "QBuffer"; isPointer: true } + } + Signal { + name: "nameChanged" + Parameter { name: "name"; type: "string" } + } + Signal { + name: "dataTypeChanged" + Parameter { name: "vertexBaseType"; type: "VertexBaseType" } + } + Signal { + name: "dataSizeChanged" + Parameter { name: "vertexSize"; type: "uint" } + } + Signal { + name: "countChanged" + Parameter { name: "count"; type: "uint" } + } + Signal { + name: "byteStrideChanged" + Parameter { name: "byteStride"; type: "uint" } + } + Signal { + name: "byteOffsetChanged" + Parameter { name: "byteOffset"; type: "uint" } + } + Signal { + name: "divisorChanged" + Parameter { name: "divisor"; type: "uint" } + } + Signal { + name: "attributeTypeChanged" + Parameter { name: "attributeType"; type: "AttributeType" } + } + Method { + name: "setBuffer" + Parameter { name: "buffer"; type: "QBuffer"; isPointer: true } + } + Method { + name: "setName" + Parameter { name: "name"; type: "string" } + } + Method { + name: "setDataType" + Parameter { name: "type"; type: "VertexBaseType" } + } + Method { + name: "setDataSize" + Parameter { name: "size"; type: "uint" } + } + Method { + name: "setCount" + Parameter { name: "count"; type: "uint" } + } + Method { + name: "setByteStride" + Parameter { name: "byteStride"; type: "uint" } + } + Method { + name: "setByteOffset" + Parameter { name: "byteOffset"; type: "uint" } + } + Method { + name: "setDivisor" + Parameter { name: "divisor"; type: "uint" } + } + Method { + name: "setAttributeType" + Parameter { name: "attributeType"; type: "AttributeType" } + } + Method { name: "defaultPositionAttributeName"; type: "string" } + Method { name: "defaultNormalAttributeName"; type: "string" } + Method { name: "defaultColorAttributeName"; type: "string" } + Method { name: "defaultTextureCoordinateAttributeName"; type: "string" } + Method { name: "defaultTangentAttributeName"; type: "string" } } Component { name: "Qt3DRender::QBlendEquation" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/BlendEquation 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "BlendFunction" values: { @@ -284,6 +757,8 @@ Module { Component { name: "Qt3DRender::QBlendEquationArguments" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/BlendEquationArguments 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "Blending" values: { @@ -432,13 +907,226 @@ Module { } Component { name: "Qt3DRender::QCamera" - defaultProperty: "data" - prototype: "Qt3DRender::QCamera" - Property { name: "components"; type: "Qt3DCore::QComponent"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QEntity" + exports: ["Qt3D.Render/Camera 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "CameraTranslationOption" + values: { + "TranslateViewCenter": 0, + "DontTranslateViewCenter": 1 + } + } + Property { name: "projectionType"; type: "Qt3DRender::QCameraLens::ProjectionType" } + Property { name: "nearPlane"; type: "float" } + Property { name: "farPlane"; type: "float" } + Property { name: "fieldOfView"; type: "float" } + Property { name: "aspectRatio"; type: "float" } + Property { name: "left"; type: "float" } + Property { name: "right"; type: "float" } + Property { name: "bottom"; type: "float" } + Property { name: "top"; type: "float" } + Property { name: "projectionMatrix"; type: "QMatrix4x4" } + Property { name: "position"; type: "QVector3D" } + Property { name: "upVector"; type: "QVector3D" } + Property { name: "viewCenter"; type: "QVector3D" } + Property { name: "viewVector"; type: "QVector3D"; isReadonly: true } + Property { name: "viewMatrix"; type: "QMatrix4x4"; isReadonly: true } + Signal { + name: "projectionTypeChanged" + Parameter { name: "projectionType"; type: "QCameraLens::ProjectionType" } + } + Signal { + name: "nearPlaneChanged" + Parameter { name: "nearPlane"; type: "float" } + } + Signal { + name: "farPlaneChanged" + Parameter { name: "farPlane"; type: "float" } + } + Signal { + name: "fieldOfViewChanged" + Parameter { name: "fieldOfView"; type: "float" } + } + Signal { + name: "aspectRatioChanged" + Parameter { name: "aspectRatio"; type: "float" } + } + Signal { + name: "leftChanged" + Parameter { name: "left"; type: "float" } + } + Signal { + name: "rightChanged" + Parameter { name: "right"; type: "float" } + } + Signal { + name: "bottomChanged" + Parameter { name: "bottom"; type: "float" } + } + Signal { + name: "topChanged" + Parameter { name: "top"; type: "float" } + } + Signal { + name: "projectionMatrixChanged" + Parameter { name: "projectionMatrix"; type: "QMatrix4x4" } + } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "QVector3D" } + } + Signal { + name: "upVectorChanged" + Parameter { name: "upVector"; type: "QVector3D" } + } + Signal { + name: "viewCenterChanged" + Parameter { name: "viewCenter"; type: "QVector3D" } + } + Signal { + name: "viewVectorChanged" + Parameter { name: "viewVector"; type: "QVector3D" } + } + Method { + name: "setProjectionType" + Parameter { name: "type"; type: "QCameraLens::ProjectionType" } + } + Method { + name: "setNearPlane" + Parameter { name: "nearPlane"; type: "float" } + } + Method { + name: "setFarPlane" + Parameter { name: "farPlane"; type: "float" } + } + Method { + name: "setFieldOfView" + Parameter { name: "fieldOfView"; type: "float" } + } + Method { + name: "setAspectRatio" + Parameter { name: "aspectRatio"; type: "float" } + } + Method { + name: "setLeft" + Parameter { name: "left"; type: "float" } + } + Method { + name: "setRight" + Parameter { name: "right"; type: "float" } + } + Method { + name: "setBottom" + Parameter { name: "bottom"; type: "float" } + } + Method { + name: "setTop" + Parameter { name: "top"; type: "float" } + } + Method { + name: "setProjectionMatrix" + Parameter { name: "projectionMatrix"; type: "QMatrix4x4" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "QVector3D" } + } + Method { + name: "setUpVector" + Parameter { name: "upVector"; type: "QVector3D" } + } + Method { + name: "setViewCenter" + Parameter { name: "viewCenter"; type: "QVector3D" } + } + Method { + name: "tiltRotation" + type: "QQuaternion" + Parameter { name: "angle"; type: "float" } + } + Method { + name: "panRotation" + type: "QQuaternion" + Parameter { name: "angle"; type: "float" } + } + Method { + name: "rollRotation" + type: "QQuaternion" + Parameter { name: "angle"; type: "float" } + } + Method { + name: "rotation" + type: "QQuaternion" + Parameter { name: "angle"; type: "float" } + Parameter { name: "axis"; type: "QVector3D" } + } + Method { + name: "translate" + Parameter { name: "vLocal"; type: "QVector3D" } + Parameter { name: "option"; type: "CameraTranslationOption" } + } + Method { + name: "translate" + Parameter { name: "vLocal"; type: "QVector3D" } + } + Method { + name: "translateWorld" + Parameter { name: "vWorld"; type: "QVector3D" } + Parameter { name: "option"; type: "CameraTranslationOption" } + } + Method { + name: "translateWorld" + Parameter { name: "vWorld"; type: "QVector3D" } + } + Method { + name: "tilt" + Parameter { name: "angle"; type: "float" } + } + Method { + name: "pan" + Parameter { name: "angle"; type: "float" } + } + Method { + name: "pan" + Parameter { name: "angle"; type: "float" } + Parameter { name: "axis"; type: "QVector3D" } + } + Method { + name: "roll" + Parameter { name: "angle"; type: "float" } + } + Method { + name: "tiltAboutViewCenter" + Parameter { name: "angle"; type: "float" } + } + Method { + name: "panAboutViewCenter" + Parameter { name: "angle"; type: "float" } + } + Method { + name: "panAboutViewCenter" + Parameter { name: "angle"; type: "float" } + Parameter { name: "axis"; type: "QVector3D" } + } + Method { + name: "rollAboutViewCenter" + Parameter { name: "angle"; type: "float" } + } + Method { + name: "rotate" + Parameter { name: "q"; type: "QQuaternion" } + } + Method { + name: "rotateAboutViewCenter" + Parameter { name: "q"; type: "QQuaternion" } + } } Component { name: "Qt3DRender::QCameraLens" prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/CameraLens 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "ProjectionType" values: { @@ -555,6 +1243,8 @@ Module { Component { name: "Qt3DRender::QClearBuffers" prototype: "Qt3DRender::QFrameGraphNode" + exports: ["Qt3D.Render/ClearBuffers 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "BufferType" values: { @@ -572,6 +1262,7 @@ Module { Property { name: "clearColor"; type: "QColor" } Property { name: "clearDepthValue"; type: "float" } Property { name: "clearStencilValue"; type: "int" } + Property { name: "colorBuffer"; type: "Qt3DRender::QRenderTargetOutput"; isPointer: true } Signal { name: "buffersChanged" Parameter { name: "buffers"; type: "BufferType" } @@ -588,6 +1279,10 @@ Module { name: "clearStencilValueChanged" Parameter { name: "clearStencilValue"; type: "int" } } + Signal { + name: "colorBufferChanged" + Parameter { name: "buffer"; type: "QRenderTargetOutput"; isPointer: true } + } Method { name: "setBuffers" Parameter { name: "buffers"; type: "BufferType" } @@ -604,17 +1299,49 @@ Module { name: "setClearStencilValue" Parameter { name: "clearStencilValue"; type: "int" } } + Method { + name: "setColorBuffer" + Parameter { name: "buffer"; type: "QRenderTargetOutput"; isPointer: true } + } } Component { name: "Qt3DRender::QClipPlane" - defaultProperty: "data" - prototype: "Qt3DRender::QClipPlane" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/ClipPlane 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "planeIndex"; type: "int" } + Property { name: "normal"; type: "QVector3D" } + Property { name: "distance"; type: "float" } + Signal { + name: "planeIndexChanged" + Parameter { name: "planeIndex"; type: "int" } + } + Signal { + name: "normalChanged" + Parameter { name: "normal"; type: "QVector3D" } + } + Signal { + name: "distanceChanged" + Parameter { name: "distance"; type: "float" } + } + Method { + name: "setPlaneIndex" + Parameter { type: "int" } + } + Method { + name: "setNormal" + Parameter { type: "QVector3D" } + } + Method { + name: "setDistance" + Parameter { type: "float" } + } } Component { name: "Qt3DRender::QColorMask" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/ColorMask 2.0"] + exportMetaObjectRevisions: [0] Property { name: "redMasked"; type: "bool" } Property { name: "greenMasked"; type: "bool" } Property { name: "blueMasked"; type: "bool" } @@ -654,14 +1381,30 @@ Module { } Component { name: "Qt3DRender::QComputeCommand" - defaultProperty: "data" - prototype: "Qt3DRender::QComputeCommand" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/ComputeCommand 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "workGroupX"; type: "int" } + Property { name: "workGroupY"; type: "int" } + Property { name: "workGroupZ"; type: "int" } + Method { + name: "setWorkGroupX" + Parameter { name: "workGroupX"; type: "int" } + } + Method { + name: "setWorkGroupY" + Parameter { name: "workGroupY"; type: "int" } + } + Method { + name: "setWorkGroupZ" + Parameter { name: "workGroupZ"; type: "int" } + } } Component { name: "Qt3DRender::QCullFace" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/CullFace 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "CullingMode" values: { @@ -684,6 +1427,8 @@ Module { Component { name: "Qt3DRender::QDepthTest" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/DepthTest 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "DepthFunction" values: { @@ -709,23 +1454,52 @@ Module { } Component { name: "Qt3DRender::QDirectionalLight" - defaultProperty: "data" - prototype: "Qt3DRender::QDirectionalLight" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QAbstractLight" + exports: ["Qt3D.Render/DirectionalLight 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "worldDirection"; type: "QVector3D" } + Signal { + name: "worldDirectionChanged" + Parameter { name: "worldDirection"; type: "QVector3D" } + } + Method { + name: "setWorldDirection" + Parameter { name: "worldDirection"; type: "QVector3D" } + } } Component { name: "Qt3DRender::QDispatchCompute" - defaultProperty: "data" - prototype: "Qt3DRender::QDispatchCompute" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QFrameGraphNode" + exports: ["Qt3D.Render/DispatchCompute 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "workGroupX"; type: "int" } + Property { name: "workGroupY"; type: "int" } + Property { name: "workGroupZ"; type: "int" } + Method { + name: "setWorkGroupX" + Parameter { name: "workGroupX"; type: "int" } + } + Method { + name: "setWorkGroupY" + Parameter { name: "workGroupY"; type: "int" } + } + Method { + name: "setWorkGroupZ" + Parameter { name: "workGroupZ"; type: "int" } + } + } + Component { + name: "Qt3DRender::QDithering" + prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/Dithering 2.0"] + exportMetaObjectRevisions: [0] } - Component { name: "Qt3DRender::QDithering"; prototype: "Qt3DRender::QRenderState" } Component { name: "Qt3DRender::QEffect"; prototype: "Qt3DCore::QNode" } Component { name: "Qt3DRender::QFilterKey" prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/FilterKey 2.0"] + exportMetaObjectRevisions: [0] Property { name: "value"; type: "QVariant" } Property { name: "name"; type: "string" } Signal { @@ -745,10 +1519,18 @@ Module { Parameter { name: "customType"; type: "string" } } } - Component { name: "Qt3DRender::QFrameGraphNode"; prototype: "Qt3DCore::QNode" } + Component { + name: "Qt3DRender::QFrameGraphNode" + prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/FrameGraphNode 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + } Component { name: "Qt3DRender::QFrontFace" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/FrontFace 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "WindingDirection" values: { @@ -766,7 +1548,12 @@ Module { Parameter { name: "direction"; type: "WindingDirection" } } } - Component { name: "Qt3DRender::QFrustumCulling"; prototype: "Qt3DRender::QFrameGraphNode" } + Component { + name: "Qt3DRender::QFrustumCulling" + prototype: "Qt3DRender::QFrameGraphNode" + exports: ["Qt3D.Render/FrustumCulling 2.0"] + exportMetaObjectRevisions: [0] + } Component { name: "Qt3DRender::QGeometry" prototype: "Qt3DCore::QNode" @@ -783,10 +1570,20 @@ Module { name: "setBoundingVolumePositionAttribute" Parameter { name: "boundingVolumePositionAttribute"; type: "QAttribute"; isPointer: true } } + Method { + name: "addAttribute" + Parameter { name: "attribute"; type: "Qt3DRender::QAttribute"; isPointer: true } + } + Method { + name: "removeAttribute" + Parameter { name: "attribute"; type: "Qt3DRender::QAttribute"; isPointer: true } + } } Component { name: "Qt3DRender::QGeometryRenderer" prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/GeometryRenderer 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "PrimitiveType" values: { @@ -808,6 +1605,7 @@ Module { Property { name: "vertexCount"; type: "int" } Property { name: "indexOffset"; type: "int" } Property { name: "firstInstance"; type: "int" } + Property { name: "firstVertex"; type: "int" } Property { name: "restartIndexValue"; type: "int" } Property { name: "verticesPerPatch"; type: "int" } Property { name: "primitiveRestartEnabled"; type: "bool" } @@ -830,6 +1628,10 @@ Module { Parameter { name: "firstInstance"; type: "int" } } Signal { + name: "firstVertexChanged" + Parameter { name: "firstVertex"; type: "int" } + } + Signal { name: "restartIndexValueChanged" Parameter { name: "restartIndexValue"; type: "int" } } @@ -866,6 +1668,10 @@ Module { Parameter { name: "firstInstance"; type: "int" } } Method { + name: "setFirstVertex" + Parameter { name: "firstVertex"; type: "int" } + } + Method { name: "setRestartIndexValue" Parameter { name: "index"; type: "int" } } @@ -914,11 +1720,11 @@ Module { Property { name: "vendor"; type: "string" } Signal { name: "apiChanged" - Parameter { name: "api"; type: "Api" } + Parameter { name: "api"; type: "Qt3DRender::QGraphicsApiFilter::Api" } } Signal { name: "profileChanged" - Parameter { name: "profile"; type: "OpenGLProfile" } + Parameter { name: "profile"; type: "Qt3DRender::QGraphicsApiFilter::OpenGLProfile" } } Signal { name: "minorVersionChanged" @@ -964,18 +1770,11 @@ Module { } Component { name: "Qt3DRender::QLayer" - defaultProperty: "data" - prototype: "Qt3DRender::QLayer" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } - } - Component { - name: "Qt3DRender::QLayerFilter" - defaultProperty: "data" - prototype: "Qt3DRender::QLayerFilter" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/Layer 2.0"] + exportMetaObjectRevisions: [0] } + Component { name: "Qt3DRender::QLayerFilter"; prototype: "Qt3DRender::QFrameGraphNode" } Component { name: "Qt3DRender::QMaterial" prototype: "Qt3DCore::QComponent" @@ -992,6 +1791,8 @@ Module { Component { name: "Qt3DRender::QMesh" prototype: "Qt3DRender::QGeometryRenderer" + exports: ["Qt3D.Render/Mesh 2.0"] + exportMetaObjectRevisions: [0] Property { name: "source"; type: "QUrl" } Property { name: "meshName"; type: "string" } Signal { @@ -1014,28 +1815,97 @@ Module { Component { name: "Qt3DRender::QMultiSampleAntiAliasing" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/MultiSampleAntiAliasing 2.0"] + exportMetaObjectRevisions: [0] } Component { name: "Qt3DRender::QNoDepthMask" - defaultProperty: "data" - prototype: "Qt3DRender::QNoDepthMask" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/NoDepthMask 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "Qt3DRender::QNoDraw" + prototype: "Qt3DRender::QFrameGraphNode" + exports: ["Qt3D.Render/NoDraw 2.0"] + exportMetaObjectRevisions: [0] } - Component { name: "Qt3DRender::QNoDraw"; prototype: "Qt3DRender::QFrameGraphNode" } Component { name: "Qt3DRender::QObjectPicker" - defaultProperty: "data" - prototype: "Qt3DRender::QObjectPicker" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/ObjectPicker 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "hoverEnabled"; type: "bool" } + Property { name: "dragEnabled"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "containsMouse"; type: "bool"; isReadonly: true } + Signal { + name: "pressed" + Parameter { name: "pick"; type: "Qt3DRender::QPickEvent"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "pick"; type: "Qt3DRender::QPickEvent"; isPointer: true } + } + Signal { + name: "clicked" + Parameter { name: "pick"; type: "Qt3DRender::QPickEvent"; isPointer: true } + } + Signal { + name: "moved" + Parameter { name: "pick"; type: "Qt3DRender::QPickEvent"; isPointer: true } + } + Signal { name: "entered" } + Signal { name: "exited" } + Signal { + name: "hoverEnabledChanged" + Parameter { name: "hoverEnabled"; type: "bool" } + } + Signal { + name: "dragEnabledChanged" + Parameter { name: "dragEnabled"; type: "bool" } + } + Signal { + name: "pressedChanged" + Parameter { name: "pressed"; type: "bool" } + } + Signal { + name: "containsMouseChanged" + Parameter { name: "containsMouse"; type: "bool" } + } + Method { + name: "setHoverEnabled" + Parameter { name: "hoverEnabled"; type: "bool" } + } + Method { + name: "setDragEnabled" + Parameter { name: "dragEnabled"; type: "bool" } + } } Component { name: "Qt3DRender::QParameter" - defaultProperty: "data" - prototype: "Qt3DRender::QParameter" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/QParameter 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "name"; type: "string" } + Property { name: "value"; type: "QVariant" } + Signal { + name: "valueChanged" + Parameter { name: "value"; type: "QVariant" } + } + Signal { + name: "nameChanged" + Parameter { name: "name"; type: "string" } + } + Method { + name: "setName" + Parameter { name: "name"; type: "string" } + } + Method { + name: "setValue" + Parameter { name: "dv"; type: "QVariant" } + } } Component { name: "Qt3DRender::QPickEvent" @@ -1060,6 +1930,8 @@ Module { Component { name: "Qt3DRender::QPickingSettings" prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/PickingSettings 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "PickMethod" values: { @@ -1095,21 +1967,73 @@ Module { } Component { name: "Qt3DRender::QPointLight" - defaultProperty: "data" - prototype: "Qt3DRender::QPointLight" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QAbstractLight" + exports: ["Qt3D.Render/PointLight 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "constantAttenuation"; type: "float" } + Property { name: "linearAttenuation"; type: "float" } + Property { name: "quadraticAttenuation"; type: "float" } + Signal { + name: "constantAttenuationChanged" + Parameter { name: "constantAttenuation"; type: "float" } + } + Signal { + name: "linearAttenuationChanged" + Parameter { name: "linearAttenuation"; type: "float" } + } + Signal { + name: "quadraticAttenuationChanged" + Parameter { name: "quadraticAttenuation"; type: "float" } + } + Method { + name: "setConstantAttenuation" + Parameter { name: "value"; type: "float" } + } + Method { + name: "setLinearAttenuation" + Parameter { name: "value"; type: "float" } + } + Method { + name: "setQuadraticAttenuation" + Parameter { name: "value"; type: "float" } + } } Component { name: "Qt3DRender::QPointSize" - defaultProperty: "data" - prototype: "Qt3DRender::QPointSize" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/PointSize 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SizeMode" + values: { + "Fixed": 0, + "Programmable": 1 + } + } + Property { name: "sizeMode"; type: "SizeMode" } + Property { name: "value"; type: "float" } + Signal { + name: "sizeModeChanged" + Parameter { name: "sizeMode"; type: "SizeMode" } + } + Signal { + name: "valueChanged" + Parameter { name: "value"; type: "float" } + } + Method { + name: "setSizeMode" + Parameter { name: "sizeMode"; type: "SizeMode" } + } + Method { + name: "setValue" + Parameter { name: "value"; type: "float" } + } } Component { name: "Qt3DRender::QPolygonOffset" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/PolygonOffset 2.0"] + exportMetaObjectRevisions: [0] Property { name: "scaleFactor"; type: "float" } Property { name: "depthSteps"; type: "float" } Signal { @@ -1146,23 +2070,84 @@ Module { Component { name: "Qt3DRender::QRenderSettings" defaultProperty: "activeFrameGraph" - prototype: "Qt3DRender::QRenderSettings" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/RenderSettings 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "RenderPolicy" + values: { + "OnDemand": 0, + "Always": 1 + } + } + Property { + name: "pickingSettings" + type: "Qt3DRender::QPickingSettings" + isReadonly: true + isPointer: true + } + Property { name: "renderPolicy"; type: "RenderPolicy" } + Property { name: "activeFrameGraph"; type: "Qt3DRender::QFrameGraphNode"; isPointer: true } + Signal { + name: "activeFrameGraphChanged" + Parameter { name: "activeFrameGraph"; type: "QFrameGraphNode"; isPointer: true } + } + Signal { + name: "renderPolicyChanged" + Parameter { name: "renderPolicy"; type: "RenderPolicy" } + } + Method { + name: "setActiveFrameGraph" + Parameter { name: "activeFrameGraph"; type: "QFrameGraphNode"; isPointer: true } + } + Method { + name: "setRenderPolicy" + Parameter { name: "renderPolicy"; type: "RenderPolicy" } + } + } + Component { + name: "Qt3DRender::QRenderState" + prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/RenderState 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] } - Component { name: "Qt3DRender::QRenderState"; prototype: "Qt3DCore::QNode" } Component { name: "Qt3DRender::QRenderStateSet"; prototype: "Qt3DRender::QFrameGraphNode" } Component { name: "Qt3DRender::QRenderSurfaceSelector" - defaultProperty: "data" - prototype: "Qt3DRender::QRenderSurfaceSelector" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QFrameGraphNode" + exports: ["Qt3D.Render/RenderSurfaceSelector 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "surface"; type: "QObject"; isPointer: true } + Property { name: "externalRenderTargetSize"; type: "QSize"; isReadonly: true } + Property { name: "surfacePixelRatio"; type: "float" } + Signal { + name: "surfaceChanged" + Parameter { name: "surface"; type: "QObject"; isPointer: true } + } + Signal { + name: "externalRenderTargetSizeChanged" + Parameter { name: "size"; type: "QSize" } + } + Signal { + name: "surfacePixelRatioChanged" + Parameter { name: "ratio"; type: "float" } + } + Method { + name: "setSurface" + Parameter { name: "surfaceObject"; type: "QObject"; isPointer: true } + } + Method { + name: "setSurfacePixelRatio" + Parameter { name: "ratio"; type: "float" } + } } Component { name: "Qt3DRender::QRenderTarget"; prototype: "Qt3DCore::QComponent" } Component { name: "Qt3DRender::QRenderTargetOutput" prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/RenderTargetOutput 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "AttachmentPoint" values: { @@ -1279,22 +2264,64 @@ Module { } Component { name: "Qt3DRender::QScissorTest" - defaultProperty: "data" - prototype: "Qt3DRender::QScissorTest" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/ScissorTest 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "left"; type: "int" } + Property { name: "bottom"; type: "int" } + Property { name: "width"; type: "int" } + Property { name: "height"; type: "int" } + Signal { + name: "leftChanged" + Parameter { name: "left"; type: "int" } + } + Signal { + name: "bottomChanged" + Parameter { name: "bottom"; type: "int" } + } + Signal { + name: "widthChanged" + Parameter { name: "width"; type: "int" } + } + Signal { + name: "heightChanged" + Parameter { name: "height"; type: "int" } + } + Method { + name: "setLeft" + Parameter { name: "left"; type: "int" } + } + Method { + name: "setBottom" + Parameter { name: "bottom"; type: "int" } + } + Method { + name: "setWidth" + Parameter { name: "width"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "height"; type: "int" } + } } Component { name: "Qt3DRender::QSeamlessCubemap" - defaultProperty: "data" - prototype: "Qt3DRender::QSeamlessCubemap" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/SeamlessCubemap 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "Qt3DRender::QShaderData" + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/QShaderData 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] } - Component { name: "Qt3DRender::QShaderData"; prototype: "Qt3DCore::QComponent" } Component { name: "Qt3DRender::QShaderProgram" prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/ShaderProgram 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "ShaderType" values: { @@ -1369,6 +2396,8 @@ Module { Component { name: "Qt3DRender::QSortPolicy" prototype: "Qt3DRender::QFrameGraphNode" + exports: ["Qt3D.Render/SortPolicy 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "SortType" values: { @@ -1398,6 +2427,8 @@ Module { Component { name: "Qt3DRender::QSpotLight" prototype: "Qt3DRender::QAbstractLight" + exports: ["Qt3D.Render/SpotLight 2.0"] + exportMetaObjectRevisions: [0] Property { name: "constantAttenuation"; type: "float" } Property { name: "linearAttenuation"; type: "float" } Property { name: "quadraticAttenuation"; type: "float" } @@ -1447,6 +2478,8 @@ Module { Component { name: "Qt3DRender::QStencilMask" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/StencilMask 2.0"] + exportMetaObjectRevisions: [0] Property { name: "frontOutputMask"; type: "uint" } Property { name: "backOutputMask"; type: "uint" } Signal { @@ -1469,6 +2502,8 @@ Module { Component { name: "Qt3DRender::QStencilOperation" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/StencilOperation 2.0"] + exportMetaObjectRevisions: [0] Property { name: "front" type: "Qt3DRender::QStencilOperationArguments" @@ -1545,6 +2580,8 @@ Module { Component { name: "Qt3DRender::QStencilTest" prototype: "Qt3DRender::QRenderState" + exports: ["Qt3D.Render/StencilTest 2.0"] + exportMetaObjectRevisions: [0] Property { name: "front" type: "Qt3DRender::QStencilTestArguments" @@ -1651,6 +2688,8 @@ Module { Component { name: "Qt3DRender::QTextureImage" prototype: "Qt3DRender::QAbstractTextureImage" + exports: ["Qt3D.Render/TextureImage 2.0"] + exportMetaObjectRevisions: [0] Enum { name: "Status" values: { @@ -1746,7 +2785,6 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DBuffer" - defaultProperty: "data" prototype: "Qt3DRender::QBuffer" exports: ["Qt3D.Render/Buffer 2.0"] exportMetaObjectRevisions: [0] @@ -1756,7 +2794,6 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DEffect" - defaultProperty: "data" prototype: "Qt3DRender::QEffect" exports: ["Qt3D.Render/Effect 2.0"] exportMetaObjectRevisions: [0] @@ -1772,8 +2809,14 @@ Module { Property { name: "attributes"; type: "Qt3DRender::QAttribute"; isList: true; isReadonly: true } } Component { + name: "Qt3DRender::Render::Quick::Quick3DLayerFilter" + prototype: "Qt3DRender::QLayerFilter" + exports: ["Qt3D.Render/LayerFilter 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "layers"; type: "Qt3DRender::QLayer"; isList: true; isReadonly: true } + } + Component { name: "Qt3DRender::Render::Quick::Quick3DMaterial" - defaultProperty: "data" prototype: "Qt3DRender::QMaterial" exports: ["Qt3D.Render/Material 2.0"] exportMetaObjectRevisions: [0] @@ -1781,14 +2824,12 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DParameter" - defaultProperty: "data" - prototype: "Qt3DRender::Render::Quick::Quick3DParameter" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QParameter" + exports: ["Qt3D.Render/Parameter 2.0"] + exportMetaObjectRevisions: [0] } Component { name: "Qt3DRender::Render::Quick::Quick3DRenderPass" - defaultProperty: "data" prototype: "Qt3DRender::QRenderPass" exports: ["Qt3D.Render/RenderPass 2.0"] exportMetaObjectRevisions: [0] @@ -1803,7 +2844,6 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DRenderPassFilter" - defaultProperty: "data" prototype: "Qt3DRender::QRenderPassFilter" exports: ["Qt3D.Render/RenderPassFilter 2.0"] exportMetaObjectRevisions: [0] @@ -1812,7 +2852,6 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DRenderTargetOutput" - defaultProperty: "data" prototype: "Qt3DRender::QRenderTarget" exports: ["Qt3D.Render/RenderTarget 2.0"] exportMetaObjectRevisions: [0] @@ -1825,7 +2864,6 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DRenderTargetSelector" - defaultProperty: "data" prototype: "Qt3DRender::QRenderTargetSelector" exports: ["Qt3D.Render/RenderTargetSelector 2.0"] exportMetaObjectRevisions: [0] @@ -1833,27 +2871,26 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DScene" - defaultProperty: "data" prototype: "Qt3DRender::QSceneLoader" exports: ["Qt3D.Render/SceneLoader 2.0"] exportMetaObjectRevisions: [0] } Component { name: "Qt3DRender::Render::Quick::Quick3DShaderData" - defaultProperty: "data" - prototype: "Qt3DRender::Render::Quick::Quick3DShaderData" - Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true } + prototype: "Qt3DRender::QShaderData" + exports: ["Qt3D.Render/ShaderData 2.0"] + exportMetaObjectRevisions: [0] } Component { name: "Qt3DRender::Render::Quick::Quick3DShaderDataArray" defaultProperty: "values" prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/ShaderDataArray 2.0"] + exportMetaObjectRevisions: [0] Property { name: "values"; type: "Qt3DRender::QShaderData"; isList: true; isReadonly: true } } Component { name: "Qt3DRender::Render::Quick::Quick3DStateSet" - defaultProperty: "data" prototype: "Qt3DRender::QRenderStateSet" exports: ["Qt3D.Render/RenderStateSet 2.0"] exportMetaObjectRevisions: [0] @@ -1866,7 +2903,6 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DTechnique" - defaultProperty: "data" prototype: "Qt3DRender::QTechnique" exports: ["Qt3D.Render/Technique 2.0"] exportMetaObjectRevisions: [0] @@ -1876,7 +2912,6 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DTechniqueFilter" - defaultProperty: "data" prototype: "Qt3DRender::QTechniqueFilter" exports: ["Qt3D.Render/TechniqueFilter 2.0"] exportMetaObjectRevisions: [0] @@ -1886,7 +2921,7 @@ Module { Component { name: "Qt3DRender::Render::Quick::Quick3DTextureExtension" defaultProperty: "textureImages" - prototype: "Qt3DRender::QTexture1D" + prototype: "Qt3DRender::QTextureLoader" exports: [ "Qt3D.Render/Texture1D 2.0", "Qt3D.Render/Texture1DArray 2.0", @@ -1911,7 +2946,6 @@ Module { } Component { name: "Qt3DRender::Render::Quick::Quick3DViewport" - defaultProperty: "data" prototype: "Qt3DRender::QViewport" exports: ["Qt3D.Render/Viewport 2.0"] exportMetaObjectRevisions: [0] diff --git a/src/quick3d/imports/scene3d/plugins.qmltypes b/src/quick3d/imports/scene3d/plugins.qmltypes index da56b97ea..46df37093 100644 --- a/src/quick3d/imports/scene3d/plugins.qmltypes +++ b/src/quick3d/imports/scene3d/plugins.qmltypes @@ -7,7 +7,7 @@ import QtQuick.tooling 1.2 // 'qmlplugindump -nonrelocatable QtQuick.Scene3D 2.0' Module { - dependencies: ["QtQuick 2.0"] + dependencies: ["QtQuick 2.7"] Component { name: "Qt3DRender::Scene3DItem" defaultProperty: "entity" diff --git a/src/render/backend/renderview.cpp b/src/render/backend/renderview.cpp index 64f8bacca..070e50f79 100644 --- a/src/render/backend/renderview.cpp +++ b/src/render/backend/renderview.cpp @@ -788,6 +788,9 @@ void RenderView::setShaderAndUniforms(RenderCommand *command, RenderPass *rPass, Entity *lightEntity = lightSource.entity; const QVector3D worldPos = lightEntity->worldBoundingVolume()->center(); for (Light *light : lightSource.lights) { + if (!light->isEnabled()) + continue; + ShaderData *shaderData = m_manager->shaderDataManager()->lookupResource(light->shaderData()); if (!shaderData) continue; diff --git a/src/render/framegraph/framegraphnode.cpp b/src/render/framegraph/framegraphnode.cpp index cfdf9834f..9bd069832 100644 --- a/src/render/framegraph/framegraphnode.cpp +++ b/src/render/framegraph/framegraphnode.cpp @@ -40,6 +40,8 @@ #include "framegraphnode_p.h" #include <Qt3DRender/private/renderer_p.h> #include <Qt3DRender/private/nodemanagers_p.h> +#include <Qt3DCore/qpropertynoderemovedchange.h> +#include <Qt3DCore/qpropertynodeaddedchange.h> QT_BEGIN_NAMESPACE @@ -83,6 +85,12 @@ FrameGraphManager *FrameGraphNode::manager() const void FrameGraphNode::setParentId(Qt3DCore::QNodeId parentId) { if (m_parentId != parentId) { + // We already had a parent, tell it to abandon us + if (!m_parentId.isNull()) { + FrameGraphNode *parent = m_manager->lookupNode(m_parentId); + if (parent != nullptr) + parent->m_childrenIds.removeAll(peerId()); + } m_parentId = parentId; FrameGraphNode *parent = m_manager->lookupNode(m_parentId); if (parent != nullptr && !parent->m_childrenIds.contains(peerId())) @@ -140,6 +148,31 @@ QVector<FrameGraphNode *> FrameGraphNode::children() const return children; } +void FrameGraphNode::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) +{ + switch (e->type()) { + + case Qt3DCore::PropertyValueAdded: { + Qt3DCore::QPropertyNodeAddedChangePtr change = qSharedPointerCast<Qt3DCore::QPropertyNodeAddedChange>(e); + if (change->metaObject()->inherits(&QFrameGraphNode::staticMetaObject)) + appendChildId(change->addedNodeId()); + break; + } + + case Qt3DCore::PropertyValueRemoved: { + Qt3DCore::QPropertyNodeRemovedChangePtr change = qSharedPointerCast<Qt3DCore::QPropertyNodeRemovedChange>(e); + if (change->metaObject()->inherits(&QFrameGraphNode::staticMetaObject)) + removeChildId(change->removedNodeId()); + break; + } + default: + break; + } + + markDirty(AbstractRenderer::AllDirty); + BackendNode::sceneChangeEvent(e); +} + } // namespace Render } // namespace Qt3DRender diff --git a/src/render/framegraph/framegraphnode_p.h b/src/render/framegraph/framegraphnode_p.h index 62f8d645d..1de955abc 100644 --- a/src/render/framegraph/framegraphnode_p.h +++ b/src/render/framegraph/framegraphnode_p.h @@ -106,6 +106,8 @@ public: FrameGraphNode *parent() const; QVector<FrameGraphNode *> children() const; + void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; + protected: FrameGraphNode(FrameGraphNodeType nodeType); void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) Q_DECL_OVERRIDE; diff --git a/src/render/frontend/qrendersettings.h b/src/render/frontend/qrendersettings.h index 55fe3007a..4a0d99383 100644 --- a/src/render/frontend/qrendersettings.h +++ b/src/render/frontend/qrendersettings.h @@ -55,7 +55,7 @@ class QT3DRENDERSHARED_EXPORT QRenderSettings : public Qt3DCore::QComponent { Q_OBJECT - Q_PROPERTY(QPickingSettings* pickingSettings READ pickingSettings CONSTANT) + Q_PROPERTY(Qt3DRender::QPickingSettings* pickingSettings READ pickingSettings CONSTANT) Q_PROPERTY(RenderPolicy renderPolicy READ renderPolicy WRITE setRenderPolicy NOTIFY renderPolicyChanged) Q_PROPERTY(Qt3DRender::QFrameGraphNode *activeFrameGraph READ activeFrameGraph WRITE setActiveFrameGraph NOTIFY activeFrameGraphChanged) Q_CLASSINFO("DefaultProperty", "activeFrameGraph") diff --git a/src/render/materialsystem/shaderdata.cpp b/src/render/materialsystem/shaderdata.cpp index e7c8a1c37..fec1e66ac 100644 --- a/src/render/materialsystem/shaderdata.cpp +++ b/src/render/materialsystem/shaderdata.cpp @@ -113,7 +113,7 @@ void ShaderData::initializeFromPeer(const QNodeCreatedChangeBasePtr &change) const QHash<QString, QVariant>::iterator end = m_originalProperties.end(); while (it != end) { - if (static_cast<QMetaType::Type>(it.value().type()) == QMetaType::QVector3D) { + if (it.value().type() == QVariant::Vector3D) { // if there is a matching QShaderData::TransformType propertyTransformed QVariant value = m_originalProperties.value(it.key() + QLatin1String("Transformed")); // if that's the case, we apply a space transformation to the property diff --git a/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp b/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp index 1a0459958..618c75d42 100644 --- a/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp +++ b/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp @@ -49,6 +49,18 @@ public: } private Q_SLOTS: + void shouldHaveDefaultState() + { + // GIVEN + Qt3DInput::QButtonAxisInput axisInput; + + // THEN + QVERIFY(axisInput.buttons().isEmpty()); + QCOMPARE(axisInput.scale(), 1.0f); + QCOMPARE(axisInput.acceleration(), -1.0f); + QCOMPARE(axisInput.deceleration(), -1.0f); + } + void checkCloning_data() { QTest::addColumn<Qt3DInput::QButtonAxisInput *>("axisInput"); diff --git a/tests/auto/render/framegraphnode/tst_framegraphnode.cpp b/tests/auto/render/framegraphnode/tst_framegraphnode.cpp index f3f3dbff1..07ff4c0d9 100644 --- a/tests/auto/render/framegraphnode/tst_framegraphnode.cpp +++ b/tests/auto/render/framegraphnode/tst_framegraphnode.cpp @@ -29,6 +29,11 @@ #include <Qt3DRender/private/framegraphnode_p.h> #include <QtTest/QTest> #include <Qt3DRender/private/managers_p.h> +#include <Qt3DRender/private/nodemanagers_p.h> +#include <Qt3DCore/qpropertynodeaddedchange.h> +#include <Qt3DCore/qpropertynoderemovedchange.h> +#include <Qt3DCore/private/qnodecreatedchangegenerator_p.h> +#include "testrenderer.h" class MyFrameGraphNode : public Qt3DRender::Render::FrameGraphNode { @@ -37,9 +42,15 @@ public: { FrameGraphNode::setEnabled(enabled); } +}; -protected: - void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &) Q_DECL_FINAL {} +class MyQFrameGraphNode : public Qt3DRender::QFrameGraphNode +{ + Q_OBJECT +public: + MyQFrameGraphNode(Qt3DCore::QNode *parent = nullptr) + : Qt3DRender::QFrameGraphNode(parent) + {} }; class tst_FrameGraphNode : public QObject @@ -167,8 +178,116 @@ private Q_SLOTS: QCOMPARE(parent1->childrenIds().count(), 0); QCOMPARE(parent1->children().count(), parent1->childrenIds().count()); } + + void checkSetParent() + { + // GIVEN + QScopedPointer<Qt3DRender::Render::FrameGraphManager> manager(new Qt3DRender::Render::FrameGraphManager()); + const Qt3DCore::QNodeId parent1Id = Qt3DCore::QNodeId::createId(); + const Qt3DCore::QNodeId parent2Id = Qt3DCore::QNodeId::createId(); + const Qt3DCore::QNodeId childId = Qt3DCore::QNodeId::createId(); + + Qt3DRender::Render::FrameGraphNode *parent1 = new MyFrameGraphNode(); + Qt3DRender::Render::FrameGraphNode *parent2 = new MyFrameGraphNode(); + Qt3DRender::Render::FrameGraphNode *child = new MyFrameGraphNode(); + + setIdInternal(parent1, parent1Id); + setIdInternal(parent2, parent2Id); + setIdInternal(child, childId); + + manager->appendNode(parent1Id, parent1); + manager->appendNode(parent2Id, parent2); + manager->appendNode(childId, child); + + parent1->setFrameGraphManager(manager.data()); + parent2->setFrameGraphManager(manager.data()); + child->setFrameGraphManager(manager.data()); + + // THEN + QCOMPARE(parent1->peerId(), parent1Id); + QCOMPARE(parent2->peerId(), parent2Id); + QCOMPARE(child->peerId(), childId); + + QVERIFY(child->parentId().isNull()); + QCOMPARE(parent1->childrenIds().size(), 0); + QCOMPARE(parent2->childrenIds().size(), 0); + + // WHEN + child->setParentId(parent1Id); + + // THEN + QCOMPARE(child->parentId(), parent1Id); + QCOMPARE(parent1->childrenIds().size(), 1); + QCOMPARE(parent2->childrenIds().size(), 0); + + // WHEN + child->setParentId(parent2Id); + + // THEN + QCOMPARE(child->parentId(), parent2Id); + QCOMPARE(parent1->childrenIds().size(), 0); + QCOMPARE(parent2->childrenIds().size(), 1); + + // WHEN + child->setParentId(Qt3DCore::QNodeId()); + + // THEN + QVERIFY(child->parentId().isNull()); + QCOMPARE(parent1->childrenIds().size(), 0); + QCOMPARE(parent2->childrenIds().size(), 0); + } + + void checkSceneChangeEvents() + { + // GIVEN + const Qt3DCore::QNodeId fgNode1Id = Qt3DCore::QNodeId::createId(); + + Qt3DRender::Render::FrameGraphNode *backendFGNode = new MyFrameGraphNode(); + Qt3DRender::QFrameGraphNode *frontendFGChild = new MyQFrameGraphNode(); + Qt3DRender::Render::FrameGraphNode *backendFGChild = new MyFrameGraphNode(); + + QScopedPointer<Qt3DRender::Render::FrameGraphManager> manager(new Qt3DRender::Render::FrameGraphManager()); + + TestRenderer renderer; + + backendFGNode->setRenderer(&renderer); + + setIdInternal(backendFGNode, fgNode1Id); + setIdInternal(backendFGChild, frontendFGChild->id()); + + manager->appendNode(fgNode1Id, backendFGNode); + manager->appendNode(frontendFGChild->id(), backendFGChild); + + backendFGNode->setFrameGraphManager(manager.data()); + backendFGChild->setFrameGraphManager(manager.data()); + + + // To geneate the type_info in the QNodePrivate of frontendFGChild + Qt3DCore::QNodeCreatedChangeGenerator generator(frontendFGChild); + + QCOMPARE(backendFGNode->childrenIds().size(), 0); + + { + // WHEN + const auto change = Qt3DCore::QPropertyNodeAddedChangePtr::create(Qt3DCore::QNodeId(), frontendFGChild); + backendFGNode->sceneChangeEvent(change); + + // THEN + QCOMPARE(backendFGNode->childrenIds().size(), 1); + QCOMPARE(backendFGNode->childrenIds().first(), frontendFGChild->id()); + } + { + // WHEN + const auto change = Qt3DCore::QPropertyNodeRemovedChangePtr::create(Qt3DCore::QNodeId(), frontendFGChild); + backendFGNode->sceneChangeEvent(change); + + // THEN + QCOMPARE(backendFGNode->childrenIds().size(), 0); + } + } + }; -QTEST_APPLESS_MAIN(tst_FrameGraphNode) +QTEST_MAIN(tst_FrameGraphNode) #include "tst_framegraphnode.moc" diff --git a/tools/qgltf/qgltf.cpp b/tools/qgltf/qgltf.cpp index b57ea8df2..a26fc487c 100644 --- a/tools/qgltf/qgltf.cpp +++ b/tools/qgltf/qgltf.cpp @@ -373,7 +373,7 @@ void Importer::delNode(Importer::Node *n) { if (!n) return; - foreach (Importer::Node *c, n->children) + for (Importer::Node *c : qAsConst(n->children)) delNode(c); delete n; } @@ -398,10 +398,10 @@ const Importer::Node *Importer::rootNode() const bool Importer::allMeshesForMaterialHaveTangents(uint materialIndex) const { - foreach (const MeshInfo &mi, m_meshInfo) { + for (const MeshInfo &mi : m_meshInfo) { if (mi.materialIndex == materialIndex) { bool hasTangents = false; - foreach (const MeshInfo::Accessor &acc, mi.accessors) { + for (const MeshInfo::Accessor &acc : mi.accessors) { if (acc.usage == QStringLiteral("TANGENT")) { hasTangents = true; break; @@ -417,8 +417,8 @@ bool Importer::allMeshesForMaterialHaveTangents(uint materialIndex) const QVector<Importer::MeshInfo::BufferView> Importer::bufferViews() const { QVector<Importer::MeshInfo::BufferView> bv; - foreach (const MeshInfo &mi, m_meshInfo) { - foreach (const MeshInfo::BufferView &v, mi.views) + for (const MeshInfo &mi : m_meshInfo) { + for (const MeshInfo::BufferView &v : mi.views) bv << v; } return bv; @@ -427,8 +427,8 @@ QVector<Importer::MeshInfo::BufferView> Importer::bufferViews() const QVector<Importer::MeshInfo::Accessor> Importer::accessors() const { QVector<Importer::MeshInfo::Accessor> acc; - foreach (const MeshInfo &mi, m_meshInfo) { - foreach (const MeshInfo::Accessor &a, mi.accessors) + for (const MeshInfo &mi : m_meshInfo) { + for (const MeshInfo::Accessor &a : mi.accessors) acc << a; } return acc; @@ -476,7 +476,7 @@ QVector<Importer::AnimationInfo> Importer::animations() const const Importer::Node *Importer::findNode(const Node *root, const QString &originalName) const { - foreach (const Node *c, root->children) { + for (const Node *c : root->children) { if (c->name == originalName) return c; const Node *cn = findNode(c, originalName); @@ -881,10 +881,10 @@ void AssimpImporter::buildBuffer() if (!opts.interleave) qDebug() << " non-interleaved layout"; QStringList sl; - foreach (const MeshInfo::BufferView &bv, meshInfo.views) sl << bv.name; + for (const MeshInfo::BufferView &bv : qAsConst(meshInfo.views)) sl << bv.name; qDebug() << " buffer views:" << sl; sl.clear(); - foreach (const MeshInfo::Accessor &acc, meshInfo.accessors) sl << acc.name; + for (const MeshInfo::Accessor &acc : qAsConst(meshInfo.accessors)) sl << acc.name; qDebug() << " accessors:" << sl; qDebug() << " material: #" << meshInfo.materialIndex; } @@ -1138,7 +1138,7 @@ void AssimpImporter::parseAnimations() m_animations << animInfo; if (opts.showLog) { - foreach (const KeyFrame &kf, keyFrames) { + for (const KeyFrame &kf : qAsConst(keyFrames)) { QString msg; QTextStream s(&msg); s << " @ " << kf.t; @@ -1185,7 +1185,7 @@ bool Exporter::nodeIsUseful(const Importer::Node *n) const if (!n->meshes.isEmpty() || m_importer->cameraInfo().contains(n->name)) return true; - foreach (const Importer::Node *c, n->children) { + for (const Importer::Node *c : n->children) { if (nodeIsUseful(c)) return true; } @@ -1195,7 +1195,8 @@ bool Exporter::nodeIsUseful(const Importer::Node *n) const void Exporter::copyExternalTextures(const QString &inputFilename) { - foreach (const QString &textureFilename, m_importer->externalTextures()) { + const auto textureFilenames = m_importer->externalTextures(); + for (const QString &textureFilename : textureFilenames) { const QString dst = opts.outDir + textureFilename; m_files.insert(QFileInfo(dst).fileName()); // External textures need copying only when output dir was specified. @@ -1213,7 +1214,8 @@ void Exporter::copyExternalTextures(const QString &inputFilename) void Exporter::exportEmbeddedTextures() { #ifdef HAS_QIMAGE - foreach (const Importer::EmbeddedTextureInfo &embTex, m_importer->embeddedTextures()) { + const auto embeddedTextures = m_importer->embeddedTextures(); + for (const Importer::EmbeddedTextureInfo &embTex : embeddedTextures) { QString fn = opts.outDir + embTex.name; m_files.insert(QFileInfo(fn).fileName()); if (opts.showLog) @@ -1228,13 +1230,16 @@ void Exporter::compressTextures() if (opts.texComp != Options::ETC1) return; + const auto textureFilenames = m_importer->externalTextures(); + const auto embeddedTextures = m_importer->embeddedTextures(); QStringList imageList; - foreach (const QString &textureFilename, m_importer->externalTextures()) + imageList.reserve(textureFilenames.size() + embeddedTextures.size()); + for (const QString &textureFilename : textureFilenames) imageList << opts.outDir + textureFilename; - foreach (const Importer::EmbeddedTextureInfo &embTex, m_importer->embeddedTextures()) + for (const Importer::EmbeddedTextureInfo &embTex : embeddedTextures) imageList << opts.outDir + embTex.name; - foreach (const QString &filename, imageList) { + for (const QString &filename : qAsConst(imageList)) { if (QFileInfo(filename).suffix().toLower() != QStringLiteral("png")) continue; QByteArray cmd = QByteArrayLiteral("etc1tool "); @@ -1720,7 +1725,7 @@ QString GltfExporter::exportNode(const Importer::Node *n, QJsonObject &nodes) QJsonObject node; node["name"] = n->name; QJsonArray children; - foreach (const Importer::Node *c, n->children) { + for (const Importer::Node *c : n->children) { if (nodeIsUseful(c)) children << exportNode(c, nodes); } @@ -1898,19 +1903,19 @@ void GltfExporter::exportMaterials(QJsonObject &materials, QHash<QString, QStrin void GltfExporter::writeShader(const QString &src, const QString &dst, const QVector<QPair<QByteArray, QByteArray> > &substTab) { - for (size_t i = 0; i < sizeof(shaders) / sizeof(Shader); ++i) { + for (const Shader shader : shaders) { QByteArray name = src.toUtf8(); - if (!qstrcmp(shaders[i].name, name.constData())) { + if (!qstrcmp(shader.name, name.constData())) { QString outfn = opts.outDir + dst; QFile outf(outfn); if (outf.open(QIODevice::WriteOnly | QIODevice::Truncate)) { m_files.insert(QFileInfo(outf.fileName()).fileName()); if (opts.showLog) qDebug() << "Writing" << outfn; - foreach (const QString &s, QString::fromUtf8(shaders[i].text).split('\n')) { - QString line = s; - for (int i = 0; i < substTab.count(); ++i) - line.replace(substTab[i].first, substTab[i].second); + const auto lines = QString::fromUtf8(shader.text).split('\n'); + for (QString line : lines) { + for (const auto &subst : substTab) + line.replace(subst.first, subst.second); line += QStringLiteral("\n"); outf.write(line.toUtf8()); } @@ -1923,7 +1928,7 @@ void GltfExporter::writeShader(const QString &src, const QString &dst, const QVe void GltfExporter::exportParameter(QJsonObject &dst, const QVector<ProgramInfo::Param> ¶ms) { - foreach (const ProgramInfo::Param ¶m, params) { + for (const ProgramInfo::Param ¶m : params) { QJsonObject parameter; parameter["type"] = int(param.type); if (!param.semantic.isEmpty()) @@ -1951,7 +1956,7 @@ void GltfExporter::exportTechniques(QJsonObject &obj, const QString &basename) QJsonObject shaders; QHash<QString, QString> shaderMap; - foreach (ProgramInfo *prog, m_usedPrograms) { + for (ProgramInfo *prog : qAsConst(m_usedPrograms)) { QString newName; if (!shaderMap.contains(prog->vertShader)) { QJsonObject vertexShader; @@ -2001,47 +2006,51 @@ void GltfExporter::exportTechniques(QJsonObject &obj, const QString &basename) obj["shaders"] = shaders; QJsonObject programs; - QHash<ProgramInfo *, ProgramNames> programMap; - foreach (ProgramInfo *prog, m_usedPrograms) { + QHash<const ProgramInfo *, ProgramNames> programMap; + for (const ProgramInfo *prog : qAsConst(m_usedPrograms)) { QJsonObject program; program["vertexShader"] = shaderMap[prog->vertShader]; program["fragmentShader"] = shaderMap[prog->fragShader]; QJsonArray attrs; - foreach (const ProgramInfo::Param ¶m, prog->attributes) + for (const ProgramInfo::Param ¶m : prog->attributes) { attrs << param.nameInShader; + } program["attributes"] = attrs; QString programName = newProgramName(); programMap[prog].name = programName; programs[programMap[prog].name] = program; if (opts.genCore) { - program["vertexShader"] = shaderMap[QString(prog->vertShader + QStringLiteral("_core"))]; - program["fragmentShader"] = shaderMap[QString(prog->fragShader + QStringLiteral("_core"))]; + program["vertexShader"] = shaderMap[QString(prog->vertShader + QLatin1String("_core"))]; + program["fragmentShader"] = shaderMap[QString(prog->fragShader + QLatin1String("_core"))]; QJsonArray attrs; - foreach (const ProgramInfo::Param ¶m, prog->attributes) + for (const ProgramInfo::Param ¶m : prog->attributes) { attrs << param.nameInShader; + } program["attributes"] = attrs; - programMap[prog].coreName = programName + QStringLiteral("_core"); + programMap[prog].coreName = programName + QLatin1String("_core"); programs[programMap[prog].coreName] = program; } } obj["programs"] = programs; QJsonObject techniques; - foreach (const TechniqueInfo &techniqueInfo, m_techniques) { + for (const TechniqueInfo &techniqueInfo : qAsConst(m_techniques)) { QJsonObject technique; QJsonObject parameters; - ProgramInfo *prog = techniqueInfo.prog; + const ProgramInfo *prog = techniqueInfo.prog; exportParameter(parameters, prog->attributes); exportParameter(parameters, prog->uniforms); technique["parameters"] = parameters; technique["program"] = programMap[prog].name; QJsonObject progAttrs; - foreach (const ProgramInfo::Param ¶m, prog->attributes) + for (const ProgramInfo::Param ¶m : prog->attributes) { progAttrs[param.nameInShader] = param.name; + } technique["attributes"] = progAttrs; QJsonObject progUniforms; - foreach (const ProgramInfo::Param ¶m, prog->uniforms) + for (const ProgramInfo::Param ¶m : prog->uniforms) { progUniforms[param.nameInShader] = param.name; + } technique["uniforms"] = progUniforms; QJsonObject states; QJsonArray enabledStates; @@ -2074,7 +2083,8 @@ void GltfExporter::exportAnimations(QJsonObject &obj, QVector<Importer::MeshInfo::BufferView> &bvList, QVector<Importer::MeshInfo::Accessor> &accList) { - if (m_importer->animations().isEmpty()) { + const auto animationInfos = m_importer->animations(); + if (animationInfos.empty()) { obj["animations"] = QJsonObject(); return; } @@ -2083,7 +2093,7 @@ void GltfExporter::exportAnimations(QJsonObject &obj, QByteArray extraData; int sz = 0; - foreach (const Importer::AnimationInfo &ai, m_importer->animations()) + for (const Importer::AnimationInfo &ai : animationInfos) sz += ai.keyFrames.count() * (1 + 3 + 4 + 3) * sizeof(float); extraData.resize(sz); @@ -2091,7 +2101,7 @@ void GltfExporter::exportAnimations(QJsonObject &obj, float *p = base; QJsonObject animations; - foreach (const Importer::AnimationInfo &ai, m_importer->animations()) { + for (const Importer::AnimationInfo &ai : animationInfos) { QJsonObject animation; animation["name"] = ai.name; animation["count"] = ai.keyFrames.count(); @@ -2157,7 +2167,7 @@ void GltfExporter::exportAnimations(QJsonObject &obj, acc.componentType = GLT_FLOAT; acc.type = QStringLiteral("SCALAR"); acc.offset = uint((p - base) * sizeof(float)); - foreach (const Importer::KeyFrame &kf, ai.keyFrames) + for (const Importer::KeyFrame &kf : ai.keyFrames) *p++ = kf.t; parameters["TIME"] = acc.name; accList << acc; @@ -2168,7 +2178,7 @@ void GltfExporter::exportAnimations(QJsonObject &obj, acc.type = QStringLiteral("VEC3"); acc.offset = uint((p - base) * sizeof(float)); QVector<float> lastV; - foreach (const Importer::KeyFrame &kf, ai.keyFrames) { + for (const Importer::KeyFrame &kf : ai.keyFrames) { const QVector<float> *v = kf.transValid ? &kf.trans : &lastV; *p++ = v->at(0); *p++ = v->at(1); @@ -2185,7 +2195,7 @@ void GltfExporter::exportAnimations(QJsonObject &obj, acc.type = QStringLiteral("VEC4"); acc.offset = uint((p - base) * sizeof(float)); QVector<float> lastV; - foreach (const Importer::KeyFrame &kf, ai.keyFrames) { + for (const Importer::KeyFrame &kf : ai.keyFrames) { const QVector<float> *v = kf.rotValid ? &kf.rot : &lastV; *p++ = v->at(1); // x *p++ = v->at(2); // y @@ -2203,7 +2213,7 @@ void GltfExporter::exportAnimations(QJsonObject &obj, acc.type = QStringLiteral("VEC3"); acc.offset = uint((p - base) * sizeof(float)); QVector<float> lastV; - foreach (const Importer::KeyFrame &kf, ai.keyFrames) { + for (const Importer::KeyFrame &kf : ai.keyFrames) { const QVector<float> *v = kf.scaleValid ? &kf.scale : &lastV; *p++ = v->at(0); *p++ = v->at(1); @@ -2302,7 +2312,7 @@ void GltfExporter::save(const QString &inputFilename) m_obj["buffers"] = buffers; QJsonObject bufferViews; - foreach (const Importer::MeshInfo::BufferView &bv, bvList) { + for (const Importer::MeshInfo::BufferView &bv : qAsConst(bvList)) { QJsonObject bufferView; bufferView["buffer"] = bufList[bv.bufIndex].name; bufferView["byteLength"] = int(bv.length); @@ -2314,7 +2324,7 @@ void GltfExporter::save(const QString &inputFilename) m_obj["bufferViews"] = bufferViews; QJsonObject accessors; - foreach (const Importer::MeshInfo::Accessor &acc, accList) { + for (const Importer::MeshInfo::Accessor &acc : qAsConst(accList)) { QJsonObject accessor; accessor["bufferView"] = acc.bufferView; accessor["byteOffset"] = int(acc.offset); @@ -2332,14 +2342,14 @@ void GltfExporter::save(const QString &inputFilename) QJsonObject meshes; for (uint i = 0; i < m_importer->meshCount(); ++i) { - Importer::MeshInfo meshInfo = m_importer->meshInfo(i); + const Importer::MeshInfo meshInfo = m_importer->meshInfo(i); QJsonObject mesh; mesh["name"] = meshInfo.originalName; QJsonArray prims; QJsonObject prim; prim["mode"] = 4; // triangles QJsonObject attrs; - foreach (const Importer::MeshInfo::Accessor &acc, meshInfo.accessors) { + for (const Importer::MeshInfo::Accessor &acc : meshInfo.accessors) { if (acc.usage != QStringLiteral("INDEX")) attrs[acc.usage] = acc.name; else @@ -2354,7 +2364,8 @@ void GltfExporter::save(const QString &inputFilename) m_obj["meshes"] = meshes; QJsonObject cameras; - foreach (const Importer::CameraInfo &camInfo, m_importer->cameraInfo()) { + const auto cameraInfos = m_importer->cameraInfo(); + for (const Importer::CameraInfo &camInfo : cameraInfos) { QJsonObject camera; QJsonObject persp; persp["aspect_ratio"] = camInfo.aspectRatio; @@ -2369,7 +2380,7 @@ void GltfExporter::save(const QString &inputFilename) QJsonArray sceneNodes; QJsonObject nodes; - foreach (const Importer::Node *n, m_importer->rootNode()->children) { + for (const Importer::Node *n : qAsConst(m_importer->rootNode()->children)) { if (nodeIsUseful(n)) sceneNodes << exportNode(n, nodes); } @@ -2459,7 +2470,7 @@ void GltfExporter::save(const QString &inputFilename) QByteArray pre = "<RCC><qresource prefix=\"/models\">\n"; QByteArray post = "</qresource></RCC>\n"; f.write(pre); - foreach (const QString &file,m_files) { + for (const QString &file : qAsConst(m_files)) { QString line = QString(QStringLiteral(" <file>%1</file>\n")).arg(file); f.write(line.toUtf8()); } @@ -2539,12 +2550,13 @@ int main(int argc, char **argv) QDir().mkpath(opts.outDir); } - if (cmdLine.positionalArguments().isEmpty()) + const auto fileNames = cmdLine.positionalArguments(); + if (fileNames.isEmpty()) cmdLine.showHelp(); AssimpImporter importer; GltfExporter exporter(&importer); - foreach (const QString &fn, cmdLine.positionalArguments()) { + for (const QString &fn : fileNames) { if (!importer.load(fn)) { qWarning() << "Failed to import" << fn; continue; diff --git a/tools/qgltf/qgltf.pro b/tools/qgltf/qgltf.pro index a61607204..a19f2e91c 100644 --- a/tools/qgltf/qgltf.pro +++ b/tools/qgltf/qgltf.pro @@ -1,6 +1,9 @@ option(host_build) !cross_compile:load(qt_build_paths) +# Qt3D is free of Q_FOREACH - make sure it stays that way: +DEFINES *= QT_NO_FOREACH + SOURCES = qgltf.cpp include(../../src/3rdparty/assimp/assimp_dependency.pri) |