summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/qt3d/exampleresources/assets/cubemaps/miramar/qt_attribution.json14
-rw-r--r--examples/qt3d/simple-qml/CameraController.qml297
-rw-r--r--examples/qt3d/simple-qml/doc/src/simple-qml.qdoc16
-rw-r--r--examples/qt3d/simple-qml/simple-qml.qrc1
-rw-r--r--src/core/jobs/qthreadpooler.cpp5
-rw-r--r--src/core/qchangearbiter.cpp7
-rw-r--r--src/doc/src/qmlextramaterials.qdoc14
-rw-r--r--src/extras/defaults/qmorphphongmaterial.cpp26
-rw-r--r--src/extras/defaults/qmorphphongmaterial_p.h3
-rw-r--r--src/extras/defaults/qorbitcameracontroller.cpp2
-rw-r--r--src/extras/extras.qrc3
-rw-r--r--src/extras/shaders/es2/morphphong.vert2
-rw-r--r--src/extras/shaders/es3/default.vert82
-rw-r--r--src/extras/shaders/es3/light.inc.frag25
-rw-r--r--src/extras/shaders/es3/metalrough.inc.frag348
-rw-r--r--src/extras/shaders/gl3/morphphong.vert2
-rw-r--r--src/extras/text/qtext2dentity.cpp15
-rw-r--r--src/extras/text/qtext2dentity_p.h1
-rw-r--r--src/quick3d/imports/animation/dependencies.json7
-rw-r--r--src/quick3d/imports/animation/plugins.qmltypes242
-rw-r--r--src/quick3d/imports/core/plugins.qmltypes320
-rw-r--r--src/quick3d/imports/extras/dependencies.json12
-rw-r--r--src/quick3d/imports/extras/plugins.qmltypes544
-rw-r--r--src/quick3d/imports/input/dependencies.json7
-rw-r--r--src/quick3d/imports/input/plugins.qmltypes208
-rw-r--r--src/quick3d/imports/logic/dependencies.json7
-rw-r--r--src/quick3d/imports/logic/plugins.qmltypes65
-rw-r--r--src/quick3d/imports/render/dependencies.json7
-rw-r--r--src/quick3d/imports/render/plugins.qmltypes989
-rw-r--r--src/quick3d/imports/scene2d/dependencies.json12
-rw-r--r--src/quick3d/imports/scene2d/plugins.qmltypes85
-rw-r--r--src/quick3d/imports/scene3d/dependencies.json12
-rw-r--r--src/quick3d/imports/scene3d/plugins.qmltypes9
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem.cpp3
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer.cpp58
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer_p.h1
-rw-r--r--src/render/materialsystem/prototypes/default.json9
-rw-r--r--src/render/renderers/opengl/graphicshelpers/graphicshelperes3.cpp8
-rw-r--r--src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp13
-rw-r--r--src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2_p.h1
-rw-r--r--src/render/renderers/opengl/graphicshelpers/graphicshelperes3_p.h1
-rw-r--r--src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp5
-rw-r--r--src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h1
-rw-r--r--src/render/renderers/opengl/renderer/renderer.cpp3
-rw-r--r--src/render/renderers/opengl/textures/gltexture.cpp4
45 files changed, 2245 insertions, 1251 deletions
diff --git a/examples/qt3d/exampleresources/assets/cubemaps/miramar/qt_attribution.json b/examples/qt3d/exampleresources/assets/cubemaps/miramar/qt_attribution.json
new file mode 100644
index 000000000..6eccf001c
--- /dev/null
+++ b/examples/qt3d/exampleresources/assets/cubemaps/miramar/qt_attribution.json
@@ -0,0 +1,14 @@
+{
+ "Id": "miramar-sky",
+ "Name": "Miramar Skybox Textures",
+ "QDocModule": "qt3d",
+ "QtUsage": "Used in the anaglyph-rendering example and autotests of Qt 3D.",
+
+ "QtParts": [ "examples", "tests" ] ,
+ "Description": "High res environment map (converted to webgl).",
+ "Homepage": "http://www.zfight.com/misc/files/textures/envmap_miramar.rar",
+ "DownloadLocation": "https://opengameart.org/sites/default/files/envmap_miramar.zip",
+ "License": "Modify however you like, just cred me for my work, maybe link to my page.",
+ "LicenseFile": "README.txt",
+ "Copyright": "Copyright (c) Jockum Skoglund aka hipshot"
+}
diff --git a/examples/qt3d/simple-qml/CameraController.qml b/examples/qt3d/simple-qml/CameraController.qml
deleted file mode 100644
index 69eff70ed..000000000
--- a/examples/qt3d/simple-qml/CameraController.qml
+++ /dev/null
@@ -1,297 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 Paul Lemire <paul.lemire350@gmail.com>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt3D.Core 2.0
-import Qt3D.Render 2.0
-import Qt3D.Input 2.0
-import Qt3D.Logic 2.0
-import QtQml 2.2
-
-Entity {
- id: root
- property Camera camera
- property real linearSpeed: 10.0
- property real orbitSpeed: -180.0
- property real lookSpeed: 180.0
- property bool firstPersonMode: true
-
- QtObject {
- id: d
- readonly property vector3d firstPersonUp: Qt.vector3d(0, 1, 0)
- property bool leftMouseButtonPressed: false
- property bool rightMouseButtonPressed: false
- property real vx: 0;
- property real vy: 0;
- property real vz: 0;
- property real dx: 0
- property real dy: 0
- property bool fineMotion: false
- }
-
- KeyboardDevice {
- id: keyboardSourceDevice
- }
-
- MouseDevice {
- id: mouseSourceDevice
- sensitivity: d.fineMotion ? 0.01 : 0.1
- }
-
- LogicalDevice {
- id: cameraControlDevice
-
- actions: [
- Action {
- name: "LMB"
- inputs: [
- ActionInput {
- sourceDevice: mouseSourceDevice
- buttons: [MouseEvent.LeftButton]
- }
- ]
- },
- Action {
- name: "RMB"
- inputs: [
- ActionInput {
- sourceDevice: mouseSourceDevice
- buttons: [MouseEvent.RightButton]
- }
- ]
- },
- Action {
- name: "fineMotion"
- inputs: [
- ActionInput {
- sourceDevice: keyboardSourceDevice
- buttons: [Qt.Key_Shift]
- }
- ]
- }
-
- ] // actions
-
- axes: [
- // Rotation
- Axis {
- name: "RX"
- inputs: [
- AnalogAxisInput {
- sourceDevice: mouseSourceDevice
- axis: MouseDevice.X
- }
- ]
- },
- Axis {
- name: "RY"
- inputs: [
- AnalogAxisInput {
- sourceDevice: mouseSourceDevice
- axis: MouseDevice.Y
- }
- ]
- },
- // Translation
- Axis {
- name: "TX"
- inputs: [
- ButtonAxisInput {
- sourceDevice: keyboardSourceDevice
- buttons: [Qt.Key_Left]
- scale: -1.0
- },
- ButtonAxisInput {
- sourceDevice: keyboardSourceDevice
- buttons: [Qt.Key_Right]
- scale: 1.0
- }
- ]
- },
- Axis {
- name: "TZ"
- inputs: [
- ButtonAxisInput {
- sourceDevice: keyboardSourceDevice
- buttons: [Qt.Key_Up]
- scale: 1.0
- },
- ButtonAxisInput {
- sourceDevice: keyboardSourceDevice
- buttons: [Qt.Key_Down]
- scale: -1.0
- }
- ]
- },
- Axis {
- name: "TY"
- inputs: [
- ButtonAxisInput {
- sourceDevice: keyboardSourceDevice
- buttons: [Qt.Key_PageUp]
- scale: 1.0
- },
- ButtonAxisInput {
- sourceDevice: keyboardSourceDevice
- buttons: [Qt.Key_PageDown]
- scale: -1.0
- }
- ]
- }
- ] // axes
- }
-
- components: [
- AxisActionHandler {
- id: handler
- logicalDevice: cameraControlDevice
-
- onAxisValueChanged: {
-
- switch (name) {
-
- case "TX": {
- d.vx = axisValue * linearSpeed
- break;
- }
-
- case "TY": {
- d.vy = axisValue * linearSpeed
- break;
- }
-
- case "TZ": {
- d.vz = axisValue * linearSpeed
- break;
- }
-
- case "RX": {
- d.dx = axisValue;
- break;
- }
-
- case "RY": {
- d.dy = axisValue;
- break;
- }
-
- }
- }
-
- onActionStarted: {
-
- switch (name) {
-
- case "LMB": {
- d.leftMouseButtonPressed = true;
- break;
- }
-
- case "RMB": {
- d.rightMouseButtonPressed = true;
- break;
- }
-
- case "fineMotion": {
- console.log("fineMotion started")
- d.fineMotion = true;
- break;
- }
-
- }
-
- }
-
- onActionFinished: {
-
- switch (name) {
-
- case "LMB": {
- d.leftMouseButtonPressed = false;
- break;
- }
-
- case "RMB": {
- d.rightMouseButtonPressed = false;
- break;
- }
-
- case "fineMotion": {
- console.log("fineMotion finished")
- d.fineMotion = false;
- break;
- }
-
- }
- }
- },
-
- FrameAction {
- onTriggered: {
- // The time difference since the last frame is passed in as the
- // argument dt. It is a floating point value in units of seconds.
- root.camera.translate(Qt.vector3d(d.vx, d.vy, d.vz).times(dt))
-
- if (d.leftMouseButtonPressed) {
- if (root.firstPersonMode)
- root.camera.pan(root.lookSpeed * d.dx * dt, d.firstPersonUp)
- else
- root.camera.pan(root.lookSpeed * d.dx * dt)
- root.camera.tilt(root.lookSpeed * d.dy * dt)
- } else if (d.rightMouseButtonPressed) {
- if (root.firstPersonMode)
- root.camera.panAboutViewCenter(root.lookSpeed * d.dx * dt, d.firstPersonUp)
- else
- root.camera.panAboutViewCenter(root.lookSpeed * d.dx * dt)
- root.camera.tiltAboutViewCenter(root.orbitSpeed * d.dy * dt)
- }
- }
- }
- ] // components
-}
diff --git a/examples/qt3d/simple-qml/doc/src/simple-qml.qdoc b/examples/qt3d/simple-qml/doc/src/simple-qml.qdoc
index 13ca8ff1f..9d4f55c52 100644
--- a/examples/qt3d/simple-qml/doc/src/simple-qml.qdoc
+++ b/examples/qt3d/simple-qml/doc/src/simple-qml.qdoc
@@ -65,20 +65,4 @@
\skipto InputSettings
\printuntil }
-
- \section1
-
- \section1 Specifying Settings and Axes
-
- In the \e CameraController.qml file, we use the LogicalDevice type to define
- a set of actions and axes to use within the application:
-
- \quotefromfile simple-qml/CameraController.qml
- \skipto LogicalDevice {
- \printuntil ]
- \dots
- \skipto axes
- \printuntil ]
- \dots
- \skipto /^\}/
*/
diff --git a/examples/qt3d/simple-qml/simple-qml.qrc b/examples/qt3d/simple-qml/simple-qml.qrc
index 9d95d9835..5f6483ac3 100644
--- a/examples/qt3d/simple-qml/simple-qml.qrc
+++ b/examples/qt3d/simple-qml/simple-qml.qrc
@@ -1,6 +1,5 @@
<RCC>
<qresource prefix="/">
<file>main.qml</file>
- <file>CameraController.qml</file>
</qresource>
</RCC>
diff --git a/src/core/jobs/qthreadpooler.cpp b/src/core/jobs/qthreadpooler.cpp
index 6819faca7..ca123ddad 100644
--- a/src/core/jobs/qthreadpooler.cpp
+++ b/src/core/jobs/qthreadpooler.cpp
@@ -41,6 +41,11 @@
#include <QtCore/QDebug>
#if QT_CONFIG(qt3d_profile_jobs)
+
+#ifdef Q_OS_ANDROID
+#include <QtCore/QStandardPaths>
+#endif
+
#include <QtCore/QCoreApplication>
#include <QtCore/QFile>
#include <QtCore/QThreadStorage>
diff --git a/src/core/qchangearbiter.cpp b/src/core/qchangearbiter.cpp
index d6c7e05df..2e32d6722 100644
--- a/src/core/qchangearbiter.cpp
+++ b/src/core/qchangearbiter.cpp
@@ -217,12 +217,15 @@ void QChangeArbiter::registerSceneObserver(QSceneObserverInterface *observer)
void QChangeArbiter::unregisterObserver(QObserverInterface *observer, QNodeId nodeId)
{
QMutexLocker locker(&m_mutex);
- if (m_nodeObservations.contains(nodeId)) {
- QObserverList &observers = m_nodeObservations[nodeId];
+ const auto it = m_nodeObservations.find(nodeId);
+ if (it != m_nodeObservations.end()) {
+ QObserverList &observers = it.value();
for (int i = observers.count() - 1; i >= 0; i--) {
if (observers[i].second == observer)
observers.removeAt(i);
}
+ if (observers.isEmpty())
+ m_nodeObservations.erase(it);
}
}
diff --git a/src/doc/src/qmlextramaterials.qdoc b/src/doc/src/qmlextramaterials.qdoc
index 10198845f..c54cc948b 100644
--- a/src/doc/src/qmlextramaterials.qdoc
+++ b/src/doc/src/qmlextramaterials.qdoc
@@ -28,6 +28,8 @@
/*!
\qmltype DiffuseMapMaterial
\inqmlmodule Qt3D.Extras
+ \obsolete
+
\brief The DiffuseMapMaterial provides a default implementation of the phong lighting effect
where the diffuse light component is read from a texture map.
\since 5.7
@@ -86,6 +88,8 @@
/*!
\qmltype DiffuseSpecularMapMaterial
\inqmlmodule Qt3D.Extras
+ \obsolete
+
\brief The DiffuseSpecularMapMaterial provides a default implementation of the phong lighting
effect where the diffuse and specular light components are read from texture maps.
\since 5.7
@@ -220,6 +224,8 @@
/*!
\qmltype NormalDiffuseMapAlphaMaterial
\inqmlmodule Qt3D.Extras
+ \obsolete
+
\brief The NormalDiffuseMapAlphaMaterial provides a specialization of NormalDiffuseMapMaterial
with alpha coverage and a depth test performed in the rendering pass.
\since 5.7
@@ -291,6 +297,8 @@
/*!
\qmltype NormalDiffuseMapMaterial
\inqmlmodule Qt3D.Extras
+ \obsolete
+
\brief The NormalDiffuseMapMaterial provides a default implementation of the phong lighting
and bump effect where the diffuse light component is read from a texture map and the normals of
the mesh being rendered from a normal texture map.
@@ -363,6 +371,8 @@
/*!
\qmltype NormalDiffuseSpecularMapMaterial
\inqmlmodule Qt3D.Extras
+ \obsolete
+
\brief The NormalDiffuseSpecularMapMaterial provides a default implementation of the phong
lighting and bump effect where the diffuse and specular light components are read from texture
maps and the normals of the mesh being rendered from a normal texture map.
@@ -465,6 +475,8 @@
/*!
\qmltype PhongAlphaMaterial
\inqmlmodule Qt3D.Extras
+ \obsolete
+
\brief The PhongAlphaMaterial class provides a default implementation of
the phong lighting effect with alpha.
\since 5.7
@@ -516,6 +528,8 @@
/*!
\qmltype PhongMaterial
\inqmlmodule Qt3D.Extras
+ \obsolete
+
\brief The PhongMaterial class provides a default implementation of the phong lighting effect.
\since 5.7
\inherits Qt3D.Render::Material
diff --git a/src/extras/defaults/qmorphphongmaterial.cpp b/src/extras/defaults/qmorphphongmaterial.cpp
index ade9f8542..1711a21dd 100644
--- a/src/extras/defaults/qmorphphongmaterial.cpp
+++ b/src/extras/defaults/qmorphphongmaterial.cpp
@@ -44,6 +44,7 @@
#include <Qt3DRender/qparameter.h>
#include <Qt3DRender/qrenderpass.h>
#include <Qt3DRender/qgraphicsapifilter.h>
+#include <Qt3DRender/qshaderprogrambuilder.h>
#include <QUrl>
#include <QVector3D>
#include <QVector4D>
@@ -57,9 +58,9 @@ namespace Qt3DExtras {
QMorphPhongMaterialPrivate::QMorphPhongMaterialPrivate()
: QMaterialPrivate()
, m_phongEffect(new QEffect())
- , m_ambientParameter(new QParameter(QStringLiteral("ka"), QColor::fromRgbF(0.05f, 0.05f, 0.05f, 1.0f)))
- , m_diffuseParameter(new QParameter(QStringLiteral("kd"), QColor::fromRgbF(0.7f, 0.7f, 0.7f, 1.0f)))
- , m_specularParameter(new QParameter(QStringLiteral("ks"), QColor::fromRgbF(0.01f, 0.01f, 0.01f, 1.0f)))
+ , m_ambientParameter(new QParameter(QStringLiteral("ka"), QColor::fromRgbF(0.05, 0.05, 0.05, 1.0)))
+ , m_diffuseParameter(new QParameter(QStringLiteral("kd"), QColor::fromRgbF(0.7, 0.7, 0.7, 1.0)))
+ , m_specularParameter(new QParameter(QStringLiteral("ks"), QColor::fromRgbF(0.01, 0.01, 0.01, 1.0)))
, m_shininessParameter(new QParameter(QStringLiteral("shininess"), 150.0f))
, m_interpolatorParameter(new QParameter(QStringLiteral("interpolator"), 0.0f))
, m_phongGL3Technique(new QTechnique())
@@ -70,12 +71,16 @@ QMorphPhongMaterialPrivate::QMorphPhongMaterialPrivate()
, m_phongES2RenderPass(new QRenderPass())
, m_phongGL3Shader(new QShaderProgram())
, m_phongGL2ES2Shader(new QShaderProgram())
+ , m_phongGL3ShaderBuilder(new QShaderProgramBuilder())
+ , m_phongGL2ES2ShaderBuilder(new QShaderProgramBuilder())
, m_filterKey(new QFilterKey)
{
}
void QMorphPhongMaterialPrivate::init()
{
+ Q_Q(QMorphPhongMaterial);
+
connect(m_ambientParameter, &Qt3DRender::QParameter::valueChanged,
this, &QMorphPhongMaterialPrivate::handleAmbientChanged);
connect(m_diffuseParameter, &Qt3DRender::QParameter::valueChanged,
@@ -88,9 +93,19 @@ void QMorphPhongMaterialPrivate::init()
this, &QMorphPhongMaterialPrivate::handleInterpolatorChanged);
m_phongGL3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/morphphong.vert"))));
- m_phongGL3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/phong.frag"))));
+ m_phongGL3ShaderBuilder->setParent(q);
+ m_phongGL3ShaderBuilder->setShaderProgram(m_phongGL3Shader);
+ m_phongGL3ShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_phongGL3ShaderBuilder->setEnabledLayers({QStringLiteral("diffuse"),
+ QStringLiteral("specular"),
+ QStringLiteral("normal")});
m_phongGL2ES2Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/morphphong.vert"))));
- m_phongGL2ES2Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/phong.frag"))));
+ m_phongGL2ES2ShaderBuilder->setParent(q);
+ m_phongGL2ES2ShaderBuilder->setShaderProgram(m_phongGL2ES2Shader);
+ m_phongGL2ES2ShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_phongGL2ES2ShaderBuilder->setEnabledLayers({QStringLiteral("diffuse"),
+ QStringLiteral("specular"),
+ QStringLiteral("normal")});
m_phongGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_phongGL3Technique->graphicsApiFilter()->setMajorVersion(3);
@@ -115,7 +130,6 @@ void QMorphPhongMaterialPrivate::init()
m_phongGL2Technique->addRenderPass(m_phongGL2RenderPass);
m_phongES2Technique->addRenderPass(m_phongES2RenderPass);
- Q_Q(QMorphPhongMaterial);
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
diff --git a/src/extras/defaults/qmorphphongmaterial_p.h b/src/extras/defaults/qmorphphongmaterial_p.h
index 25bff9042..28b7750d9 100644
--- a/src/extras/defaults/qmorphphongmaterial_p.h
+++ b/src/extras/defaults/qmorphphongmaterial_p.h
@@ -60,6 +60,7 @@ class QTechnique;
class QParameter;
class QShaderProgram;
class QRenderPass;
+class QShaderProgramBuilder;
} // namespace Qt3DRender
@@ -94,6 +95,8 @@ public:
Qt3DRender::QRenderPass *m_phongES2RenderPass;
Qt3DRender::QShaderProgram *m_phongGL3Shader;
Qt3DRender::QShaderProgram *m_phongGL2ES2Shader;
+ Qt3DRender::QShaderProgramBuilder *m_phongGL3ShaderBuilder;
+ Qt3DRender::QShaderProgramBuilder *m_phongGL2ES2ShaderBuilder;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QMorphPhongMaterial)
diff --git a/src/extras/defaults/qorbitcameracontroller.cpp b/src/extras/defaults/qorbitcameracontroller.cpp
index 6d3e83bcb..aff91f6cf 100644
--- a/src/extras/defaults/qorbitcameracontroller.cpp
+++ b/src/extras/defaults/qorbitcameracontroller.cpp
@@ -186,7 +186,7 @@ void QOrbitCameraController::moveCamera(const QAbstractCameraController::InputSt
} else if (state.shiftKeyActive) {
if (zoomDistance(camera()->position(), theCamera->viewCenter()) > d->m_zoomInLimit * d->m_zoomInLimit) {
// Dolly
- theCamera->translate(QVector3D(0, 0, state.tyAxisValue * linearSpeed() * dt), theCamera->DontTranslateViewCenter);
+ theCamera->translate(QVector3D(0, 0, state.tzAxisValue * linearSpeed() * dt), theCamera->DontTranslateViewCenter);
} else {
theCamera->translate(QVector3D(0, 0, -0.5), theCamera->DontTranslateViewCenter);
}
diff --git a/src/extras/extras.qrc b/src/extras/extras.qrc
index bfb14f3f9..8bbffd272 100644
--- a/src/extras/extras.qrc
+++ b/src/extras/extras.qrc
@@ -5,14 +5,17 @@
<file>shaders/gl3/light.inc.frag</file>
<file>shaders/es2/light.inc.frag</file>
<file>shaders/es2/light.inc.frag100</file>
+ <file>shaders/es3/light.inc.frag</file>
<file>shaders/gl3/phong.inc.frag</file>
<file>shaders/es2/phong.inc.frag</file>
<file>shaders/es2/phong.inc.frag100</file>
<file>shaders/gl3/metalrough.inc.frag</file>
+ <file>shaders/es3/metalrough.inc.frag</file>
<file>shaders/gl3/coordinatesystems.inc</file>
<file>shaders/es2/coordinatesystems.inc</file>
<file>shaders/gl3/default.vert</file>
<file>shaders/es2/default.vert</file>
+ <file>shaders/es3/default.vert</file>
<file>shaders/gl3/pervertexcolor.frag</file>
<file>shaders/gl3/pervertexcolor.vert</file>
<file>shaders/es2/pervertexcolor.frag</file>
diff --git a/src/extras/shaders/es2/morphphong.vert b/src/extras/shaders/es2/morphphong.vert
index d091e87c0..89877dca8 100644
--- a/src/extras/shaders/es2/morphphong.vert
+++ b/src/extras/shaders/es2/morphphong.vert
@@ -25,7 +25,7 @@ void main()
morphNormal = normalize(vertexNormal + vertexNormalTarget * abs(interpolator));
}
- worldNormal = normalize( modelNormalMatrix * morphPos );
+ worldNormal = normalize( modelNormalMatrix * morphNormal );
worldPosition = vec3( modelMatrix * vec4( morphPos, 1.0 ) );
gl_Position = modelViewProjection * vec4( morphPos, 1.0 );
diff --git a/src/extras/shaders/es3/default.vert b/src/extras/shaders/es3/default.vert
new file mode 100644
index 000000000..7641882f2
--- /dev/null
+++ b/src/extras/shaders/es3/default.vert
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#version 300 es
+
+in vec3 vertexPosition;
+in vec3 vertexNormal;
+in vec4 vertexTangent;
+in vec2 vertexTexCoord;
+
+out vec3 worldPosition;
+out vec3 worldNormal;
+out vec4 worldTangent;
+out vec2 texCoord;
+
+uniform mat4 modelMatrix;
+uniform mat3 modelNormalMatrix;
+uniform mat4 modelViewProjection;
+
+uniform float texCoordScale;
+
+void main()
+{
+ // Pass through scaled texture coordinates
+ texCoord = vertexTexCoord * texCoordScale;
+
+ // Transform position, normal, and tangent to world space
+ worldPosition = vec3(modelMatrix * vec4(vertexPosition, 1.0));
+ worldNormal = normalize(modelNormalMatrix * vertexNormal);
+ worldTangent.xyz = normalize(vec3(modelMatrix * vec4(vertexTangent.xyz, 0.0)));
+ worldTangent.w = vertexTangent.w;
+
+ // Calculate vertex position in clip coordinates
+ gl_Position = modelViewProjection * vec4(vertexPosition, 1.0);
+}
diff --git a/src/extras/shaders/es3/light.inc.frag b/src/extras/shaders/es3/light.inc.frag
new file mode 100644
index 000000000..9d03fca54
--- /dev/null
+++ b/src/extras/shaders/es3/light.inc.frag
@@ -0,0 +1,25 @@
+const int MAX_LIGHTS = 8;
+const int TYPE_POINT = 0;
+const int TYPE_DIRECTIONAL = 1;
+const int TYPE_SPOT = 2;
+struct Light {
+ int type;
+ vec3 position;
+ vec3 color;
+ float intensity;
+ vec3 direction;
+ float constantAttenuation;
+ float linearAttenuation;
+ float quadraticAttenuation;
+ float cutOffAngle;
+};
+uniform Light lights[MAX_LIGHTS];
+uniform int lightCount;
+
+// Pre-convolved environment maps
+struct EnvironmentLight {
+ highp samplerCube irradiance; // For diffuse contribution
+ highp samplerCube specular; // For specular contribution
+};
+uniform EnvironmentLight envLight;
+uniform int envLightCount;
diff --git a/src/extras/shaders/es3/metalrough.inc.frag b/src/extras/shaders/es3/metalrough.inc.frag
new file mode 100644
index 000000000..85f392f4c
--- /dev/null
+++ b/src/extras/shaders/es3/metalrough.inc.frag
@@ -0,0 +1,348 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+precision highp float;
+
+// Exposure correction
+uniform float exposure;
+// Gamma correction
+const float gamma = 2.2;
+
+#pragma include light.inc.frag
+
+int mipLevelCount(const in samplerCube cube)
+{
+ int baseSize = textureSize(cube, 0).x;
+ int nMips = int(log2(float(baseSize > 0 ? baseSize : 1))) + 1;
+ return nMips;
+}
+
+float remapRoughness(const in float roughness)
+{
+ // As per page 14 of
+ // http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf
+ // we remap the roughness to give a more perceptually linear response
+ // of "bluriness" as a function of the roughness specified by the user.
+ // r = roughness^2
+ const float maxSpecPower = 999999.0;
+ const float minRoughness = sqrt(2.0 / (maxSpecPower + 2.0));
+ return max(roughness * roughness, minRoughness);
+}
+
+float alphaToMipLevel(float alpha)
+{
+ float specPower = 2.0 / (alpha * alpha) - 2.0;
+
+ // We use the mip level calculation from Lys' default power drop, which in
+ // turn is a slight modification of that used in Marmoset Toolbag. See
+ // https://docs.knaldtech.com/doku.php?id=specular_lys for details.
+ // For now we assume a max specular power of 999999 which gives
+ // maxGlossiness = 1.
+ const float k0 = 0.00098;
+ const float k1 = 0.9921;
+ float glossiness = (pow(2.0, -10.0 / sqrt(specPower)) - k0) / k1;
+
+ // TODO: Optimize by doing this on CPU and set as
+ // uniform int envLight.specularMipLevels say (if present in shader).
+ // Lookup the number of mips in the specular envmap
+ int mipLevels = mipLevelCount(envLight.specular);
+
+ // Offset of smallest miplevel we should use (corresponds to specular
+ // power of 1). I.e. in the 32x32 sized mip.
+ const float mipOffset = 5.0;
+
+ // The final factor is really 1 - g / g_max but as mentioned above g_max
+ // is 1 by definition here so we can avoid the division. If we make the
+ // max specular power for the spec map configurable, this will need to
+ // be handled properly.
+ float mipLevel = (float(mipLevels) - 1.0 - mipOffset) * (1.0 - glossiness);
+ return mipLevel;
+}
+
+float normalDistribution(const in vec3 n, const in vec3 h, const in float alpha)
+{
+ // Blinn-Phong approximation - see
+ // http://graphicrants.blogspot.co.uk/2013/08/specular-brdf-reference.html
+ float specPower = 2.0 / (alpha * alpha) - 2.0;
+ return (specPower + 2.0) / (2.0 * 3.14159) * pow(max(dot(n, h), 0.0), specPower);
+}
+
+vec3 fresnelFactor(const in vec3 color, const in float cosineFactor)
+{
+ // Calculate the Fresnel effect value
+ vec3 f = color;
+ vec3 F = f + (1.0 - f) * pow(1.0 - cosineFactor, 5.0);
+ return clamp(F, f, vec3(1.0));
+}
+
+float geometricModel(const in float lDotN,
+ const in float vDotN,
+ const in vec3 h)
+{
+ // Implicit geometric model (equal to denominator in specular model).
+ // This currently assumes that there is no attenuation by geometric shadowing or
+ // masking according to the microfacet theory.
+ return lDotN * vDotN;
+}
+
+vec3 specularModel(const in vec3 F0,
+ const in float sDotH,
+ const in float sDotN,
+ const in float vDotN,
+ const in vec3 n,
+ const in vec3 h)
+{
+ // Clamp sDotN and vDotN to small positive value to prevent the
+ // denominator in the reflection equation going to infinity. Balance this
+ // by using the clamped values in the geometric factor function to
+ // avoid ugly seams in the specular lighting.
+ float sDotNPrime = max(sDotN, 0.001);
+ float vDotNPrime = max(vDotN, 0.001);
+
+ vec3 F = fresnelFactor(F0, sDotH);
+ float G = geometricModel(sDotNPrime, vDotNPrime, h);
+
+ vec3 cSpec = F * G / (4.0 * sDotNPrime * vDotNPrime);
+ return clamp(cSpec, vec3(0.0), vec3(1.0));
+}
+
+vec3 pbrModel(const in int lightIndex,
+ const in vec3 wPosition,
+ const in vec3 wNormal,
+ const in vec3 wView,
+ const in vec3 baseColor,
+ const in float metalness,
+ const in float alpha,
+ const in float ambientOcclusion)
+{
+ // Calculate some useful quantities
+ vec3 n = wNormal;
+ vec3 s = vec3(0.0);
+ vec3 v = wView;
+ vec3 h = vec3(0.0);
+
+ float vDotN = dot(v, n);
+ float sDotN = 0.0;
+ float sDotH = 0.0;
+ float att = 1.0;
+
+ if (lights[lightIndex].type != TYPE_DIRECTIONAL) {
+ // Point and Spot lights
+ vec3 sUnnormalized = vec3(lights[lightIndex].position) - wPosition;
+ s = normalize(sUnnormalized);
+
+ // Calculate the attenuation factor
+ sDotN = dot(s, n);
+ if (sDotN > 0.0) {
+ if (lights[lightIndex].constantAttenuation != 0.0
+ || lights[lightIndex].linearAttenuation != 0.0
+ || lights[lightIndex].quadraticAttenuation != 0.0) {
+ float dist = length(sUnnormalized);
+ att = 1.0 / (lights[lightIndex].constantAttenuation +
+ lights[lightIndex].linearAttenuation * dist +
+ lights[lightIndex].quadraticAttenuation * dist * dist);
+ }
+
+ // The light direction is in world space already
+ if (lights[lightIndex].type == TYPE_SPOT) {
+ // Check if fragment is inside or outside of the spot light cone
+ if (degrees(acos(dot(-s, lights[lightIndex].direction))) > lights[lightIndex].cutOffAngle)
+ sDotN = 0.0;
+ }
+ }
+ } else {
+ // Directional lights
+ // The light direction is in world space already
+ s = normalize(-lights[lightIndex].direction);
+ sDotN = dot(s, n);
+ }
+
+ h = normalize(s + v);
+ sDotH = dot(s, h);
+
+ // Calculate diffuse component
+ vec3 diffuseColor = (1.0 - metalness) * baseColor * lights[lightIndex].color;
+ vec3 diffuse = diffuseColor * max(sDotN, 0.0) / 3.14159;
+
+ // Calculate specular component
+ vec3 dielectricColor = vec3(0.04);
+ vec3 F0 = mix(dielectricColor, baseColor, metalness);
+ vec3 specularFactor = vec3(0.0);
+ if (sDotN > 0.0) {
+ specularFactor = specularModel(F0, sDotH, sDotN, vDotN, n, h);
+ specularFactor *= normalDistribution(n, h, alpha);
+ }
+ vec3 specularColor = lights[lightIndex].color;
+ vec3 specular = specularColor * specularFactor;
+
+ // Blend between diffuse and specular to conserver energy
+ vec3 color = att * lights[lightIndex].intensity * (specular + diffuse * (vec3(1.0) - specular));
+
+ // Reduce by ambient occlusion amount
+ color *= ambientOcclusion;
+
+ return color;
+}
+
+vec3 pbrIblModel(const in vec3 wNormal,
+ const in vec3 wView,
+ const in vec3 baseColor,
+ const in float metalness,
+ const in float alpha,
+ const in float ambientOcclusion)
+{
+ // Calculate reflection direction of view vector about surface normal
+ // vector in world space. This is used in the fragment shader to sample
+ // from the environment textures for a light source. This is equivalent
+ // to the l vector for punctual light sources. Armed with this, calculate
+ // the usual factors needed
+ vec3 n = wNormal;
+ vec3 l = reflect(-wView, n);
+ vec3 v = wView;
+ vec3 h = normalize(l + v);
+ float vDotN = dot(v, n);
+ float lDotN = dot(l, n);
+ float lDotH = dot(l, h);
+
+ // Calculate diffuse component
+ vec3 diffuseColor = (1.0 - metalness) * baseColor;
+ vec3 diffuse = diffuseColor * texture(envLight.irradiance, l).rgb;
+
+ // Calculate specular component
+ vec3 dielectricColor = vec3(0.04);
+ vec3 F0 = mix(dielectricColor, baseColor, metalness);
+ vec3 specularFactor = specularModel(F0, lDotH, lDotN, vDotN, n, h);
+
+ float lod = alphaToMipLevel(alpha);
+//#define DEBUG_SPECULAR_LODS
+#ifdef DEBUG_SPECULAR_LODS
+ if (lod > 7.0)
+ return vec3(1.0, 0.0, 0.0);
+ else if (lod > 6.0)
+ return vec3(1.0, 0.333, 0.0);
+ else if (lod > 5.0)
+ return vec3(1.0, 1.0, 0.0);
+ else if (lod > 4.0)
+ return vec3(0.666, 1.0, 0.0);
+ else if (lod > 3.0)
+ return vec3(0.0, 1.0, 0.666);
+ else if (lod > 2.0)
+ return vec3(0.0, 0.666, 1.0);
+ else if (lod > 1.0)
+ return vec3(0.0, 0.0, 1.0);
+ else if (lod > 0.0)
+ return vec3(1.0, 0.0, 1.0);
+#endif
+ vec3 specularSkyColor = textureLod(envLight.specular, l, lod).rgb;
+ vec3 specular = specularSkyColor * specularFactor;
+
+ // Blend between diffuse and specular to conserve energy
+ vec3 color = specular + diffuse * (vec3(1.0) - specularFactor);
+
+ // Reduce by ambient occlusion amount
+ color *= ambientOcclusion;
+
+ return color;
+}
+
+vec3 toneMap(const in vec3 c)
+{
+ return c / (c + vec3(1.0));
+}
+
+vec3 gammaCorrect(const in vec3 color)
+{
+ return pow(color, vec3(1.0 / gamma));
+}
+
+vec4 metalRoughFunction(const in vec4 baseColor,
+ const in float metalness,
+ const in float roughness,
+ const in float ambientOcclusion,
+ const in vec3 worldPosition,
+ const in vec3 worldView,
+ const in vec3 worldNormal)
+{
+ vec3 cLinear = vec3(0.0);
+
+ // Remap roughness for a perceptually more linear correspondence
+ float alpha = remapRoughness(roughness);
+
+ for (int i = 0; i < envLightCount; ++i) {
+ cLinear += pbrIblModel(worldNormal,
+ worldView,
+ baseColor.rgb,
+ metalness,
+ alpha,
+ ambientOcclusion);
+ }
+
+ for (int i = 0; i < lightCount; ++i) {
+ cLinear += pbrModel(i,
+ worldPosition,
+ worldNormal,
+ worldView,
+ baseColor.rgb,
+ metalness,
+ alpha,
+ ambientOcclusion);
+ }
+
+ // Apply exposure correction
+ cLinear *= pow(2.0, exposure);
+
+ // Apply simple (Reinhard) tonemap transform to get into LDR range [0, 1]
+ vec3 cToneMapped = toneMap(cLinear);
+
+ // Apply gamma correction prior to display
+ vec3 cGamma = gammaCorrect(cToneMapped);
+
+ return vec4(cGamma, 1.0);
+}
diff --git a/src/extras/shaders/gl3/morphphong.vert b/src/extras/shaders/gl3/morphphong.vert
index c74fbdcff..7a8bdd097 100644
--- a/src/extras/shaders/gl3/morphphong.vert
+++ b/src/extras/shaders/gl3/morphphong.vert
@@ -27,7 +27,7 @@ void main()
morphNormal = normalize(vertexNormal + vertexNormalTarget * abs(interpolator));
}
- worldNormal = normalize( modelNormalMatrix * morphPos );
+ worldNormal = normalize( modelNormalMatrix * morphNormal );
worldPosition = vec3( modelMatrix * vec4( morphPos, 1.0 ) );
gl_Position = modelViewProjection * vec4( morphPos, 1.0 );
diff --git a/src/extras/text/qtext2dentity.cpp b/src/extras/text/qtext2dentity.cpp
index 10939a1e2..ae25e8ecc 100644
--- a/src/extras/text/qtext2dentity.cpp
+++ b/src/extras/text/qtext2dentity.cpp
@@ -92,10 +92,17 @@ void QText2DEntityPrivate::setScene(Qt3DCore::QScene *scene)
// Unref old glyph cache if it exists
if (m_scene != nullptr) {
+ // Ensure we don't keep reference to glyphs
+ // if we are changing the cache
+ if (m_glyphCache != nullptr)
+ clearCurrentGlyphRuns();
+
m_glyphCache = nullptr;
+
QText2DEntityPrivate::CacheEntry &entry = QText2DEntityPrivate::m_glyphCacheInstances[m_scene];
--entry.count;
if (entry.count == 0 && entry.glyphCache != nullptr) {
+
delete entry.glyphCache;
entry.glyphCache = nullptr;
}
@@ -149,7 +156,6 @@ void QText2DEntityPrivate::setCurrentGlyphRuns(const QVector<QGlyphRun> &runs)
// For each distinct texture, we need a separate DistanceFieldTextRenderer,
// for which we need vertex and index data
QHash<Qt3DRender::QAbstractTexture*, RenderData> renderData;
-
const float scale = computeActualScale();
// process glyph runs
@@ -248,6 +254,13 @@ void QText2DEntityPrivate::setCurrentGlyphRuns(const QVector<QGlyphRun> &runs)
m_currentGlyphRuns = runs;
}
+void QText2DEntityPrivate::clearCurrentGlyphRuns()
+{
+ for (int i = 0; i < m_currentGlyphRuns.size(); i++)
+ m_glyphCache->derefGlyphs(m_currentGlyphRuns[i]);
+ m_currentGlyphRuns.clear();
+}
+
void QText2DEntityPrivate::update()
{
if (m_glyphCache == nullptr)
diff --git a/src/extras/text/qtext2dentity_p.h b/src/extras/text/qtext2dentity_p.h
index 934e2087f..b98c62ce3 100644
--- a/src/extras/text/qtext2dentity_p.h
+++ b/src/extras/text/qtext2dentity_p.h
@@ -104,6 +104,7 @@ public:
float computeActualScale() const;
void setCurrentGlyphRuns(const QVector<QGlyphRun> &runs);
+ void clearCurrentGlyphRuns();
void update();
struct CacheEntry
diff --git a/src/quick3d/imports/animation/dependencies.json b/src/quick3d/imports/animation/dependencies.json
new file mode 100644
index 000000000..71a3f7381
--- /dev/null
+++ b/src/quick3d/imports/animation/dependencies.json
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "Qt3D.Core",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/quick3d/imports/animation/plugins.qmltypes b/src/quick3d/imports/animation/plugins.qmltypes
index 08879ee52..ad2bc8812 100644
--- a/src/quick3d/imports/animation/plugins.qmltypes
+++ b/src/quick3d/imports/animation/plugins.qmltypes
@@ -4,23 +4,10 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable Qt3D.Animation 2.9'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json Qt3D.Animation 2.12'
Module {
- dependencies: ["QtQuick 2.8"]
- Component {
- name: "Qt3DAnimation::Animation::Quick::Quick3DChannelMapper"
- defaultProperty: "mappings"
- prototype: "Qt3DAnimation::QChannelMapper"
- exports: ["Qt3D.Animation/ChannelMapper 2.9"]
- exportMetaObjectRevisions: [0]
- Property {
- name: "mappings"
- type: "Qt3DAnimation::QChannelMapping"
- isList: true
- isReadonly: true
- }
- }
+ dependencies: ["Qt3D.Core 2.0"]
Component {
name: "Qt3DAnimation::QAbstractAnimation"
prototype: "QObject"
@@ -36,7 +23,7 @@ Module {
}
}
Property { name: "animationName"; type: "string" }
- Property { name: "animationType"; type: "QAbstractAnimation::AnimationType"; isReadonly: true }
+ Property { name: "animationType"; type: "AnimationType"; isReadonly: true }
Property { name: "position"; type: "float" }
Property { name: "duration"; type: "float"; isReadonly: true }
Signal {
@@ -73,6 +60,13 @@ Module {
}
}
Component {
+ name: "Qt3DAnimation::QAbstractChannelMapping"
+ prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Animation/AbstractChannelMapping 2.10"]
+ isCreatable: false
+ exportMetaObjectRevisions: [0]
+ }
+ Component {
name: "Qt3DAnimation::QAbstractClipAnimator"
prototype: "Qt3DCore::QComponent"
exports: ["Qt3D.Animation/AbstractClipAnimator 2.9"]
@@ -87,6 +81,8 @@ Module {
Property { name: "running"; type: "bool" }
Property { name: "loops"; type: "int" }
Property { name: "channelMapper"; type: "Qt3DAnimation::QChannelMapper"; isPointer: true }
+ Property { name: "clock"; type: "Qt3DAnimation::QClock"; isPointer: true }
+ Property { name: "normalizedTime"; type: "float" }
Signal {
name: "runningChanged"
Parameter { name: "running"; type: "bool" }
@@ -99,6 +95,14 @@ Module {
name: "loopCountChanged"
Parameter { name: "loops"; type: "int" }
}
+ Signal {
+ name: "clockChanged"
+ Parameter { name: "clock"; type: "Qt3DAnimation::QClock"; isPointer: true }
+ }
+ Signal {
+ name: "normalizedTimeChanged"
+ Parameter { name: "index"; type: "float" }
+ }
Method {
name: "setRunning"
Parameter { name: "running"; type: "bool" }
@@ -111,6 +115,16 @@ Module {
name: "setLoopCount"
Parameter { name: "loops"; type: "int" }
}
+ Method {
+ name: "setClock"
+ Parameter { name: "clock"; type: "Qt3DAnimation::QClock"; isPointer: true }
+ }
+ Method {
+ name: "setNormalizedTime"
+ Parameter { name: "timeFraction"; type: "float" }
+ }
+ Method { name: "start" }
+ Method { name: "stop" }
}
Component {
name: "Qt3DAnimation::QAbstractClipBlendNode"
@@ -210,6 +224,8 @@ Module {
Component {
name: "Qt3DAnimation::QAnimationController"
prototype: "QObject"
+ exports: ["Qt3D.Animation/AnimationController 2.9"]
+ exportMetaObjectRevisions: [209]
Property { name: "activeAnimationGroup"; type: "int" }
Property { name: "position"; type: "float" }
Property { name: "positionScale"; type: "float" }
@@ -274,10 +290,19 @@ Module {
type: "Qt3DAnimation::QAnimationGroup*"
Parameter { name: "index"; type: "int" }
}
+ Property {
+ name: "animationGroups"
+ revision: 209
+ type: "Qt3DAnimation::QAnimationGroup"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DAnimation::QAnimationGroup"
prototype: "QObject"
+ exports: ["Qt3D.Animation/AnimationGroup 2.9"]
+ exportMetaObjectRevisions: [209]
Property { name: "name"; type: "string" }
Property { name: "position"; type: "float" }
Property { name: "duration"; type: "float"; isReadonly: true }
@@ -301,6 +326,13 @@ Module {
name: "setPosition"
Parameter { name: "position"; type: "float" }
}
+ Property {
+ name: "animations"
+ revision: 209
+ type: "Qt3DAnimation::QAbstractAnimation"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DAnimation::QBlendedClipAnimator"
@@ -317,10 +349,23 @@ Module {
Parameter { name: "blendTree"; type: "QAbstractClipBlendNode"; isPointer: true }
}
}
- Component { name: "Qt3DAnimation::QChannelMapper"; prototype: "Qt3DCore::QNode" }
Component {
- name: "Qt3DAnimation::QChannelMapping"
+ name: "Qt3DAnimation::QChannelMapper"
+ defaultProperty: "mappings"
prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Animation/ChannelMapper 2.9"]
+ exportMetaObjectRevisions: [209]
+ Property {
+ name: "mappings"
+ revision: 209
+ type: "Qt3DAnimation::QAbstractChannelMapping"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DAnimation::QChannelMapping"
+ prototype: "Qt3DAnimation::QAbstractChannelMapping"
exports: ["Qt3D.Animation/ChannelMapping 2.9"]
exportMetaObjectRevisions: [0]
Property { name: "channelName"; type: "string" }
@@ -382,8 +427,21 @@ Module {
}
}
Component {
+ name: "Qt3DAnimation::QClock"
+ prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Animation/Clock 2.9"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "playbackRate"; type: "double" }
+ Signal {
+ name: "playbackRateChanged"
+ Parameter { name: "playbackRate"; type: "double" }
+ }
+ }
+ Component {
name: "Qt3DAnimation::QKeyframeAnimation"
prototype: "Qt3DAnimation::QAbstractAnimation"
+ exports: ["Qt3D.Animation/KeyframeAnimation 2.9"]
+ exportMetaObjectRevisions: [209]
Enum {
name: "RepeatMode"
values: {
@@ -396,8 +454,8 @@ Module {
Property { name: "target"; type: "Qt3DCore::QTransform"; isPointer: true }
Property { name: "easing"; type: "QEasingCurve" }
Property { name: "targetName"; type: "string" }
- Property { name: "startMode"; type: "QKeyframeAnimation::RepeatMode" }
- Property { name: "endMode"; type: "QKeyframeAnimation::RepeatMode" }
+ Property { name: "startMode"; type: "RepeatMode" }
+ Property { name: "endMode"; type: "RepeatMode" }
Signal {
name: "framePositionsChanged"
Parameter { name: "positions"; type: "QVector<float>" }
@@ -446,6 +504,13 @@ Module {
name: "setEndMode"
Parameter { name: "mode"; type: "RepeatMode" }
}
+ Property {
+ name: "keyframes"
+ revision: 209
+ type: "Qt3DCore::QTransform"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DAnimation::QLerpClipBlend"
@@ -483,6 +548,8 @@ Module {
Component {
name: "Qt3DAnimation::QMorphTarget"
prototype: "QObject"
+ exports: ["Qt3D.Animation/MorphTarget 2.9"]
+ exportMetaObjectRevisions: [209]
Property { name: "attributeNames"; type: "QStringList"; isReadonly: true }
Signal {
name: "attributeNamesChanged"
@@ -494,10 +561,19 @@ Module {
Parameter { name: "geometry"; type: "Qt3DRender::QGeometry"; isPointer: true }
Parameter { name: "attributes"; type: "QStringList" }
}
+ Property {
+ name: "attributes"
+ revision: 209
+ type: "Qt3DRender::QAttribute"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DAnimation::QMorphingAnimation"
prototype: "Qt3DAnimation::QAbstractAnimation"
+ exports: ["Qt3D.Animation/MorphingAnimation 2.9"]
+ exportMetaObjectRevisions: [209]
Enum {
name: "Method"
values: {
@@ -509,7 +585,7 @@ Module {
Property { name: "interpolator"; type: "float"; isReadonly: true }
Property { name: "target"; type: "Qt3DRender::QGeometryRenderer"; isPointer: true }
Property { name: "targetName"; type: "string" }
- Property { name: "method"; type: "QMorphingAnimation::Method" }
+ Property { name: "method"; type: "Method" }
Property { name: "easing"; type: "QEasingCurve" }
Signal {
name: "targetPositionsChanged"
@@ -555,116 +631,72 @@ Module {
name: "setEasing"
Parameter { name: "easing"; type: "QEasingCurve" }
}
- }
- Component {
- name: "Qt3DAnimation::Quick::QQuick3DAnimationController"
- prototype: "Qt3DAnimation::QAnimationController"
- exports: ["Qt3D.Animation/AnimationController 2.9"]
- exportMetaObjectRevisions: [0]
- Property {
- name: "animationGroups"
- type: "Qt3DAnimation::QAnimationGroup"
- isList: true
- isReadonly: true
- }
- }
- Component {
- name: "Qt3DAnimation::Quick::QQuick3DAnimationGroup"
- prototype: "Qt3DAnimation::QAnimationGroup"
- exports: ["Qt3D.Animation/AnimationGroup 2.9"]
- exportMetaObjectRevisions: [0]
- Property {
- name: "animations"
- type: "Qt3DAnimation::QAbstractAnimation"
- isList: true
- isReadonly: true
- }
- }
- Component {
- name: "Qt3DAnimation::Quick::QQuick3DKeyframeAnimation"
- prototype: "Qt3DAnimation::QKeyframeAnimation"
- exports: ["Qt3D.Animation/KeyframeAnimation 2.9"]
- exportMetaObjectRevisions: [0]
- Property { name: "keyframes"; type: "Qt3DCore::QTransform"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DAnimation::Quick::QQuick3DMorphTarget"
- prototype: "Qt3DAnimation::QMorphTarget"
- exports: ["Qt3D.Animation/MorphTarget 2.9"]
- exportMetaObjectRevisions: [0]
- Property { name: "attributes"; type: "Qt3DRender::QAttribute"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DAnimation::Quick::QQuick3DMorphingAnimation"
- prototype: "Qt3DAnimation::QMorphingAnimation"
- exports: ["Qt3D.Animation/MorphingAnimation 2.9"]
- exportMetaObjectRevisions: [0]
Property {
name: "morphTargets"
+ revision: 209
type: "Qt3DAnimation::QMorphTarget"
isList: true
isReadonly: true
}
}
Component {
- name: "Qt3DCore::QComponent"
- prototype: "Qt3DCore::QNode"
- Property { name: "isShareable"; type: "bool" }
- Signal {
- name: "shareableChanged"
- Parameter { name: "isShareable"; type: "bool" }
- }
- Signal {
- name: "addedToEntity"
- Parameter { name: "entity"; type: "QEntity"; isPointer: true }
- }
+ name: "Qt3DAnimation::QSkeletonMapping"
+ prototype: "Qt3DAnimation::QAbstractChannelMapping"
+ exports: ["Qt3D.Animation/SkeletonMapping 2.10"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "skeleton"; type: "Qt3DCore::QAbstractSkeleton"; isPointer: true }
Signal {
- name: "removedFromEntity"
- Parameter { name: "entity"; type: "QEntity"; isPointer: true }
+ name: "skeletonChanged"
+ Parameter { name: "skeleton"; type: "Qt3DCore::QAbstractSkeleton"; isPointer: true }
}
Method {
- name: "setShareable"
- Parameter { name: "isShareable"; type: "bool" }
+ name: "setSkeleton"
+ Parameter { name: "skeleton"; type: "Qt3DCore::QAbstractSkeleton"; isPointer: true }
}
}
Component {
- name: "Qt3DCore::QNode"
- prototype: "QObject"
- Enum {
- name: "PropertyTrackingMode"
- values: {
- "TrackFinalValues": 0,
- "DontTrackValues": 1,
- "TrackAllValues": 2
- }
+ name: "Qt3DAnimation::QVertexBlendAnimation"
+ prototype: "Qt3DAnimation::QAbstractAnimation"
+ exports: ["Qt3D.Animation/VertexBlendAnimation 2.9"]
+ exportMetaObjectRevisions: [209]
+ Property { name: "targetPositions"; type: "QVector<float>" }
+ Property { name: "interpolator"; type: "float"; isReadonly: true }
+ Property { name: "target"; type: "Qt3DRender::QGeometryRenderer"; isPointer: true }
+ Property { name: "targetName"; type: "string" }
+ Signal {
+ name: "targetPositionsChanged"
+ Parameter { name: "targetPositions"; type: "QVector<float>" }
}
- Property { name: "parent"; type: "Qt3DCore::QNode"; isPointer: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "defaultPropertyTrackingMode"; revision: 9; type: "PropertyTrackingMode" }
Signal {
- name: "parentChanged"
- Parameter { name: "parent"; type: "QObject"; isPointer: true }
+ name: "interpolatorChanged"
+ Parameter { name: "interpolator"; type: "float" }
}
Signal {
- name: "enabledChanged"
- Parameter { name: "enabled"; type: "bool" }
+ name: "targetChanged"
+ Parameter { name: "target"; type: "Qt3DRender::QGeometryRenderer"; isPointer: true }
}
Signal {
- name: "defaultPropertyTrackingModeChanged"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
+ name: "targetNameChanged"
+ Parameter { name: "name"; type: "string" }
}
- Signal { name: "nodeDestroyed" }
Method {
- name: "setParent"
- Parameter { name: "parent"; type: "QNode"; isPointer: true }
+ name: "setTargetPositions"
+ Parameter { name: "targetPositions"; type: "QVector<float>" }
}
Method {
- name: "setEnabled"
- Parameter { name: "isEnabled"; type: "bool" }
+ name: "setTarget"
+ Parameter { name: "target"; type: "Qt3DRender::QGeometryRenderer"; isPointer: true }
}
Method {
- name: "setDefaultPropertyTrackingMode"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
+ name: "setTargetName"
+ Parameter { name: "name"; type: "string" }
+ }
+ Property {
+ name: "morphTargets"
+ revision: 209
+ type: "Qt3DAnimation::QMorphTarget"
+ isList: true
+ isReadonly: true
}
}
}
diff --git a/src/quick3d/imports/core/plugins.qmltypes b/src/quick3d/imports/core/plugins.qmltypes
index 87cdac04c..4c0719a97 100644
--- a/src/quick3d/imports/core/plugins.qmltypes
+++ b/src/quick3d/imports/core/plugins.qmltypes
@@ -4,30 +4,169 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable Qt3D.Core 2.9'
+// 'qmlplugindump -nonrelocatable Qt3D.Core 2.12'
Module {
- dependencies: ["QtQuick 2.8"]
+ dependencies: ["QtQuick 2.12"]
+ Component {
+ name: "Qt3DCore::QAbstractSkeleton"
+ prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Core/AbstractSkeleton 2.10"]
+ isCreatable: false
+ exportMetaObjectRevisions: [0]
+ Property { name: "jointCount"; type: "int"; isReadonly: true }
+ Signal {
+ name: "jointCountChanged"
+ Parameter { name: "jointCount"; type: "int" }
+ }
+ }
+ Component {
+ name: "Qt3DCore::QArmature"
+ prototype: "Qt3DCore::QComponent"
+ exports: ["Qt3D.Core/Armature 2.10"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "skeleton"; type: "Qt3DCore::QAbstractSkeleton"; isPointer: true }
+ Signal {
+ name: "skeletonChanged"
+ Parameter { name: "skeleton"; type: "Qt3DCore::QAbstractSkeleton"; isPointer: true }
+ }
+ Method {
+ name: "setSkeleton"
+ Parameter { name: "skeleton"; type: "Qt3DCore::QAbstractSkeleton"; isPointer: true }
+ }
+ }
Component {
name: "Qt3DCore::QComponent"
+ prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Core/Component3D 2.0"]
+ isCreatable: false
+ exportMetaObjectRevisions: [0]
+ Property { name: "isShareable"; type: "bool" }
+ Signal {
+ name: "shareableChanged"
+ Parameter { name: "isShareable"; type: "bool" }
+ }
+ Signal {
+ name: "addedToEntity"
+ Parameter { name: "entity"; type: "QEntity"; isPointer: true }
+ }
+ Signal {
+ name: "removedFromEntity"
+ Parameter { name: "entity"; type: "QEntity"; isPointer: true }
+ }
+ Method {
+ name: "setShareable"
+ Parameter { name: "isShareable"; type: "bool" }
+ }
+ }
+ Component {
+ name: "Qt3DCore::QEntity"
defaultProperty: "data"
- prototype: "Qt3DCore::QComponent"
- Property { name: "propertyTrackingOverrides"; type: "QJSValue" }
- 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/Entity 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "components"
+ revision: 200
+ type: "Qt3DCore::QComponent"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DCore::QJoint"
+ defaultProperty: "data"
+ prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Core/Joint 2.10"]
+ exportMetaObjectRevisions: [210]
+ Property { name: "scale"; type: "QVector3D" }
+ Property { name: "rotation"; type: "QQuaternion" }
+ Property { name: "translation"; type: "QVector3D" }
+ Property { name: "inverseBindMatrix"; type: "QMatrix4x4" }
+ Property { name: "rotationX"; type: "float" }
+ Property { name: "rotationY"; type: "float" }
+ Property { name: "rotationZ"; type: "float" }
+ Property { name: "name"; type: "string" }
+ Signal {
+ name: "scaleChanged"
+ Parameter { name: "scale"; type: "QVector3D" }
+ }
+ Signal {
+ name: "rotationChanged"
+ Parameter { name: "rotation"; type: "QQuaternion" }
+ }
+ Signal {
+ name: "translationChanged"
+ Parameter { name: "translation"; type: "QVector3D" }
+ }
+ Signal {
+ name: "inverseBindMatrixChanged"
+ Parameter { name: "inverseBindMatrix"; type: "QMatrix4x4" }
+ }
+ Signal {
+ name: "rotationXChanged"
+ Parameter { name: "rotationX"; type: "float" }
+ }
+ Signal {
+ name: "rotationYChanged"
+ Parameter { name: "rotationY"; type: "float" }
+ }
Signal {
- name: "propertyTrackingOverridesChanged"
- Parameter { name: "value"; type: "QJSValue" }
+ name: "rotationZChanged"
+ Parameter { name: "rotationZ"; type: "float" }
}
Signal {
- name: "propertyTrackingOverridesChanged"
- Parameter { name: "value"; type: "QJSValue" }
+ name: "nameChanged"
+ Parameter { name: "name"; type: "string" }
+ }
+ Method {
+ name: "setScale"
+ Parameter { name: "scale"; type: "QVector3D" }
+ }
+ Method {
+ name: "setRotation"
+ Parameter { name: "rotation"; type: "QQuaternion" }
+ }
+ Method {
+ name: "setTranslation"
+ Parameter { name: "translation"; type: "QVector3D" }
+ }
+ Method {
+ name: "setInverseBindMatrix"
+ Parameter { name: "inverseBindMatrix"; 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: "setName"
+ Parameter { name: "name"; type: "string" }
+ }
+ Method { name: "setToIdentity" }
+ Property {
+ name: "childJoints"
+ revision: 210
+ type: "Qt3DCore::QJoint"
+ isList: true
+ isReadonly: true
}
}
- Component { name: "Qt3DCore::QEntity"; prototype: "Qt3DCore::QNode" }
Component {
name: "Qt3DCore::QNode"
+ defaultProperty: "data"
prototype: "QObject"
+ exports: ["Qt3D.Core/Node 2.0", "Qt3D.Core/Node 2.9"]
+ isCreatable: false
+ exportMetaObjectRevisions: [200, 209]
Enum {
name: "PropertyTrackingMode"
values: {
@@ -64,10 +203,71 @@ Module {
name: "setDefaultPropertyTrackingMode"
Parameter { name: "mode"; type: "PropertyTrackingMode" }
}
+ Property { name: "data"; revision: 200; type: "QObject"; isList: true; isReadonly: true }
+ Property {
+ name: "childNodes"
+ revision: 200
+ type: "Qt3DCore::QNode"
+ isList: true
+ isReadonly: true
+ }
+ Property { name: "propertyTrackingOverrides"; revision: 209; type: "QJSValue" }
+ Property { name: "data"; revision: 209; type: "QObject"; isList: true; isReadonly: true }
+ Property {
+ name: "childNodes"
+ revision: 209
+ type: "Qt3DCore::QNode"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DCore::QSkeletonLoader"
+ prototype: "Qt3DCore::QAbstractSkeleton"
+ exports: ["Qt3D.Core/SkeletonLoader 2.10"]
+ exportMetaObjectRevisions: [0]
+ Enum {
+ name: "Status"
+ values: {
+ "NotReady": 0,
+ "Ready": 1,
+ "Error": 2
+ }
+ }
+ Property { name: "source"; type: "QUrl" }
+ Property { name: "status"; type: "Status"; isReadonly: true }
+ Property { name: "createJointsEnabled"; type: "bool" }
+ Property { name: "rootJoint"; type: "Qt3DCore::QJoint"; isReadonly: true; isPointer: true }
+ Signal {
+ name: "sourceChanged"
+ Parameter { name: "source"; type: "QUrl" }
+ }
+ Signal {
+ name: "statusChanged"
+ Parameter { name: "status"; type: "Status" }
+ }
+ Signal {
+ name: "createJointsEnabledChanged"
+ Parameter { name: "createJointsEnabled"; type: "bool" }
+ }
+ Signal {
+ name: "rootJointChanged"
+ Parameter { name: "rootJoint"; type: "Qt3DCore::QJoint"; isPointer: true }
+ }
+ Method {
+ name: "setSource"
+ Parameter { name: "source"; type: "QUrl" }
+ }
+ Method {
+ name: "setCreateJointsEnabled"
+ Parameter { name: "enabled"; type: "bool" }
+ }
}
Component {
name: "Qt3DCore::QTransform"
prototype: "Qt3DCore::QComponent"
+ exports: ["Qt3D.Core/Transform 2.0"]
+ exportMetaObjectRevisions: [0]
Property { name: "matrix"; type: "QMatrix4x4" }
Property { name: "scale"; type: "float" }
Property { name: "scale3D"; type: "QVector3D" }
@@ -169,6 +369,13 @@ Module {
Parameter { name: "angle3"; type: "float" }
}
Method {
+ name: "fromAxes"
+ type: "QQuaternion"
+ Parameter { name: "xAxis"; type: "QVector3D" }
+ Parameter { name: "yAxis"; type: "QVector3D" }
+ Parameter { name: "zAxis"; type: "QVector3D" }
+ }
+ Method {
name: "fromEulerAngles"
type: "QQuaternion"
Parameter { name: "eulerAngles"; type: "QVector3D" }
@@ -187,6 +394,13 @@ Module {
Parameter { name: "angle"; type: "float" }
Parameter { name: "axis"; type: "QVector3D" }
}
+ Method {
+ name: "rotateFromAxes"
+ type: "QMatrix4x4"
+ Parameter { name: "xAxis"; type: "QVector3D" }
+ Parameter { name: "yAxis"; type: "QVector3D" }
+ Parameter { name: "zAxis"; type: "QVector3D" }
+ }
}
Component {
name: "Qt3DCore::Quick::QQuaternionAnimation"
@@ -239,62 +453,54 @@ Module {
}
}
Component {
- name: "Qt3DCore::Quick::Quick3DEntity"
- defaultProperty: "data"
- prototype: "Qt3DCore::QEntity"
- exports: ["Qt3D.Core/Entity 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "components"; type: "Qt3DCore::QComponent"; isList: true; isReadonly: true }
- }
- Component {
name: "Qt3DCore::Quick::Quick3DEntityLoader"
- defaultProperty: "data"
- prototype: "Qt3DCore::Quick::Quick3DEntityLoader"
- Property { name: "components"; type: "Qt3DCore::QComponent"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DCore::Quick::Quick3DNode"
- defaultProperty: "data"
- prototype: "Qt3DCore::QNode"
- exports: ["Qt3D.Core/Node 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DCore::Quick::Quick3DNodeInstantiator"
- defaultProperty: "delegate"
- prototype: "Qt3DCore::Quick::Quick3DNodeInstantiator"
- Property { name: "propertyTrackingOverrides"; type: "QJSValue" }
- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true }
- Signal {
- name: "propertyTrackingOverridesChanged"
- Parameter { name: "value"; type: "QJSValue" }
+ prototype: "Qt3DCore::QEntity"
+ exports: ["Qt3D.Core/EntityLoader 2.0", "Qt3D.Core/EntityLoader 2.12"]
+ exportMetaObjectRevisions: [0, 12]
+ Enum {
+ name: "Status"
+ values: {
+ "Null": 0,
+ "Loading": 1,
+ "Ready": 2,
+ "Error": 3
+ }
}
+ Property { name: "entity"; type: "QObject"; isReadonly: true; isPointer: true }
+ Property { name: "source"; type: "QUrl" }
+ Property { name: "status"; type: "Status"; isReadonly: true }
+ Property { name: "sourceComponent"; revision: 12; type: "QQmlComponent"; isPointer: true }
Signal {
- name: "propertyTrackingOverridesChanged"
- Parameter { name: "value"; type: "QJSValue" }
+ name: "statusChanged"
+ Parameter { name: "status"; type: "Status" }
}
}
Component {
- name: "Qt3DCore::Quick::Quick3DNodeV9"
- defaultProperty: "data"
+ name: "Qt3DCore::Quick::Quick3DNodeInstantiator"
+ defaultProperty: "delegate"
prototype: "Qt3DCore::QNode"
- exports: ["Qt3D.Core/Node 2.9"]
- isCreatable: false
- exportMetaObjectRevisions: [9]
- Property { name: "propertyTrackingOverrides"; type: "QJSValue" }
- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "childNodes"; type: "Qt3DCore::QNode"; isList: true; isReadonly: true }
+ exports: ["Qt3D.Core/NodeInstantiator 2.0"]
+ exportMetaObjectRevisions: [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"; isPointer: true }
+ Property { name: "object"; type: "QObject"; isReadonly: true; isPointer: true }
Signal {
- name: "propertyTrackingOverridesChanged"
- Parameter { name: "value"; type: "QJSValue" }
+ name: "objectAdded"
+ Parameter { name: "index"; type: "int" }
+ Parameter { name: "object"; type: "QObject"; isPointer: true }
}
Signal {
- name: "propertyTrackingOverridesChanged"
- Parameter { name: "value"; type: "QJSValue" }
+ name: "objectRemoved"
+ Parameter { name: "index"; type: "int" }
+ Parameter { name: "object"; type: "QObject"; isPointer: true }
+ }
+ Method {
+ name: "objectAt"
+ type: "QObject*"
+ Parameter { name: "index"; type: "int" }
}
}
}
diff --git a/src/quick3d/imports/extras/dependencies.json b/src/quick3d/imports/extras/dependencies.json
new file mode 100644
index 000000000..206c5c613
--- /dev/null
+++ b/src/quick3d/imports/extras/dependencies.json
@@ -0,0 +1,12 @@
+[
+ {
+ "name": "Qt3D.Render",
+ "type": "module",
+ "version": "2.0"
+ },
+ {
+ "name": "Qt3D.Logic",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/quick3d/imports/extras/plugins.qmltypes b/src/quick3d/imports/extras/plugins.qmltypes
index a623f385c..ecfeaed8f 100644
--- a/src/quick3d/imports/extras/plugins.qmltypes
+++ b/src/quick3d/imports/extras/plugins.qmltypes
@@ -4,11 +4,10 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable Qt3D.Extras 2.9'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json Qt3D.Extras 2.12'
Module {
- dependencies: ["Qt3D.Logic 2.0"]
- Component { name: "Qt3DCore::QEntity"; prototype: "Qt3DCore::QNode" }
+ dependencies: ["Qt3D.Logic 2.0", "Qt3D.Render 2.0"]
Component {
name: "Qt3DExtras::Extras::Quick::Quick3DLevelOfDetailLoader"
prototype: "Qt3DCore::QEntity"
@@ -30,6 +29,50 @@ Module {
}
}
Component {
+ name: "Qt3DExtras::QAbstractCameraController"
+ prototype: "Qt3DCore::QEntity"
+ Property { name: "camera"; type: "Qt3DRender::QCamera"; isPointer: true }
+ Property { name: "linearSpeed"; type: "float" }
+ Property { name: "lookSpeed"; type: "float" }
+ Property { name: "acceleration"; type: "float" }
+ Property { name: "deceleration"; type: "float" }
+ Signal {
+ name: "accelerationChanged"
+ Parameter { name: "acceleration"; type: "float" }
+ }
+ Signal {
+ name: "decelerationChanged"
+ Parameter { name: "deceleration"; type: "float" }
+ }
+ }
+ Component {
+ name: "Qt3DExtras::QAbstractSpriteSheet"
+ prototype: "Qt3DCore::QNode"
+ Property { name: "texture"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
+ Property { name: "textureTransform"; type: "QMatrix3x3"; isReadonly: true }
+ Property { name: "currentIndex"; type: "int" }
+ Signal {
+ name: "textureChanged"
+ Parameter { name: "texture"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
+ }
+ Signal {
+ name: "textureTransformChanged"
+ Parameter { name: "textureTransform"; type: "QMatrix3x3" }
+ }
+ Signal {
+ name: "currentIndexChanged"
+ Parameter { name: "currentIndex"; type: "int" }
+ }
+ Method {
+ name: "setTexture"
+ Parameter { name: "texture"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
+ }
+ Method {
+ name: "setCurrentIndex"
+ Parameter { name: "currentIndex"; type: "int" }
+ }
+ }
+ Component {
name: "Qt3DExtras::QConeGeometry"
prototype: "Qt3DRender::QGeometry"
exports: ["Qt3D.Extras/ConeGeometry 2.0"]
@@ -552,6 +595,75 @@ Module {
}
}
Component {
+ name: "Qt3DExtras::QDiffuseSpecularMaterial"
+ prototype: "Qt3DRender::QMaterial"
+ exports: ["Qt3D.Extras/DiffuseSpecularMaterial 2.10"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "ambient"; type: "QColor" }
+ Property { name: "diffuse"; type: "QVariant" }
+ Property { name: "specular"; type: "QVariant" }
+ Property { name: "shininess"; type: "float" }
+ Property { name: "normal"; type: "QVariant" }
+ Property { name: "textureScale"; type: "float" }
+ Property { name: "alphaBlending"; type: "bool" }
+ Signal {
+ name: "ambientChanged"
+ Parameter { name: "ambient"; type: "QColor" }
+ }
+ Signal {
+ name: "diffuseChanged"
+ Parameter { name: "diffuse"; type: "QVariant" }
+ }
+ Signal {
+ name: "specularChanged"
+ Parameter { name: "specular"; type: "QVariant" }
+ }
+ Signal {
+ name: "shininessChanged"
+ Parameter { name: "shininess"; type: "float" }
+ }
+ Signal {
+ name: "normalChanged"
+ Parameter { name: "normal"; type: "QVariant" }
+ }
+ Signal {
+ name: "textureScaleChanged"
+ Parameter { name: "textureScale"; type: "float" }
+ }
+ Signal {
+ name: "alphaBlendingEnabledChanged"
+ Parameter { name: "enabled"; type: "bool" }
+ }
+ Method {
+ name: "setAmbient"
+ Parameter { name: "ambient"; type: "QColor" }
+ }
+ Method {
+ name: "setDiffuse"
+ Parameter { name: "diffuse"; type: "QVariant" }
+ }
+ Method {
+ name: "setSpecular"
+ Parameter { name: "specular"; type: "QVariant" }
+ }
+ Method {
+ name: "setShininess"
+ Parameter { name: "shininess"; type: "float" }
+ }
+ Method {
+ name: "setNormal"
+ Parameter { name: "normal"; type: "QVariant" }
+ }
+ Method {
+ name: "setTextureScale"
+ Parameter { name: "textureScale"; type: "float" }
+ }
+ Method {
+ name: "setAlphaBlendingEnabled"
+ Parameter { name: "enabled"; type: "bool" }
+ }
+ }
+ Component {
name: "Qt3DExtras::QExtrudedTextGeometry"
prototype: "Qt3DRender::QGeometry"
exports: ["Qt3D.Extras/ExtrudedTextGeometry 2.9"]
@@ -637,28 +749,18 @@ Module {
}
Component {
name: "Qt3DExtras::QFirstPersonCameraController"
- prototype: "Qt3DCore::QEntity"
+ prototype: "Qt3DExtras::QAbstractCameraController"
exports: ["Qt3D.Extras/FirstPersonCameraController 2.0"]
exportMetaObjectRevisions: [0]
- Property { name: "camera"; type: "Qt3DRender::QCamera"; isPointer: true }
- Property { name: "linearSpeed"; type: "float" }
- Property { name: "lookSpeed"; type: "float" }
- Property { name: "acceleration"; type: "float" }
- Property { name: "deceleration"; type: "float" }
- Signal {
- name: "accelerationChanged"
- Parameter { name: "acceleration"; type: "float" }
- }
- Signal {
- name: "decelerationChanged"
- Parameter { name: "deceleration"; type: "float" }
- }
}
Component {
name: "Qt3DExtras::QForwardRenderer"
prototype: "Qt3DRender::QTechniqueFilter"
- exports: ["Qt3D.Extras/ForwardRenderer 2.0"]
- exportMetaObjectRevisions: [0]
+ exports: [
+ "Qt3D.Extras/ForwardRenderer 2.0",
+ "Qt3D.Extras/ForwardRenderer 2.9"
+ ]
+ exportMetaObjectRevisions: [0, 9]
Property { name: "surface"; type: "QObject"; isPointer: true }
Property { name: "window"; type: "QObject"; isPointer: true }
Property { name: "viewportRect"; type: "QRectF" }
@@ -796,34 +898,64 @@ Module {
Component {
name: "Qt3DExtras::QMetalRoughMaterial"
prototype: "Qt3DRender::QMaterial"
- exports: ["Qt3D.Extras/MetalRoughMaterial 2.9"]
- exportMetaObjectRevisions: [0]
- Property { name: "baseColor"; type: "QColor" }
- Property { name: "metalness"; type: "float" }
- Property { name: "roughness"; type: "float" }
+ exports: [
+ "Qt3D.Extras/MetalRoughMaterial 2.10",
+ "Qt3D.Extras/MetalRoughMaterial 2.9"
+ ]
+ exportMetaObjectRevisions: [10, 0]
+ Property { name: "baseColor"; type: "QVariant" }
+ Property { name: "metalness"; type: "QVariant" }
+ Property { name: "roughness"; type: "QVariant" }
+ Property { name: "ambientOcclusion"; revision: 10; type: "QVariant" }
+ Property { name: "normal"; revision: 10; type: "QVariant" }
+ Property { name: "textureScale"; revision: 10; type: "float" }
Signal {
name: "baseColorChanged"
- Parameter { name: "baseColor"; type: "QColor" }
+ Parameter { name: "baseColor"; type: "QVariant" }
}
Signal {
name: "metalnessChanged"
- Parameter { name: "metalness"; type: "float" }
+ Parameter { name: "metalness"; type: "QVariant" }
}
Signal {
name: "roughnessChanged"
- Parameter { name: "roughness"; type: "float" }
+ Parameter { name: "roughness"; type: "QVariant" }
+ }
+ Signal {
+ name: "ambientOcclusionChanged"
+ Parameter { name: "ambientOcclusion"; type: "QVariant" }
+ }
+ Signal {
+ name: "normalChanged"
+ Parameter { name: "normal"; type: "QVariant" }
+ }
+ Signal {
+ name: "textureScaleChanged"
+ Parameter { name: "textureScale"; type: "float" }
}
Method {
name: "setBaseColor"
- Parameter { name: "baseColor"; type: "QColor" }
+ Parameter { name: "baseColor"; type: "QVariant" }
}
Method {
name: "setMetalness"
- Parameter { name: "metalness"; type: "float" }
+ Parameter { name: "metalness"; type: "QVariant" }
}
Method {
name: "setRoughness"
- Parameter { name: "roughness"; type: "float" }
+ Parameter { name: "roughness"; type: "QVariant" }
+ }
+ Method {
+ name: "setAmbientOcclusion"
+ Parameter { name: "ambientOcclusion"; type: "QVariant" }
+ }
+ Method {
+ name: "setNormal"
+ Parameter { name: "normal"; type: "QVariant" }
+ }
+ Method {
+ name: "setTextureScale"
+ Parameter { name: "textureScale"; type: "float" }
}
}
Component {
@@ -1005,12 +1137,9 @@ Module {
}
Component {
name: "Qt3DExtras::QOrbitCameraController"
- prototype: "Qt3DCore::QEntity"
+ prototype: "Qt3DExtras::QAbstractCameraController"
exports: ["Qt3D.Extras/OrbitCameraController 2.0"]
exportMetaObjectRevisions: [0]
- Property { name: "camera"; type: "Qt3DRender::QCamera"; isPointer: true }
- Property { name: "linearSpeed"; type: "float" }
- Property { name: "lookSpeed"; type: "float" }
Property { name: "zoomInLimit"; type: "float" }
}
Component {
@@ -1169,11 +1298,15 @@ Module {
Component {
name: "Qt3DExtras::QPlaneGeometry"
prototype: "Qt3DRender::QGeometry"
- exports: ["Qt3D.Extras/PlaneGeometry 2.0"]
- exportMetaObjectRevisions: [0]
+ exports: [
+ "Qt3D.Extras/PlaneGeometry 2.0",
+ "Qt3D.Extras/PlaneGeometry 2.9"
+ ]
+ exportMetaObjectRevisions: [0, 9]
Property { name: "width"; type: "float" }
Property { name: "height"; type: "float" }
Property { name: "resolution"; type: "QSize" }
+ Property { name: "mirrored"; revision: 9; type: "bool" }
Property {
name: "positionAttribute"
type: "Qt3DRender::QAttribute"
@@ -1216,6 +1349,10 @@ Module {
name: "heightChanged"
Parameter { name: "height"; type: "float" }
}
+ Signal {
+ name: "mirroredChanged"
+ Parameter { name: "mirrored"; type: "bool" }
+ }
Method {
name: "setResolution"
Parameter { name: "resolution"; type: "QSize" }
@@ -1228,15 +1365,20 @@ Module {
name: "setHeight"
Parameter { name: "height"; type: "float" }
}
+ Method {
+ name: "setMirrored"
+ Parameter { name: "mirrored"; type: "bool" }
+ }
}
Component {
name: "Qt3DExtras::QPlaneMesh"
prototype: "Qt3DRender::QGeometryRenderer"
- exports: ["Qt3D.Extras/PlaneMesh 2.0"]
- exportMetaObjectRevisions: [0]
+ exports: ["Qt3D.Extras/PlaneMesh 2.0", "Qt3D.Extras/PlaneMesh 2.9"]
+ exportMetaObjectRevisions: [0, 9]
Property { name: "width"; type: "float" }
Property { name: "height"; type: "float" }
Property { name: "meshResolution"; type: "QSize" }
+ Property { name: "mirrored"; revision: 9; type: "bool" }
Signal {
name: "meshResolutionChanged"
Parameter { name: "meshResolution"; type: "QSize" }
@@ -1249,6 +1391,10 @@ Module {
name: "heightChanged"
Parameter { name: "height"; type: "float" }
}
+ Signal {
+ name: "mirroredChanged"
+ Parameter { name: "mirrored"; type: "bool" }
+ }
Method {
name: "setWidth"
Parameter { name: "width"; type: "float" }
@@ -1261,12 +1407,19 @@ Module {
name: "setMeshResolution"
Parameter { name: "resolution"; type: "QSize" }
}
+ Method {
+ name: "setMirrored"
+ Parameter { name: "mirrored"; type: "bool" }
+ }
}
Component {
name: "Qt3DExtras::QSkyboxEntity"
prototype: "Qt3DCore::QEntity"
- exports: ["Qt3D.Extras/SkyboxEntity 2.0"]
- exportMetaObjectRevisions: [0]
+ exports: [
+ "Qt3D.Extras/SkyboxEntity 2.0",
+ "Qt3D.Extras/SkyboxEntity 2.9"
+ ]
+ exportMetaObjectRevisions: [0, 9]
Property { name: "baseName"; type: "string" }
Property { name: "extension"; type: "string" }
Property { name: "gammaCorrect"; revision: 9; type: "bool" }
@@ -1410,6 +1563,95 @@ Module {
}
}
Component {
+ name: "Qt3DExtras::QSpriteGrid"
+ prototype: "Qt3DExtras::QAbstractSpriteSheet"
+ exports: ["Qt3D.Extras/SpriteGrid 2.10"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "rows"; type: "int" }
+ Property { name: "columns"; type: "int" }
+ Signal {
+ name: "rowsChanged"
+ Parameter { name: "rows"; type: "int" }
+ }
+ Signal {
+ name: "columnsChanged"
+ Parameter { name: "columns"; type: "int" }
+ }
+ Method {
+ name: "setRows"
+ Parameter { name: "rows"; type: "int" }
+ }
+ Method {
+ name: "setColumns"
+ Parameter { name: "columns"; type: "int" }
+ }
+ }
+ Component {
+ name: "Qt3DExtras::QSpriteSheet"
+ defaultProperty: "sprites"
+ prototype: "Qt3DExtras::QAbstractSpriteSheet"
+ exports: ["Qt3D.Extras/SpriteSheet 2.10"]
+ exportMetaObjectRevisions: [210]
+ Property { name: "sprites"; type: "QVector<QSpriteSheetItem*>" }
+ Signal {
+ name: "spritesChanged"
+ Parameter { name: "sprites"; type: "QVector<QSpriteSheetItem*>" }
+ }
+ Method {
+ name: "setSprites"
+ Parameter { name: "sprites"; type: "QVector<QSpriteSheetItem*>" }
+ }
+ Property {
+ name: "sprites"
+ revision: 210
+ type: "Qt3DExtras::QSpriteSheetItem"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DExtras::QSpriteSheetItem"
+ prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Extras/SpriteItem 2.10"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "x"; type: "int" }
+ Property { name: "y"; type: "int" }
+ Property { name: "width"; type: "int" }
+ Property { name: "height"; type: "int" }
+ Signal {
+ name: "xChanged"
+ Parameter { name: "x"; type: "int" }
+ }
+ Signal {
+ name: "yChanged"
+ Parameter { name: "y"; type: "int" }
+ }
+ Signal {
+ name: "widthChanged"
+ Parameter { name: "width"; type: "int" }
+ }
+ Signal {
+ name: "heightChanged"
+ Parameter { name: "height"; type: "int" }
+ }
+ Method {
+ name: "setX"
+ Parameter { name: "x"; type: "int" }
+ }
+ Method {
+ name: "setY"
+ Parameter { name: "y"; type: "int" }
+ }
+ Method {
+ name: "setWidth"
+ Parameter { name: "width"; type: "int" }
+ }
+ Method {
+ name: "setHeight"
+ Parameter { name: "height"; type: "int" }
+ }
+ }
+ Component {
name: "Qt3DExtras::QText2DEntity"
prototype: "Qt3DCore::QEntity"
exports: ["Qt3D.Extras/Text2DEntity 2.9"]
@@ -1443,10 +1685,16 @@ Module {
Component {
name: "Qt3DExtras::QTextureMaterial"
prototype: "Qt3DRender::QMaterial"
- exports: ["Qt3D.Extras/TextureMaterial 2.0"]
- exportMetaObjectRevisions: [0]
+ exports: [
+ "Qt3D.Extras/TextureMaterial 2.0",
+ "Qt3D.Extras/TextureMaterial 2.10",
+ "Qt3D.Extras/TextureMaterial 2.11"
+ ]
+ exportMetaObjectRevisions: [0, 10, 11]
Property { name: "texture"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
Property { name: "textureOffset"; type: "QVector2D" }
+ Property { name: "textureTransform"; revision: 10; type: "QMatrix3x3" }
+ Property { name: "alphaBlending"; revision: 11; type: "bool" }
Signal {
name: "textureChanged"
Parameter { name: "texture"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
@@ -1455,6 +1703,14 @@ Module {
name: "textureOffsetChanged"
Parameter { name: "textureOffset"; type: "QVector2D" }
}
+ Signal {
+ name: "textureTransformChanged"
+ Parameter { name: "textureTransform"; type: "QMatrix3x3" }
+ }
+ Signal {
+ name: "alphaBlendingEnabledChanged"
+ Parameter { name: "enabled"; type: "bool" }
+ }
Method {
name: "setTexture"
Parameter { name: "texture"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
@@ -1463,56 +1719,29 @@ Module {
name: "setTextureOffset"
Parameter { name: "textureOffset"; type: "QVector2D" }
}
+ Method {
+ name: "setTextureTransform"
+ Parameter { name: "matrix"; type: "QMatrix3x3" }
+ }
+ Method {
+ name: "setAlphaBlendingEnabled"
+ Parameter { name: "enabled"; type: "bool" }
+ }
}
Component {
name: "Qt3DExtras::QTexturedMetalRoughMaterial"
- prototype: "Qt3DRender::QMaterial"
+ prototype: "Qt3DExtras::QMetalRoughMaterial"
exports: ["Qt3D.Extras/TexturedMetalRoughMaterial 2.9"]
exportMetaObjectRevisions: [0]
- Property { name: "baseColor"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- Property { name: "metalness"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- Property { name: "roughness"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- Property { name: "ambientOcclusion"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- Property { name: "normal"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- Signal {
- name: "baseColorChanged"
- Parameter { name: "baseColor"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- }
- Signal {
- name: "metalnessChanged"
- Parameter { name: "metalness"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- }
- Signal {
- name: "roughnessChanged"
- Parameter { name: "roughness"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- }
+ Property { name: "ambientOcclusion"; type: "QVariant" }
+ Property { name: "normal"; type: "QVariant" }
Signal {
name: "ambientOcclusionChanged"
- Parameter { name: "ambientOcclusion"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
+ Parameter { name: "ambientOcclusion"; type: "QVariant" }
}
Signal {
name: "normalChanged"
- Parameter { name: "normal"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- }
- Method {
- name: "setBaseColor"
- Parameter { name: "baseColor"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- }
- Method {
- name: "setMetalness"
- Parameter { name: "metalness"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- }
- Method {
- name: "setRoughness"
- Parameter { name: "roughness"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- }
- Method {
- name: "setAmbientOcclusion"
- Parameter { name: "ambientOcclusion"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
- }
- Method {
- name: "setNormal"
- Parameter { name: "normal"; type: "Qt3DRender::QAbstractTexture"; isPointer: true }
+ Parameter { name: "normal"; type: "QVariant" }
}
}
Component {
@@ -1623,155 +1852,4 @@ Module {
Parameter { name: "minorRadius"; type: "float" }
}
}
- Component { name: "Qt3DRender::QFrameGraphNode"; prototype: "Qt3DCore::QNode" }
- Component {
- name: "Qt3DRender::QGeometry"
- prototype: "Qt3DCore::QNode"
- Property {
- name: "boundingVolumePositionAttribute"
- type: "Qt3DRender::QAttribute"
- isPointer: true
- }
- Signal {
- name: "boundingVolumePositionAttributeChanged"
- Parameter { name: "boundingVolumePositionAttribute"; type: "QAttribute"; isPointer: true }
- }
- Method {
- 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"
- Enum {
- name: "PrimitiveType"
- values: {
- "Points": 0,
- "Lines": 1,
- "LineLoop": 2,
- "LineStrip": 3,
- "Triangles": 4,
- "TriangleStrip": 5,
- "TriangleFan": 6,
- "LinesAdjacency": 10,
- "TrianglesAdjacency": 12,
- "LineStripAdjacency": 11,
- "TriangleStripAdjacency": 13,
- "Patches": 14
- }
- }
- Property { name: "instanceCount"; type: "int" }
- 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" }
- Property { name: "geometry"; type: "Qt3DRender::QGeometry"; isPointer: true }
- Property { name: "primitiveType"; type: "PrimitiveType" }
- Signal {
- name: "instanceCountChanged"
- Parameter { name: "instanceCount"; type: "int" }
- }
- Signal {
- name: "vertexCountChanged"
- Parameter { name: "vertexCount"; type: "int" }
- }
- Signal {
- name: "indexOffsetChanged"
- Parameter { name: "indexOffset"; type: "int" }
- }
- Signal {
- name: "firstInstanceChanged"
- Parameter { name: "firstInstance"; type: "int" }
- }
- Signal {
- name: "firstVertexChanged"
- Parameter { name: "firstVertex"; type: "int" }
- }
- Signal {
- name: "restartIndexValueChanged"
- Parameter { name: "restartIndexValue"; type: "int" }
- }
- Signal {
- name: "verticesPerPatchChanged"
- Parameter { name: "verticesPerPatch"; type: "int" }
- }
- Signal {
- name: "primitiveRestartEnabledChanged"
- Parameter { name: "primitiveRestartEnabled"; type: "bool" }
- }
- Signal {
- name: "geometryChanged"
- Parameter { name: "geometry"; type: "QGeometry"; isPointer: true }
- }
- Signal {
- name: "primitiveTypeChanged"
- Parameter { name: "primitiveType"; type: "PrimitiveType" }
- }
- Method {
- name: "setInstanceCount"
- Parameter { name: "instanceCount"; type: "int" }
- }
- Method {
- name: "setVertexCount"
- Parameter { name: "vertexCount"; type: "int" }
- }
- Method {
- name: "setIndexOffset"
- Parameter { name: "indexOffset"; type: "int" }
- }
- Method {
- name: "setFirstInstance"
- Parameter { name: "firstInstance"; type: "int" }
- }
- Method {
- name: "setFirstVertex"
- Parameter { name: "firstVertex"; type: "int" }
- }
- Method {
- name: "setRestartIndexValue"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "setVerticesPerPatch"
- Parameter { name: "verticesPerPatch"; type: "int" }
- }
- Method {
- name: "setPrimitiveRestartEnabled"
- Parameter { name: "enabled"; type: "bool" }
- }
- Method {
- name: "setGeometry"
- Parameter { name: "geometry"; type: "QGeometry"; isPointer: true }
- }
- Method {
- name: "setPrimitiveType"
- Parameter { name: "primitiveType"; type: "PrimitiveType" }
- }
- }
- Component {
- name: "Qt3DRender::QMaterial"
- prototype: "Qt3DCore::QComponent"
- 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 }
- }
- }
- Component { name: "Qt3DRender::QTechniqueFilter"; prototype: "Qt3DRender::QFrameGraphNode" }
}
diff --git a/src/quick3d/imports/input/dependencies.json b/src/quick3d/imports/input/dependencies.json
new file mode 100644
index 000000000..71a3f7381
--- /dev/null
+++ b/src/quick3d/imports/input/dependencies.json
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "Qt3D.Core",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/quick3d/imports/input/plugins.qmltypes b/src/quick3d/imports/input/plugins.qmltypes
index 24655977e..a4662fc5e 100644
--- a/src/quick3d/imports/input/plugins.qmltypes
+++ b/src/quick3d/imports/input/plugins.qmltypes
@@ -4,132 +4,10 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable Qt3D.Input 2.1'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json Qt3D.Input 2.12'
Module {
- dependencies: ["QtQuick 2.8"]
- Component {
- name: "Qt3DCore::QComponent"
- prototype: "Qt3DCore::QNode"
- Property { name: "isShareable"; type: "bool" }
- Signal {
- name: "shareableChanged"
- Parameter { name: "isShareable"; type: "bool" }
- }
- Signal {
- name: "addedToEntity"
- Parameter { name: "entity"; type: "QEntity"; isPointer: true }
- }
- Signal {
- name: "removedFromEntity"
- Parameter { name: "entity"; type: "QEntity"; isPointer: true }
- }
- Method {
- name: "setShareable"
- Parameter { name: "isShareable"; type: "bool" }
- }
- }
- Component {
- name: "Qt3DCore::QNode"
- prototype: "QObject"
- Enum {
- name: "PropertyTrackingMode"
- values: {
- "TrackFinalValues": 0,
- "DontTrackValues": 1,
- "TrackAllValues": 2
- }
- }
- Property { name: "parent"; type: "Qt3DCore::QNode"; isPointer: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "defaultPropertyTrackingMode"; revision: 9; type: "PropertyTrackingMode" }
- Signal {
- name: "parentChanged"
- Parameter { name: "parent"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "enabledChanged"
- Parameter { name: "enabled"; type: "bool" }
- }
- Signal {
- name: "defaultPropertyTrackingModeChanged"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
- }
- Signal { name: "nodeDestroyed" }
- Method {
- name: "setParent"
- Parameter { name: "parent"; type: "QNode"; isPointer: true }
- }
- Method {
- name: "setEnabled"
- Parameter { name: "isEnabled"; type: "bool" }
- }
- Method {
- name: "setDefaultPropertyTrackingMode"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
- }
- }
- Component {
- name: "Qt3DInput::Input::Quick::Quick3DAction"
- defaultProperty: "inputs"
- prototype: "Qt3DInput::QAction"
- exports: ["Qt3D.Input/Action 2.0"]
- exportMetaObjectRevisions: [0]
- Property {
- name: "inputs"
- type: "Qt3DInput::QAbstractActionInput"
- isList: true
- isReadonly: true
- }
- }
- Component {
- name: "Qt3DInput::Input::Quick::Quick3DAxis"
- defaultProperty: "inputs"
- prototype: "Qt3DInput::QAxis"
- exports: ["Qt3D.Input/Axis 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "inputs"; type: "Qt3DInput::QAbstractAxisInput"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DInput::Input::Quick::Quick3DInputChord"
- prototype: "Qt3DInput::QInputChord"
- exports: ["Qt3D.Input/InputChord 2.0"]
- exportMetaObjectRevisions: [0]
- Property {
- name: "chords"
- type: "Qt3DInput::QAbstractActionInput"
- isList: true
- isReadonly: true
- }
- }
- Component {
- name: "Qt3DInput::Input::Quick::Quick3DInputSequence"
- prototype: "Qt3DInput::QInputSequence"
- exports: ["Qt3D.Input/InputSequence 2.0"]
- exportMetaObjectRevisions: [0]
- Property {
- name: "sequences"
- type: "Qt3DInput::QAbstractActionInput"
- isList: true
- isReadonly: true
- }
- }
- Component {
- name: "Qt3DInput::Input::Quick::Quick3DLogicalDevice"
- prototype: "Qt3DInput::QLogicalDevice"
- exports: ["Qt3D.Input/LogicalDevice 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "axes"; type: "Qt3DInput::QAxis"; isList: true; isReadonly: true }
- Property { name: "actions"; type: "Qt3DInput::QAction"; isList: true; isReadonly: true }
- }
- Component {
- 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 }
- }
+ dependencies: ["Qt3D.Core 2.0"]
Component {
name: "Qt3DInput::QAbstractActionInput"
prototype: "Qt3DCore::QNode"
@@ -153,15 +31,39 @@ Module {
Parameter { name: "sourceDevice"; type: "QAbstractPhysicalDevice"; isPointer: true }
}
}
- Component { name: "Qt3DInput::QAbstractPhysicalDevice"; prototype: "Qt3DCore::QNode" }
+ Component {
+ name: "Qt3DInput::QAbstractPhysicalDevice"
+ defaultProperty: "data"
+ prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Input/QAbstractPhysicalDevice 2.0"]
+ isCreatable: false
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "axisSettings"
+ revision: 200
+ type: "Qt3DInput::QAxisSetting"
+ isList: true
+ isReadonly: true
+ }
+ }
Component {
name: "Qt3DInput::QAction"
+ defaultProperty: "inputs"
prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Input/Action 2.0"]
+ exportMetaObjectRevisions: [200]
Property { name: "active"; type: "bool"; isReadonly: true }
Signal {
name: "activeChanged"
Parameter { name: "isActive"; type: "bool" }
}
+ Property {
+ name: "inputs"
+ revision: 200
+ type: "Qt3DInput::QAbstractActionInput"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DInput::QActionInput"
@@ -204,12 +106,22 @@ Module {
}
Component {
name: "Qt3DInput::QAxis"
+ defaultProperty: "inputs"
prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Input/Axis 2.0"]
+ exportMetaObjectRevisions: [200]
Property { name: "value"; type: "float"; isReadonly: true }
Signal {
name: "valueChanged"
Parameter { name: "value"; type: "float" }
}
+ Property {
+ name: "inputs"
+ revision: 200
+ type: "Qt3DInput::QAbstractAxisInput"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DInput::QAxisAccumulator"
@@ -338,12 +250,17 @@ Module {
}
Component {
name: "Qt3DInput::QGamepadInput"
- prototype: "Qt3DInput::QGamepadInput"
- Property { name: "axisSettings"; type: "Qt3DInput::QAxisSetting"; isList: true; isReadonly: true }
+ prototype: "Qt3DInput::QAbstractPhysicalDevice"
+ exports: ["Qt3D.Input/GamepadInput 2.0"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "deviceId"; type: "int" }
}
Component {
name: "Qt3DInput::QInputChord"
+ defaultProperty: "data"
prototype: "Qt3DInput::QAbstractActionInput"
+ exports: ["Qt3D.Input/InputChord 2.0"]
+ exportMetaObjectRevisions: [200]
Property { name: "timeout"; type: "int" }
Signal {
name: "timeoutChanged"
@@ -353,10 +270,20 @@ Module {
name: "setTimeout"
Parameter { name: "timeout"; type: "int" }
}
+ Property {
+ name: "chords"
+ revision: 200
+ type: "Qt3DInput::QAbstractActionInput"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DInput::QInputSequence"
+ defaultProperty: "data"
prototype: "Qt3DInput::QAbstractActionInput"
+ exports: ["Qt3D.Input/InputSequence 2.0"]
+ exportMetaObjectRevisions: [200]
Property { name: "timeout"; type: "int" }
Property { name: "buttonInterval"; type: "int" }
Signal {
@@ -375,6 +302,13 @@ Module {
name: "setButtonInterval"
Parameter { name: "buttonInterval"; type: "int" }
}
+ Property {
+ name: "sequences"
+ revision: 200
+ type: "Qt3DInput::QAbstractActionInput"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DInput::QInputSettings"
@@ -413,6 +347,8 @@ Module {
Component {
name: "Qt3DInput::QKeyboardDevice"
prototype: "Qt3DInput::QAbstractPhysicalDevice"
+ exports: ["Qt3D.Input/KeyboardDevice 2.0"]
+ exportMetaObjectRevisions: [0]
Property {
name: "activeInput"
type: "Qt3DInput::QKeyboardHandler"
@@ -608,10 +544,26 @@ Module {
Parameter { name: "focus"; type: "bool" }
}
}
- Component { name: "Qt3DInput::QLogicalDevice"; prototype: "Qt3DCore::QComponent" }
+ Component {
+ name: "Qt3DInput::QLogicalDevice"
+ defaultProperty: "data"
+ prototype: "Qt3DCore::QComponent"
+ exports: ["Qt3D.Input/LogicalDevice 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property { name: "axes"; revision: 200; type: "Qt3DInput::QAxis"; isList: true; isReadonly: true }
+ Property {
+ name: "actions"
+ revision: 200
+ type: "Qt3DInput::QAction"
+ isList: true
+ isReadonly: true
+ }
+ }
Component {
name: "Qt3DInput::QMouseDevice"
prototype: "Qt3DInput::QAbstractPhysicalDevice"
+ exports: ["Qt3D.Input/MouseDevice 2.0"]
+ exportMetaObjectRevisions: [0]
Enum {
name: "Axis"
values: {
diff --git a/src/quick3d/imports/logic/dependencies.json b/src/quick3d/imports/logic/dependencies.json
new file mode 100644
index 000000000..71a3f7381
--- /dev/null
+++ b/src/quick3d/imports/logic/dependencies.json
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "Qt3D.Core",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/quick3d/imports/logic/plugins.qmltypes b/src/quick3d/imports/logic/plugins.qmltypes
index 61b67ca73..20071117d 100644
--- a/src/quick3d/imports/logic/plugins.qmltypes
+++ b/src/quick3d/imports/logic/plugins.qmltypes
@@ -4,71 +4,10 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable Qt3D.Logic 2.0'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json Qt3D.Logic 2.12'
Module {
- dependencies: ["QtQuick 2.8"]
- Component {
- name: "Qt3DCore::QComponent"
- prototype: "Qt3DCore::QNode"
- Property { name: "isShareable"; type: "bool" }
- Signal {
- name: "shareableChanged"
- Parameter { name: "isShareable"; type: "bool" }
- }
- Signal {
- name: "addedToEntity"
- Parameter { name: "entity"; type: "QEntity"; isPointer: true }
- }
- Signal {
- name: "removedFromEntity"
- Parameter { name: "entity"; type: "QEntity"; isPointer: true }
- }
- Method {
- name: "setShareable"
- Parameter { name: "isShareable"; type: "bool" }
- }
- }
- Component {
- name: "Qt3DCore::QNode"
- prototype: "QObject"
- Enum {
- name: "PropertyTrackingMode"
- values: {
- "TrackFinalValues": 0,
- "DontTrackValues": 1,
- "TrackAllValues": 2
- }
- }
- Property { name: "parent"; type: "Qt3DCore::QNode"; isPointer: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "defaultPropertyTrackingMode"; revision: 9; type: "PropertyTrackingMode" }
- Signal {
- name: "parentChanged"
- Parameter { name: "parent"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "enabledChanged"
- Parameter { name: "enabled"; type: "bool" }
- }
- Signal {
- name: "defaultPropertyTrackingModeChanged"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
- }
- Signal { name: "nodeDestroyed" }
- Method {
- name: "setParent"
- Parameter { name: "parent"; type: "QNode"; isPointer: true }
- }
- Method {
- name: "setEnabled"
- Parameter { name: "isEnabled"; type: "bool" }
- }
- Method {
- name: "setDefaultPropertyTrackingMode"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
- }
- }
+ dependencies: ["Qt3D.Core 2.0"]
Component {
name: "Qt3DLogic::QFrameAction"
prototype: "Qt3DCore::QComponent"
diff --git a/src/quick3d/imports/render/dependencies.json b/src/quick3d/imports/render/dependencies.json
new file mode 100644
index 000000000..71a3f7381
--- /dev/null
+++ b/src/quick3d/imports/render/dependencies.json
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "Qt3D.Core",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/quick3d/imports/render/plugins.qmltypes b/src/quick3d/imports/render/plugins.qmltypes
index e34b18f2e..a801f99e0 100644
--- a/src/quick3d/imports/render/plugins.qmltypes
+++ b/src/quick3d/imports/render/plugins.qmltypes
@@ -4,10 +4,10 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable Qt3D.Render 2.9'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json Qt3D.Render 2.12'
Module {
- dependencies: ["QtQuick 2.8"]
+ dependencies: ["Qt3D.Core 2.0"]
Component {
name: "QWindow"
prototype: "QObject"
@@ -155,6 +155,17 @@ Module {
Parameter { name: "arg"; type: "int" }
}
Method {
+ name: "setGeometry"
+ Parameter { name: "posx"; type: "int" }
+ Parameter { name: "posy"; type: "int" }
+ Parameter { name: "w"; type: "int" }
+ Parameter { name: "h"; type: "int" }
+ }
+ Method {
+ name: "setGeometry"
+ Parameter { name: "rect"; type: "QRect" }
+ }
+ Method {
name: "setMinimumWidth"
Parameter { name: "w"; type: "int" }
}
@@ -178,77 +189,6 @@ Module {
Method { name: "requestUpdate"; revision: 3 }
}
Component {
- name: "Qt3DCore::QComponent"
- prototype: "Qt3DCore::QNode"
- Property { name: "isShareable"; type: "bool" }
- Signal {
- name: "shareableChanged"
- Parameter { name: "isShareable"; type: "bool" }
- }
- Signal {
- name: "addedToEntity"
- Parameter { name: "entity"; type: "QEntity"; isPointer: true }
- }
- Signal {
- name: "removedFromEntity"
- Parameter { name: "entity"; type: "QEntity"; isPointer: true }
- }
- Method {
- name: "setShareable"
- Parameter { name: "isShareable"; type: "bool" }
- }
- }
- Component { name: "Qt3DCore::QEntity"; prototype: "Qt3DCore::QNode" }
- Component {
- name: "Qt3DCore::QNode"
- prototype: "QObject"
- Enum {
- name: "PropertyTrackingMode"
- values: {
- "TrackFinalValues": 0,
- "DontTrackValues": 1,
- "TrackAllValues": 2
- }
- }
- Property { name: "parent"; type: "Qt3DCore::QNode"; isPointer: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "defaultPropertyTrackingMode"; revision: 9; type: "PropertyTrackingMode" }
- Signal {
- name: "parentChanged"
- Parameter { name: "parent"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "enabledChanged"
- Parameter { name: "enabled"; type: "bool" }
- }
- Signal {
- name: "defaultPropertyTrackingModeChanged"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
- }
- Signal { name: "nodeDestroyed" }
- Method {
- name: "setParent"
- Parameter { name: "parent"; type: "QNode"; isPointer: true }
- }
- Method {
- name: "setEnabled"
- Parameter { name: "isEnabled"; type: "bool" }
- }
- Method {
- name: "setDefaultPropertyTrackingMode"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
- }
- }
- Component {
- name: "Qt3DCore::Quick::Quick3DNode"
- defaultProperty: "data"
- 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"]
@@ -283,6 +223,49 @@ Module {
}
}
Component {
+ name: "Qt3DRender::QAbstractRayCaster"
+ prototype: "Qt3DCore::QComponent"
+ Enum {
+ name: "RunMode"
+ values: {
+ "Continuous": 0,
+ "SingleShot": 1
+ }
+ }
+ Enum {
+ name: "FilterMode"
+ values: {
+ "AcceptAnyMatchingLayers": 0,
+ "AcceptAllMatchingLayers": 1,
+ "DiscardAnyMatchingLayers": 2,
+ "DiscardAllMatchingLayers": 3
+ }
+ }
+ Property { name: "runMode"; type: "RunMode" }
+ Property { name: "filterMode"; type: "FilterMode" }
+ Property { name: "hits"; type: "Hits"; isReadonly: true }
+ Signal {
+ name: "runModeChanged"
+ Parameter { name: "runMode"; type: "Qt3DRender::QAbstractRayCaster::RunMode" }
+ }
+ Signal {
+ name: "hitsChanged"
+ Parameter { name: "hits"; type: "Qt3DRender::QAbstractRayCaster::Hits" }
+ }
+ Signal {
+ name: "filterModeChanged"
+ Parameter { name: "filterMode"; type: "Qt3DRender::QAbstractRayCaster::FilterMode" }
+ }
+ Method {
+ name: "setRunMode"
+ Parameter { name: "runMode"; type: "RunMode" }
+ }
+ Method {
+ name: "setFilterMode"
+ Parameter { name: "filterMode"; type: "FilterMode" }
+ }
+ }
+ Component {
name: "Qt3DRender::QAbstractTexture"
prototype: "Qt3DCore::QNode"
exports: ["Qt3D.Render/Texture 2.0"]
@@ -698,7 +681,31 @@ Module {
Property { name: "defaultNormalAttributeName"; type: "string"; isReadonly: true }
Property { name: "defaultColorAttributeName"; type: "string"; isReadonly: true }
Property { name: "defaultTextureCoordinateAttributeName"; type: "string"; isReadonly: true }
+ Property {
+ name: "defaultTextureCoordinate1AttributeName"
+ revision: 11
+ type: "string"
+ isReadonly: true
+ }
+ Property {
+ name: "defaultTextureCoordinate2AttributeName"
+ revision: 11
+ type: "string"
+ isReadonly: true
+ }
Property { name: "defaultTangentAttributeName"; type: "string"; isReadonly: true }
+ Property {
+ name: "defaultJointIndicesAttributeName"
+ revision: 10
+ type: "string"
+ isReadonly: true
+ }
+ Property {
+ name: "defaultJointWeightsAttributeName"
+ revision: 10
+ type: "string"
+ isReadonly: true
+ }
Signal {
name: "bufferChanged"
Parameter { name: "buffer"; type: "QBuffer"; isPointer: true }
@@ -911,6 +918,32 @@ Module {
}
}
Component {
+ name: "Qt3DRender::QBlitFramebuffer"
+ prototype: "Qt3DRender::QFrameGraphNode"
+ exports: ["Qt3D.Render/BlitFramebuffer 2.10"]
+ exportMetaObjectRevisions: [0]
+ Enum {
+ name: "InterpolationMethod"
+ values: {
+ "Nearest": 0,
+ "Linear": 1
+ }
+ }
+ Property { name: "source"; type: "Qt3DRender::QRenderTarget"; isPointer: true }
+ Property { name: "destination"; type: "Qt3DRender::QRenderTarget"; isPointer: true }
+ Property { name: "sourceRect"; type: "QRectF" }
+ Property { name: "destinationRect"; type: "QRectF" }
+ Property {
+ name: "sourceAttachmentPoint"
+ type: "Qt3DRender::QRenderTargetOutput::AttachmentPoint"
+ }
+ Property {
+ name: "destinationAttachmentPoint"
+ type: "Qt3DRender::QRenderTargetOutput::AttachmentPoint"
+ }
+ Property { name: "interpolationMethod"; type: "InterpolationMethod" }
+ }
+ Component {
name: "Qt3DRender::QBuffer"
prototype: "Qt3DCore::QNode"
exports: ["Qt3D.Render/BufferBase 2.0", "Qt3D.Render/BufferBase 2.9"]
@@ -1006,8 +1039,8 @@ Module {
Component {
name: "Qt3DRender::QCamera"
prototype: "Qt3DCore::QEntity"
- exports: ["Qt3D.Render/Camera 2.0"]
- exportMetaObjectRevisions: [0]
+ exports: ["Qt3D.Render/Camera 2.0", "Qt3D.Render/Camera 2.9"]
+ exportMetaObjectRevisions: [0, 9]
Enum {
name: "CameraTranslationOption"
values: {
@@ -1147,6 +1180,16 @@ Module {
name: "setViewCenter"
Parameter { name: "viewCenter"; type: "QVector3D" }
}
+ Method { name: "viewAll" }
+ Method {
+ name: "viewSphere"
+ Parameter { name: "center"; type: "QVector3D" }
+ Parameter { name: "radius"; type: "float" }
+ }
+ Method {
+ name: "viewEntity"
+ Parameter { name: "entity"; type: "Qt3DCore::QEntity"; isPointer: true }
+ }
Method {
name: "tiltRotation"
type: "QQuaternion"
@@ -1232,8 +1275,8 @@ Module {
Component {
name: "Qt3DRender::QCameraLens"
prototype: "Qt3DCore::QComponent"
- exports: ["Qt3D.Render/CameraLens 2.0"]
- exportMetaObjectRevisions: [0]
+ exports: ["Qt3D.Render/CameraLens 2.0", "Qt3D.Render/CameraLens 2.9"]
+ exportMetaObjectRevisions: [0, 9]
Enum {
name: "ProjectionType"
values: {
@@ -1298,6 +1341,11 @@ Module {
name: "exposureChanged"
Parameter { name: "exposure"; type: "float" }
}
+ Signal {
+ name: "viewSphere"
+ Parameter { name: "center"; type: "QVector3D" }
+ Parameter { name: "radius"; type: "float" }
+ }
Method {
name: "setProjectionType"
Parameter { name: "projectionType"; type: "ProjectionType" }
@@ -1345,7 +1393,10 @@ Module {
}
Component {
name: "Qt3DRender::QCameraSelector"
+ defaultProperty: "data"
prototype: "Qt3DRender::QFrameGraphNode"
+ exports: ["Qt3D.Render/CameraSelector 2.0"]
+ exportMetaObjectRevisions: [200]
Property { name: "camera"; type: "Qt3DCore::QEntity"; isPointer: true }
Signal {
name: "cameraChanged"
@@ -1355,6 +1406,14 @@ Module {
name: "setCamera"
Parameter { name: "camera"; type: "Qt3DCore::QEntity"; isPointer: true }
}
+ Property { name: "data"; revision: 200; type: "QObject"; isList: true; isReadonly: true }
+ Property {
+ name: "childNodes"
+ revision: 200
+ type: "Qt3DCore::QNode"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DRender::QClearBuffers"
@@ -1610,7 +1669,27 @@ Module {
exports: ["Qt3D.Render/Dithering 2.0"]
exportMetaObjectRevisions: [0]
}
- Component { name: "Qt3DRender::QEffect"; prototype: "Qt3DCore::QNode" }
+ Component {
+ name: "Qt3DRender::QEffect"
+ defaultProperty: "data"
+ prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Render/Effect 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "techniques"
+ revision: 200
+ type: "Qt3DRender::QTechnique"
+ isList: true
+ isReadonly: true
+ }
+ Property {
+ name: "parameters"
+ revision: 200
+ type: "Qt3DRender::QParameter"
+ isList: true
+ isReadonly: true
+ }
+ }
Component {
name: "Qt3DRender::QEnvironmentLight"
prototype: "Qt3DCore::QComponent"
@@ -1699,7 +1778,10 @@ Module {
}
Component {
name: "Qt3DRender::QGeometry"
+ defaultProperty: "attributes"
prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Render/Geometry 2.0"]
+ exportMetaObjectRevisions: [200]
Property {
name: "boundingVolumePositionAttribute"
type: "Qt3DRender::QAttribute"
@@ -1721,6 +1803,13 @@ Module {
name: "removeAttribute"
Parameter { name: "attribute"; type: "Qt3DRender::QAttribute"; isPointer: true }
}
+ Property {
+ name: "attributes"
+ revision: 200
+ type: "Qt3DRender::QAttribute"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DRender::QGeometryRenderer"
@@ -1749,6 +1838,7 @@ Module {
Property { name: "indexOffset"; type: "int" }
Property { name: "firstInstance"; type: "int" }
Property { name: "firstVertex"; type: "int" }
+ Property { name: "indexBufferByteOffset"; type: "int" }
Property { name: "restartIndexValue"; type: "int" }
Property { name: "verticesPerPatch"; type: "int" }
Property { name: "primitiveRestartEnabled"; type: "bool" }
@@ -1775,6 +1865,10 @@ Module {
Parameter { name: "firstVertex"; type: "int" }
}
Signal {
+ name: "indexBufferByteOffsetChanged"
+ Parameter { name: "offset"; type: "int" }
+ }
+ Signal {
name: "restartIndexValueChanged"
Parameter { name: "restartIndexValue"; type: "int" }
}
@@ -1815,6 +1909,10 @@ Module {
Parameter { name: "firstVertex"; type: "int" }
}
Method {
+ name: "setIndexBufferByteOffset"
+ Parameter { name: "offset"; type: "int" }
+ }
+ Method {
name: "setRestartIndexValue"
Parameter { name: "index"; type: "int" }
}
@@ -1844,7 +1942,9 @@ Module {
name: "Api"
values: {
"OpenGLES": 2,
- "OpenGL": 1
+ "OpenGL": 1,
+ "Vulkan": 3,
+ "DirectX": 4
}
}
Enum {
@@ -1916,8 +2016,36 @@ Module {
prototype: "Qt3DCore::QComponent"
exports: ["Qt3D.Render/Layer 2.0"]
exportMetaObjectRevisions: [0]
+ Property { name: "recursive"; type: "bool" }
+ }
+ Component {
+ name: "Qt3DRender::QLayerFilter"
+ defaultProperty: "data"
+ prototype: "Qt3DRender::QFrameGraphNode"
+ exports: ["Qt3D.Render/LayerFilter 2.0"]
+ exportMetaObjectRevisions: [200]
+ Enum {
+ name: "FilterMode"
+ values: {
+ "AcceptAnyMatchingLayers": 0,
+ "AcceptAllMatchingLayers": 1,
+ "DiscardAnyMatchingLayers": 2,
+ "DiscardAllMatchingLayers": 3
+ }
+ }
+ Property { name: "filterMode"; type: "FilterMode" }
+ Signal {
+ name: "filterModeChanged"
+ Parameter { name: "filterMode"; type: "FilterMode" }
+ }
+ Property {
+ name: "layers"
+ revision: 200
+ type: "Qt3DRender::QLayer"
+ isList: true
+ isReadonly: true
+ }
}
- Component { name: "Qt3DRender::QLayerFilter"; prototype: "Qt3DRender::QFrameGraphNode" }
Component {
name: "Qt3DRender::QLevelOfDetail"
prototype: "Qt3DCore::QComponent"
@@ -1977,7 +2105,7 @@ Module {
}
Method {
name: "createBoundingSphere"
- type: "QLevelOfDetailBoundingSphere"
+ type: "Qt3DRender::QLevelOfDetailBoundingSphere"
Parameter { name: "center"; type: "QVector3D" }
Parameter { name: "radius"; type: "float" }
}
@@ -1989,8 +2117,35 @@ Module {
exportMetaObjectRevisions: [0]
}
Component {
+ name: "Qt3DRender::QLineWidth"
+ prototype: "Qt3DRender::QRenderState"
+ exports: ["Qt3D.Render/LineWidth 2.10"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "value"; type: "float" }
+ Property { name: "smooth"; type: "bool" }
+ Signal {
+ name: "valueChanged"
+ Parameter { name: "value"; type: "float" }
+ }
+ Signal {
+ name: "smoothChanged"
+ Parameter { name: "enabled"; type: "bool" }
+ }
+ Method {
+ name: "setValue"
+ Parameter { name: "value"; type: "float" }
+ }
+ Method {
+ name: "setSmooth"
+ Parameter { name: "enabled"; type: "bool" }
+ }
+ }
+ Component {
name: "Qt3DRender::QMaterial"
+ defaultProperty: "data"
prototype: "Qt3DCore::QComponent"
+ exports: ["Qt3D.Render/Material 2.0"]
+ exportMetaObjectRevisions: [200]
Property { name: "effect"; type: "Qt3DRender::QEffect"; isPointer: true }
Signal {
name: "effectChanged"
@@ -2000,10 +2155,20 @@ Module {
name: "setEffect"
Parameter { name: "effect"; type: "QEffect"; isPointer: true }
}
+ Property {
+ name: "parameters"
+ revision: 200
+ type: "Qt3DRender::QParameter"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DRender::QMemoryBarrier"
+ defaultProperty: "data"
prototype: "Qt3DRender::QFrameGraphNode"
+ exports: ["Qt3D.Render/MemoryBarrier 2.9"]
+ exportMetaObjectRevisions: [209]
Enum {
name: "Operation"
values: {
@@ -2033,14 +2198,25 @@ Module {
name: "setWaitOperations"
Parameter { name: "operations"; type: "QMemoryBarrier::Operations" }
}
+ Property { name: "waitFor"; revision: 209; type: "int" }
}
Component {
name: "Qt3DRender::QMesh"
prototype: "Qt3DRender::QGeometryRenderer"
exports: ["Qt3D.Render/Mesh 2.0"]
exportMetaObjectRevisions: [0]
+ Enum {
+ name: "Status"
+ values: {
+ "None": 0,
+ "Loading": 1,
+ "Ready": 2,
+ "Error": 3
+ }
+ }
Property { name: "source"; type: "QUrl" }
Property { name: "meshName"; type: "string" }
+ Property { name: "status"; revision: 11; type: "Status"; isReadonly: true }
Signal {
name: "sourceChanged"
Parameter { name: "source"; type: "QUrl" }
@@ -2049,6 +2225,10 @@ Module {
name: "meshNameChanged"
Parameter { name: "meshName"; type: "string" }
}
+ Signal {
+ name: "statusChanged"
+ Parameter { name: "status"; type: "Status" }
+ }
Method {
name: "setSource"
Parameter { name: "source"; type: "QUrl" }
@@ -2079,8 +2259,11 @@ Module {
Component {
name: "Qt3DRender::QObjectPicker"
prototype: "Qt3DCore::QComponent"
- exports: ["Qt3D.Render/ObjectPicker 2.0"]
- exportMetaObjectRevisions: [0]
+ exports: [
+ "Qt3D.Render/ObjectPicker 2.0",
+ "Qt3D.Render/ObjectPicker 2.9"
+ ]
+ exportMetaObjectRevisions: [0, 9]
Property { name: "hoverEnabled"; type: "bool" }
Property { name: "dragEnabled"; type: "bool" }
Property { name: "pressed"; type: "bool"; isReadonly: true }
@@ -2206,7 +2389,10 @@ Module {
name: "PickMethod"
values: {
"BoundingVolumePicking": 0,
- "TrianglePicking": 1
+ "TrianglePicking": 1,
+ "LinePicking": 2,
+ "PointPicking": 4,
+ "PrimitivePicking": 7
}
}
Enum {
@@ -2227,6 +2413,7 @@ Module {
Property { name: "pickMethod"; type: "PickMethod" }
Property { name: "pickResultMode"; type: "PickResultMode" }
Property { name: "faceOrientationPickingMode"; type: "FaceOrientationPickingMode" }
+ Property { name: "worldSpaceTolerance"; revision: 10; type: "float" }
Signal {
name: "pickMethodChanged"
Parameter { name: "pickMethod"; type: "QPickingSettings::PickMethod" }
@@ -2242,6 +2429,10 @@ Module {
type: "QPickingSettings::FaceOrientationPickingMode"
}
}
+ Signal {
+ name: "worldSpaceToleranceChanged"
+ Parameter { name: "worldSpaceTolerance"; type: "float" }
+ }
Method {
name: "setPickMethod"
Parameter { name: "pickMethod"; type: "PickMethod" }
@@ -2254,6 +2445,10 @@ Module {
name: "setFaceOrientationPickingMode"
Parameter { name: "faceOrientationPickingMode"; type: "FaceOrientationPickingMode" }
}
+ Method {
+ name: "setWorldSpaceTolerance"
+ Parameter { name: "worldSpaceTolerance"; type: "float" }
+ }
}
Component {
name: "Qt3DRender::QPointLight"
@@ -2344,16 +2539,87 @@ Module {
}
}
Component {
- name: "Qt3DRender::QRenderCapture"
+ name: "Qt3DRender::QProximityFilter"
prototype: "Qt3DRender::QFrameGraphNode"
- exports: ["Qt3D.Render/RenderCapture 2.1"]
+ exports: ["Qt3D.Render/ProximityFilter 2.10"]
exportMetaObjectRevisions: [0]
+ Property { name: "entity"; type: "Qt3DCore::QEntity"; isPointer: true }
+ Property { name: "distanceThreshold"; type: "float" }
+ Signal {
+ name: "entityChanged"
+ Parameter { name: "entity"; type: "Qt3DCore::QEntity"; isPointer: true }
+ }
+ Signal {
+ name: "distanceThresholdChanged"
+ Parameter { name: "distanceThreshold"; type: "float" }
+ }
+ Method {
+ name: "setEntity"
+ Parameter { name: "entity"; type: "Qt3DCore::QEntity"; isPointer: true }
+ }
+ Method {
+ name: "setDistanceThreshold"
+ Parameter { name: "distanceThreshold"; type: "float" }
+ }
+ }
+ Component {
+ name: "Qt3DRender::QRayCaster"
+ prototype: "Qt3DRender::QAbstractRayCaster"
+ Property { name: "origin"; type: "QVector3D" }
+ Property { name: "direction"; type: "QVector3D" }
+ Property { name: "length"; type: "float" }
+ Signal {
+ name: "originChanged"
+ Parameter { name: "origin"; type: "QVector3D" }
+ }
+ Signal {
+ name: "directionChanged"
+ Parameter { name: "direction"; type: "QVector3D" }
+ }
+ Signal {
+ name: "lengthChanged"
+ Parameter { name: "length"; type: "float" }
+ }
+ Method {
+ name: "setOrigin"
+ Parameter { name: "origin"; type: "QVector3D" }
+ }
+ Method {
+ name: "setDirection"
+ Parameter { name: "direction"; type: "QVector3D" }
+ }
+ Method {
+ name: "setLength"
+ Parameter { name: "length"; type: "float" }
+ }
+ Method { name: "trigger" }
+ Method {
+ name: "trigger"
+ Parameter { name: "origin"; type: "QVector3D" }
+ Parameter { name: "direction"; type: "QVector3D" }
+ Parameter { name: "length"; type: "float" }
+ }
+ }
+ Component {
+ name: "Qt3DRender::QRenderCapture"
+ prototype: "Qt3DRender::QFrameGraphNode"
+ exports: [
+ "Qt3D.Render/RenderCapture 2.1",
+ "Qt3D.Render/RenderCapture 2.9"
+ ]
+ exportMetaObjectRevisions: [0, 9]
Method {
name: "requestCapture"
type: "Qt3DRender::QRenderCaptureReply*"
Parameter { name: "captureId"; type: "int" }
}
Method { name: "requestCapture"; revision: 9; type: "Qt3DRender::QRenderCaptureReply*" }
+ Method {
+ name: "requestCapture"
+ revision: 10
+ type: "Qt3DRender::QRenderCaptureReply*"
+ Parameter { name: "rect"; type: "QRect" }
+ }
}
Component {
name: "Qt3DRender::QRenderCaptureReply"
@@ -2381,7 +2647,10 @@ Module {
}
Component {
name: "Qt3DRender::QRenderPass"
+ defaultProperty: "data"
prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Render/RenderPass 2.0"]
+ exportMetaObjectRevisions: [200]
Property { name: "shaderProgram"; type: "Qt3DRender::QShaderProgram"; isPointer: true }
Signal {
name: "shaderProgramChanged"
@@ -2391,8 +2660,49 @@ Module {
name: "setShaderProgram"
Parameter { name: "shaderProgram"; type: "QShaderProgram"; isPointer: true }
}
+ Property {
+ name: "filterKeys"
+ revision: 200
+ type: "Qt3DRender::QFilterKey"
+ isList: true
+ isReadonly: true
+ }
+ Property {
+ name: "renderStates"
+ revision: 200
+ type: "Qt3DRender::QRenderState"
+ isList: true
+ isReadonly: true
+ }
+ Property {
+ name: "parameters"
+ revision: 200
+ type: "Qt3DRender::QParameter"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QRenderPassFilter"
+ defaultProperty: "data"
+ prototype: "Qt3DRender::QFrameGraphNode"
+ exports: ["Qt3D.Render/RenderPassFilter 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "matchAny"
+ revision: 200
+ type: "Qt3DRender::QFilterKey"
+ isList: true
+ isReadonly: true
+ }
+ Property {
+ name: "parameters"
+ revision: 200
+ type: "Qt3DRender::QParameter"
+ isList: true
+ isReadonly: true
+ }
}
- Component { name: "Qt3DRender::QRenderPassFilter"; prototype: "Qt3DRender::QFrameGraphNode" }
Component {
name: "Qt3DRender::QRenderSettings"
defaultProperty: "activeFrameGraph"
@@ -2438,7 +2748,20 @@ Module {
isCreatable: false
exportMetaObjectRevisions: [0]
}
- Component { name: "Qt3DRender::QRenderStateSet"; prototype: "Qt3DRender::QFrameGraphNode" }
+ Component {
+ name: "Qt3DRender::QRenderStateSet"
+ defaultProperty: "data"
+ prototype: "Qt3DRender::QFrameGraphNode"
+ exports: ["Qt3D.Render/RenderStateSet 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "renderStates"
+ revision: 200
+ type: "Qt3DRender::QRenderState"
+ isList: true
+ isReadonly: true
+ }
+ }
Component {
name: "Qt3DRender::QRenderSurfaceSelector"
prototype: "Qt3DRender::QFrameGraphNode"
@@ -2472,7 +2795,20 @@ Module {
Parameter { name: "size"; type: "QSize" }
}
}
- Component { name: "Qt3DRender::QRenderTarget"; prototype: "Qt3DCore::QComponent" }
+ Component {
+ name: "Qt3DRender::QRenderTarget"
+ defaultProperty: "data"
+ prototype: "Qt3DCore::QComponent"
+ exports: ["Qt3D.Render/RenderTarget 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "attachments"
+ revision: 200
+ type: "Qt3DRender::QRenderTargetOutput"
+ isList: true
+ isReadonly: true
+ }
+ }
Component {
name: "Qt3DRender::QRenderTargetOutput"
prototype: "Qt3DCore::QNode"
@@ -2550,7 +2886,10 @@ Module {
}
Component {
name: "Qt3DRender::QRenderTargetSelector"
+ defaultProperty: "data"
prototype: "Qt3DRender::QFrameGraphNode"
+ exports: ["Qt3D.Render/RenderTargetSelector 2.0"]
+ exportMetaObjectRevisions: [200]
Property { name: "target"; type: "Qt3DRender::QRenderTarget"; isPointer: true }
Signal {
name: "targetChanged"
@@ -2560,10 +2899,17 @@ Module {
name: "setTarget"
Parameter { name: "target"; type: "QRenderTarget"; isPointer: true }
}
+ Property { name: "drawBuffers"; revision: 200; type: "QVariantList" }
}
Component {
name: "Qt3DRender::QSceneLoader"
+ defaultProperty: "data"
prototype: "Qt3DCore::QComponent"
+ exports: [
+ "Qt3D.Render/SceneLoader 2.0",
+ "Qt3D.Render/SceneLoader 2.9"
+ ]
+ exportMetaObjectRevisions: [200, 9]
Enum {
name: "Status"
values: {
@@ -2660,6 +3006,24 @@ Module {
}
}
Component {
+ name: "Qt3DRender::QScreenRayCaster"
+ prototype: "Qt3DRender::QAbstractRayCaster"
+ Property { name: "position"; type: "QPoint" }
+ Signal {
+ name: "positionChanged"
+ Parameter { name: "position"; type: "QPoint" }
+ }
+ Method {
+ name: "setPosition"
+ Parameter { name: "position"; type: "QPoint" }
+ }
+ Method { name: "trigger" }
+ Method {
+ name: "trigger"
+ Parameter { name: "position"; type: "QPoint" }
+ }
+ }
+ Component {
name: "Qt3DRender::QSeamlessCubemap"
prototype: "Qt3DRender::QRenderState"
exports: ["Qt3D.Render/SeamlessCubemap 2.0"]
@@ -2675,8 +3039,11 @@ Module {
Component {
name: "Qt3DRender::QShaderProgram"
prototype: "Qt3DCore::QNode"
- exports: ["Qt3D.Render/ShaderProgram 2.0"]
- exportMetaObjectRevisions: [0]
+ exports: [
+ "Qt3D.Render/ShaderProgram 2.0",
+ "Qt3D.Render/ShaderProgram 2.9"
+ ]
+ exportMetaObjectRevisions: [0, 9]
Enum {
name: "ShaderType"
values: {
@@ -2767,6 +3134,84 @@ Module {
}
}
Component {
+ name: "Qt3DRender::QShaderProgramBuilder"
+ prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Render/ShaderProgramBuilder 2.10"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "shaderProgram"; type: "Qt3DRender::QShaderProgram"; isPointer: true }
+ Property { name: "enabledLayers"; type: "QStringList" }
+ Property { name: "vertexShaderGraph"; type: "QUrl" }
+ Property { name: "tessellationControlShaderGraph"; type: "QUrl" }
+ Property { name: "tessellationEvaluationShaderGraph"; type: "QUrl" }
+ Property { name: "geometryShaderGraph"; type: "QUrl" }
+ Property { name: "fragmentShaderGraph"; type: "QUrl" }
+ Property { name: "computeShaderGraph"; type: "QUrl" }
+ Signal {
+ name: "shaderProgramChanged"
+ Parameter { name: "shaderProgram"; type: "Qt3DRender::QShaderProgram"; isPointer: true }
+ }
+ Signal {
+ name: "enabledLayersChanged"
+ Parameter { name: "layers"; type: "QStringList" }
+ }
+ Signal {
+ name: "vertexShaderGraphChanged"
+ Parameter { name: "vertexShaderGraph"; type: "QUrl" }
+ }
+ Signal {
+ name: "tessellationControlShaderGraphChanged"
+ Parameter { name: "tessellationControlShaderGraph"; type: "QUrl" }
+ }
+ Signal {
+ name: "tessellationEvaluationShaderGraphChanged"
+ Parameter { name: "tessellationEvaluationShaderGraph"; type: "QUrl" }
+ }
+ Signal {
+ name: "geometryShaderGraphChanged"
+ Parameter { name: "geometryShaderGraph"; type: "QUrl" }
+ }
+ Signal {
+ name: "fragmentShaderGraphChanged"
+ Parameter { name: "fragmentShaderGraph"; type: "QUrl" }
+ }
+ Signal {
+ name: "computeShaderGraphChanged"
+ Parameter { name: "computeShaderGraph"; type: "QUrl" }
+ }
+ Method {
+ name: "setShaderProgram"
+ Parameter { name: "program"; type: "Qt3DRender::QShaderProgram"; isPointer: true }
+ }
+ Method {
+ name: "setEnabledLayers"
+ Parameter { name: "layers"; type: "QStringList" }
+ }
+ Method {
+ name: "setVertexShaderGraph"
+ Parameter { name: "vertexShaderGraph"; type: "QUrl" }
+ }
+ Method {
+ name: "setTessellationControlShaderGraph"
+ Parameter { name: "tessellationControlShaderGraph"; type: "QUrl" }
+ }
+ Method {
+ name: "setTessellationEvaluationShaderGraph"
+ Parameter { name: "tessellationEvaluationShaderGraph"; type: "QUrl" }
+ }
+ Method {
+ name: "setGeometryShaderGraph"
+ Parameter { name: "geometryShaderGraph"; type: "QUrl" }
+ }
+ Method {
+ name: "setFragmentShaderGraph"
+ Parameter { name: "fragmentShaderGraph"; type: "QUrl" }
+ }
+ Method {
+ name: "setComputeShaderGraph"
+ Parameter { name: "computeShaderGraph"; type: "QUrl" }
+ }
+ }
+ Component {
name: "Qt3DRender::QSortPolicy"
prototype: "Qt3DRender::QFrameGraphNode"
exports: ["Qt3D.Render/SortPolicy 2.0"]
@@ -3031,33 +3476,198 @@ Module {
}
Component {
name: "Qt3DRender::QTechnique"
+ defaultProperty: "data"
prototype: "Qt3DCore::QNode"
+ exports: ["Qt3D.Render/Technique 2.0"]
+ exportMetaObjectRevisions: [200]
Property {
name: "graphicsApiFilter"
type: "Qt3DRender::QGraphicsApiFilter"
isReadonly: true
isPointer: true
}
+ Property {
+ name: "filterKeys"
+ revision: 200
+ type: "Qt3DRender::QFilterKey"
+ isList: true
+ isReadonly: true
+ }
+ Property {
+ name: "renderPasses"
+ revision: 200
+ type: "Qt3DRender::QRenderPass"
+ isList: true
+ isReadonly: true
+ }
+ Property {
+ name: "parameters"
+ revision: 200
+ type: "Qt3DRender::QParameter"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QTechniqueFilter"
+ defaultProperty: "data"
+ prototype: "Qt3DRender::QFrameGraphNode"
+ exports: ["Qt3D.Render/TechniqueFilter 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "matchAll"
+ revision: 200
+ type: "Qt3DRender::QFilterKey"
+ isList: true
+ isReadonly: true
+ }
+ Property {
+ name: "parameters"
+ revision: 200
+ type: "Qt3DRender::QParameter"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QTexture1D"
+ defaultProperty: "textureImages"
+ prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/Texture1D 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QTexture1DArray"
+ defaultProperty: "textureImages"
+ prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/Texture1DArray 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QTexture2D"
+ defaultProperty: "textureImages"
+ prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/Texture2D 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QTexture2DArray"
+ defaultProperty: "textureImages"
+ prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/Texture2DArray 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
}
- Component { name: "Qt3DRender::QTechniqueFilter"; prototype: "Qt3DRender::QFrameGraphNode" }
- Component { name: "Qt3DRender::QTexture1D"; prototype: "Qt3DRender::QAbstractTexture" }
- Component { name: "Qt3DRender::QTexture1DArray"; prototype: "Qt3DRender::QAbstractTexture" }
- Component { name: "Qt3DRender::QTexture2D"; prototype: "Qt3DRender::QAbstractTexture" }
- Component { name: "Qt3DRender::QTexture2DArray"; prototype: "Qt3DRender::QAbstractTexture" }
Component {
name: "Qt3DRender::QTexture2DMultisample"
+ defaultProperty: "textureImages"
prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/Texture2DMultisample 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DRender::QTexture2DMultisampleArray"
+ defaultProperty: "textureImages"
prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/Texture2DMultisampleArray 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QTexture3D"
+ defaultProperty: "textureImages"
+ prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/Texture3D 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QTextureBuffer"
+ defaultProperty: "textureImages"
+ prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/TextureBuffer 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QTextureCubeMap"
+ defaultProperty: "textureImages"
+ prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/TextureCubeMap 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
}
- Component { name: "Qt3DRender::QTexture3D"; prototype: "Qt3DRender::QAbstractTexture" }
- Component { name: "Qt3DRender::QTextureBuffer"; prototype: "Qt3DRender::QAbstractTexture" }
- Component { name: "Qt3DRender::QTextureCubeMap"; prototype: "Qt3DRender::QAbstractTexture" }
Component {
name: "Qt3DRender::QTextureCubeMapArray"
+ defaultProperty: "textureImages"
prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/TextureCubeMapArray 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
}
Component {
name: "Qt3DRender::QTextureImage"
@@ -3099,7 +3709,10 @@ Module {
}
Component {
name: "Qt3DRender::QTextureLoader"
+ defaultProperty: "textureImages"
prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/TextureLoader 2.0"]
+ exportMetaObjectRevisions: [200]
Property { name: "source"; type: "QUrl" }
Property { name: "mirrored"; type: "bool" }
Signal {
@@ -3118,8 +3731,28 @@ Module {
name: "setMirrored"
Parameter { name: "mirrored"; type: "bool" }
}
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
+ }
+ Component {
+ name: "Qt3DRender::QTextureRectangle"
+ defaultProperty: "textureImages"
+ prototype: "Qt3DRender::QAbstractTexture"
+ exports: ["Qt3D.Render/TextureRectangle 2.0"]
+ exportMetaObjectRevisions: [200]
+ Property {
+ name: "textureImages"
+ revision: 200
+ type: "Qt3DRender::QAbstractTextureImage"
+ isList: true
+ isReadonly: true
+ }
}
- Component { name: "Qt3DRender::QTextureRectangle"; prototype: "Qt3DRender::QAbstractTexture" }
Component {
name: "Qt3DRender::QTextureWrapMode"
prototype: "QObject"
@@ -3164,7 +3797,10 @@ Module {
}
Component {
name: "Qt3DRender::QViewport"
+ defaultProperty: "data"
prototype: "Qt3DRender::QFrameGraphNode"
+ exports: ["Qt3D.Render/Viewport 2.0", "Qt3D.Render/Viewport 2.9"]
+ exportMetaObjectRevisions: [200, 9]
Property { name: "normalizedRect"; type: "QRectF" }
Property { name: "gamma"; revision: 9; type: "float" }
Signal {
@@ -3203,96 +3839,36 @@ Module {
}
}
Component {
- name: "Qt3DRender::Render::Quick::Quick3DEffect"
- prototype: "Qt3DRender::QEffect"
- exports: ["Qt3D.Render/Effect 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "techniques"; type: "Qt3DRender::QTechnique"; isList: true; isReadonly: true }
- Property { name: "parameters"; type: "Qt3DRender::QParameter"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DRender::Render::Quick::Quick3DGeometry"
- defaultProperty: "attributes"
- prototype: "Qt3DRender::QGeometry"
- exports: ["Qt3D.Render/Geometry 2.0"]
- exportMetaObjectRevisions: [0]
- 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"
- prototype: "Qt3DRender::QMaterial"
- exports: ["Qt3D.Render/Material 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "parameters"; type: "Qt3DRender::QParameter"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DRender::Render::Quick::Quick3DMemoryBarrier"
- prototype: "Qt3DRender::QMemoryBarrier"
- exports: ["Qt3D.Render/MemoryBarrier 2.9"]
- exportMetaObjectRevisions: [0]
- Property { name: "waitFor"; type: "int" }
- }
- Component {
name: "Qt3DRender::Render::Quick::Quick3DParameter"
prototype: "Qt3DRender::QParameter"
exports: ["Qt3D.Render/Parameter 2.0"]
exportMetaObjectRevisions: [0]
}
Component {
- name: "Qt3DRender::Render::Quick::Quick3DRenderPass"
- prototype: "Qt3DRender::QRenderPass"
- exports: ["Qt3D.Render/RenderPass 2.0"]
+ name: "Qt3DRender::Render::Quick::Quick3DRayCaster"
+ prototype: "Qt3DRender::QRayCaster"
+ exports: ["Qt3D.Render/RayCaster 2.11"]
exportMetaObjectRevisions: [0]
- Property { name: "filterKeys"; type: "Qt3DRender::QFilterKey"; isList: true; isReadonly: true }
- Property {
- name: "renderStates"
- type: "Qt3DRender::QRenderState"
- isList: true
- isReadonly: true
+ Property { name: "hits"; type: "QJSValue"; isReadonly: true }
+ Property { name: "layers"; type: "Qt3DRender::QLayer"; isList: true; isReadonly: true }
+ Signal {
+ name: "hitsChanged"
+ Parameter { name: "hits"; type: "QJSValue" }
}
- Property { name: "parameters"; type: "Qt3DRender::QParameter"; isList: true; isReadonly: true }
}
Component {
- name: "Qt3DRender::Render::Quick::Quick3DRenderPassFilter"
- prototype: "Qt3DRender::QRenderPassFilter"
- exports: ["Qt3D.Render/RenderPassFilter 2.0"]
+ name: "Qt3DRender::Render::Quick::Quick3DScreenRayCaster"
+ prototype: "Qt3DRender::QScreenRayCaster"
+ exports: ["Qt3D.Render/ScreenRayCaster 2.11"]
exportMetaObjectRevisions: [0]
- Property { name: "matchAny"; type: "Qt3DRender::QFilterKey"; isList: true; isReadonly: true }
- Property { name: "parameters"; type: "Qt3DRender::QParameter"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DRender::Render::Quick::Quick3DRenderTargetOutput"
- prototype: "Qt3DRender::QRenderTarget"
- exports: ["Qt3D.Render/RenderTarget 2.0"]
- exportMetaObjectRevisions: [0]
- Property {
- name: "attachments"
- type: "Qt3DRender::QRenderTargetOutput"
- isList: true
- isReadonly: true
+ Property { name: "hits"; type: "QJSValue"; isReadonly: true }
+ Property { name: "layers"; type: "Qt3DRender::QLayer"; isList: true; isReadonly: true }
+ Signal {
+ name: "hitsChanged"
+ Parameter { name: "hits"; type: "QJSValue" }
}
}
Component {
- name: "Qt3DRender::Render::Quick::Quick3DRenderTargetSelector"
- prototype: "Qt3DRender::QRenderTargetSelector"
- exports: ["Qt3D.Render/RenderTargetSelector 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "drawBuffers"; type: "QVariantList" }
- }
- Component {
- name: "Qt3DRender::Render::Quick::Quick3DScene"
- prototype: "Qt3DRender::QSceneLoader"
- exports: ["Qt3D.Render/SceneLoader 2.0"]
- exportMetaObjectRevisions: [0]
- }
- Component {
name: "Qt3DRender::Render::Quick::Quick3DShaderData"
prototype: "Qt3DRender::QShaderData"
exports: ["Qt3D.Render/ShaderData 2.0"]
@@ -3306,65 +3882,4 @@ Module {
exportMetaObjectRevisions: [0]
Property { name: "values"; type: "Qt3DRender::QShaderData"; isList: true; isReadonly: true }
}
- Component {
- name: "Qt3DRender::Render::Quick::Quick3DStateSet"
- prototype: "Qt3DRender::QRenderStateSet"
- exports: ["Qt3D.Render/RenderStateSet 2.0"]
- exportMetaObjectRevisions: [0]
- Property {
- name: "renderStates"
- type: "Qt3DRender::QRenderState"
- isList: true
- isReadonly: true
- }
- }
- Component {
- name: "Qt3DRender::Render::Quick::Quick3DTechnique"
- prototype: "Qt3DRender::QTechnique"
- exports: ["Qt3D.Render/Technique 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "filterKeys"; type: "Qt3DRender::QFilterKey"; isList: true; isReadonly: true }
- Property { name: "renderPasses"; type: "Qt3DRender::QRenderPass"; isList: true; isReadonly: true }
- Property { name: "parameters"; type: "Qt3DRender::QParameter"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DRender::Render::Quick::Quick3DTechniqueFilter"
- prototype: "Qt3DRender::QTechniqueFilter"
- exports: ["Qt3D.Render/TechniqueFilter 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "matchAll"; type: "Qt3DRender::QFilterKey"; isList: true; isReadonly: true }
- Property { name: "parameters"; type: "Qt3DRender::QParameter"; isList: true; isReadonly: true }
- }
- Component {
- name: "Qt3DRender::Render::Quick::Quick3DTextureExtension"
- defaultProperty: "textureImages"
- prototype: "Qt3DRender::QTextureRectangle"
- exports: [
- "Qt3D.Render/Texture1D 2.0",
- "Qt3D.Render/Texture1DArray 2.0",
- "Qt3D.Render/Texture2D 2.0",
- "Qt3D.Render/Texture2DArray 2.0",
- "Qt3D.Render/Texture2DMultisample 2.0",
- "Qt3D.Render/Texture2DMultisampleArray 2.0",
- "Qt3D.Render/Texture3D 2.0",
- "Qt3D.Render/TextureBuffer 2.0",
- "Qt3D.Render/TextureCubeMap 2.0",
- "Qt3D.Render/TextureCubeMapArray 2.0",
- "Qt3D.Render/TextureLoader 2.0",
- "Qt3D.Render/TextureRectangle 2.0"
- ]
- exportMetaObjectRevisions: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- Property {
- name: "textureImages"
- type: "Qt3DRender::QAbstractTextureImage"
- isList: true
- isReadonly: true
- }
- }
- Component {
- name: "Qt3DRender::Render::Quick::Quick3DViewport"
- prototype: "Qt3DRender::QViewport"
- exports: ["Qt3D.Render/Viewport 2.0"]
- exportMetaObjectRevisions: [0]
- }
}
diff --git a/src/quick3d/imports/scene2d/dependencies.json b/src/quick3d/imports/scene2d/dependencies.json
new file mode 100644
index 000000000..495ebb5c2
--- /dev/null
+++ b/src/quick3d/imports/scene2d/dependencies.json
@@ -0,0 +1,12 @@
+[
+ {
+ "name": "Qt3D.Core",
+ "type": "module",
+ "version": "2.0"
+ },
+ {
+ "name": "Qt3D.Render",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/quick3d/imports/scene2d/plugins.qmltypes b/src/quick3d/imports/scene2d/plugins.qmltypes
index a26dcbec0..783dff7a3 100644
--- a/src/quick3d/imports/scene2d/plugins.qmltypes
+++ b/src/quick3d/imports/scene2d/plugins.qmltypes
@@ -4,54 +4,16 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -output plugins.qmltypes QtQuick.Scene2D 2.9'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Scene2D 2.12'
Module {
- dependencies: []
- Component {
- name: "Qt3DCore::QNode"
- prototype: "QObject"
- Enum {
- name: "PropertyTrackingMode"
- values: {
- "TrackFinalValues": 0,
- "DontTrackValues": 1,
- "TrackAllValues": 2
- }
- }
- Property { name: "parent"; type: "Qt3DCore::QNode"; isPointer: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "defaultPropertyTrackingMode"; revision: 9; type: "PropertyTrackingMode" }
- Signal {
- name: "parentChanged"
- Parameter { name: "parent"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "enabledChanged"
- Parameter { name: "enabled"; type: "bool" }
- }
- Signal {
- name: "defaultPropertyTrackingModeChanged"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
- }
- Signal { name: "nodeDestroyed" }
- Method {
- name: "setParent"
- Parameter { name: "parent"; type: "QNode"; isPointer: true }
- }
- Method {
- name: "setEnabled"
- Parameter { name: "isEnabled"; type: "bool" }
- }
- Method {
- name: "setDefaultPropertyTrackingMode"
- Parameter { name: "mode"; type: "PropertyTrackingMode" }
- }
- }
+ dependencies: ["Qt3D.Core 2.0", "Qt3D.Render 2.0"]
Component {
name: "Qt3DRender::Quick::QScene2D"
defaultProperty: "item"
prototype: "Qt3DCore::QNode"
+ exports: ["QtQuick.Scene2D/Scene2D 2.9"]
+ exportMetaObjectRevisions: [209]
Enum {
name: "RenderPolicy"
values: {
@@ -60,24 +22,14 @@ Module {
}
}
Property { name: "output"; type: "Qt3DRender::QRenderTargetOutput"; isPointer: true }
- Property { name: "source"; type: "QUrl" }
Property { name: "renderPolicy"; type: "QScene2D::RenderPolicy" }
- Property { name: "loaded"; type: "bool"; isReadonly: true }
Property { name: "item"; type: "QQuickItem"; isPointer: true }
- Property { name: "grabMouse"; type: "bool" }
+ Property { name: "mouseEnabled"; type: "bool" }
Signal {
name: "outputChanged"
Parameter { name: "output"; type: "Qt3DRender::QRenderTargetOutput"; isPointer: true }
}
Signal {
- name: "sourceChanged"
- Parameter { name: "url"; type: "QUrl" }
- }
- Signal {
- name: "loadedChanged"
- Parameter { name: "loaded"; type: "bool" }
- }
- Signal {
name: "renderPolicyChanged"
Parameter { name: "policy"; type: "QScene2D::RenderPolicy" }
}
@@ -86,18 +38,14 @@ Module {
Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
}
Signal {
- name: "grabMouseChanged"
- Parameter { name: "grab"; type: "bool" }
+ name: "mouseEnabledChanged"
+ Parameter { name: "enabled"; type: "bool" }
}
Method {
name: "setOutput"
Parameter { name: "output"; type: "Qt3DRender::QRenderTargetOutput"; isPointer: true }
}
Method {
- name: "setSource"
- Parameter { name: "url"; type: "QUrl" }
- }
- Method {
name: "setRenderPolicy"
Parameter { name: "policy"; type: "QScene2D::RenderPolicy" }
}
@@ -106,16 +54,15 @@ Module {
Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
}
Method {
- name: "setGrabMouseEnabled"
- Parameter { name: "grab"; type: "bool" }
+ name: "setMouseEnabled"
+ Parameter { name: "enabled"; type: "bool" }
+ }
+ Property {
+ name: "entities"
+ revision: 209
+ type: "Qt3DCore::QEntity"
+ isList: true
+ isReadonly: true
}
- }
- Component {
- name: "Qt3DRender::Render::Quick::QQuick3DScene2D"
- defaultProperty: "item"
- prototype: "Qt3DRender::Quick::QScene2D"
- exports: ["QtQuick.Scene2D/Scene2D 2.9"]
- exportMetaObjectRevisions: [0]
- Property { name: "entities"; type: "Qt3DCore::QEntity"; isList: true; isReadonly: true }
}
}
diff --git a/src/quick3d/imports/scene3d/dependencies.json b/src/quick3d/imports/scene3d/dependencies.json
new file mode 100644
index 000000000..550c12f00
--- /dev/null
+++ b/src/quick3d/imports/scene3d/dependencies.json
@@ -0,0 +1,12 @@
+[
+ {
+ "name": "QtQuick",
+ "type": "module",
+ "version": "2.0"
+ },
+ {
+ "name": "Qt3D.Core",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/quick3d/imports/scene3d/plugins.qmltypes b/src/quick3d/imports/scene3d/plugins.qmltypes
index 46df37093..65526a450 100644
--- a/src/quick3d/imports/scene3d/plugins.qmltypes
+++ b/src/quick3d/imports/scene3d/plugins.qmltypes
@@ -4,10 +4,10 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Scene3D 2.0'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Scene3D 2.12'
Module {
- dependencies: ["QtQuick 2.7"]
+ dependencies: ["Qt3D.Core 2.0", "QtQuick 2.0"]
Component {
name: "Qt3DRender::Scene3DItem"
defaultProperty: "entity"
@@ -46,5 +46,10 @@ Module {
name: "setHoverEnabled"
Parameter { name: "enabled"; type: "bool" }
}
+ Method {
+ name: "setItemAreaAndDevicePixelRatio"
+ Parameter { name: "area"; type: "QSize" }
+ Parameter { name: "devicePixelRatio"; type: "double" }
+ }
}
}
diff --git a/src/quick3d/imports/scene3d/scene3ditem.cpp b/src/quick3d/imports/scene3d/scene3ditem.cpp
index 2f791b202..ddb25777c 100644
--- a/src/quick3d/imports/scene3d/scene3ditem.cpp
+++ b/src/quick3d/imports/scene3d/scene3ditem.cpp
@@ -372,9 +372,6 @@ QSGNode *Scene3DItem::updatePaintNode(QSGNode *node, QQuickItem::UpdatePaintNode
m_renderer->setCleanerHelper(m_rendererCleaner);
}
- // The main thread is blocked, it is now time to sync data between the renderer and the item.
- m_renderer->synchronize();
-
Scene3DSGNode *fboNode = static_cast<Scene3DSGNode *>(node);
if (fboNode == nullptr) {
fboNode = new Scene3DSGNode();
diff --git a/src/quick3d/imports/scene3d/scene3drenderer.cpp b/src/quick3d/imports/scene3d/scene3drenderer.cpp
index b3cac0dcd..b96fc516d 100644
--- a/src/quick3d/imports/scene3d/scene3drenderer.cpp
+++ b/src/quick3d/imports/scene3d/scene3drenderer.cpp
@@ -138,11 +138,13 @@ Scene3DRenderer::Scene3DRenderer(Scene3DItem *item, Qt3DCore::QAspectEngine *asp
, m_lastMultisample(false)
, m_needsShutdown(true)
, m_blocking(false)
+ , m_forceRecreate(false)
{
Q_CHECK_PTR(m_item);
Q_CHECK_PTR(m_item->window());
m_window = m_item->window();
+ QObject::connect(m_item->window(), &QQuickWindow::afterSynchronizing, this, &Scene3DRenderer::synchronize, Qt::DirectConnection);
QObject::connect(m_item->window(), &QQuickWindow::beforeRendering, this, &Scene3DRenderer::render, Qt::DirectConnection);
QObject::connect(m_item->window(), &QQuickWindow::sceneGraphInvalidated, this, &Scene3DRenderer::onSceneGraphInvalidated, Qt::DirectConnection);
// So that we can schedule the cleanup
@@ -247,7 +249,30 @@ void Scene3DRenderer::onWindowChanged(QQuickWindow *w)
void Scene3DRenderer::synchronize()
{
- m_multisample = m_item->multisample();
+ if (m_item && m_window) {
+ m_multisample = m_item->multisample();
+
+ if (m_aspectEngine->rootEntity() != m_item->entity()) {
+ scheduleRootEntityChange();
+ }
+
+ const QSize boundingRectSize = m_item->boundingRect().size().toSize();
+ const QSize currentSize = boundingRectSize * m_window->effectiveDevicePixelRatio();
+ const bool sizeHasChanged = currentSize != m_lastSize;
+ const bool multisampleHasChanged = m_multisample != m_lastMultisample;
+ m_forceRecreate = sizeHasChanged || multisampleHasChanged;
+
+ if (sizeHasChanged) {
+ static const QMetaMethod setItemAreaAndDevicePixelRatio = setItemAreaAndDevicePixelRatioMethod();
+ setItemAreaAndDevicePixelRatio.invoke(m_item, Qt::QueuedConnection, Q_ARG(QSize, boundingRectSize),
+ Q_ARG(qreal, m_window->effectiveDevicePixelRatio()));
+ }
+
+ // Store the current size as a comparison
+ // point for the next frame
+ m_lastSize = currentSize;
+ m_lastMultisample = m_multisample;
+ }
}
void Scene3DRenderer::setSGNode(Scene3DSGNode *node)
@@ -261,51 +286,30 @@ void Scene3DRenderer::render()
{
QMutexLocker l(&m_windowMutex);
// Lock to ensure the window doesn't change while we are rendering
- if (!m_item || !m_window)
+ if (!m_window)
return;
- if (m_aspectEngine->rootEntity() != m_item->entity())
- scheduleRootEntityChange();
-
ContextSaver saver;
// The OpenGL state may be dirty from the previous QtQuick nodes, so reset
// it here to give Qt3D the clean state it expects
m_window->resetOpenGLState();
- const QSize boundingRectSize = m_item->boundingRect().size().toSize();
- const QSize currentSize = boundingRectSize * m_window->effectiveDevicePixelRatio();
- const bool sizeHasChanged = currentSize != m_lastSize;
- const bool multisampleHasChanged = m_multisample != m_lastMultisample;
- const bool forceRecreate = sizeHasChanged || multisampleHasChanged;
-
- if (sizeHasChanged) {
- // We are in the QSGRenderThread (doing a direct call would result in a race)
- static const QMetaMethod setItemAreaAndDevicePixelRatio = setItemAreaAndDevicePixelRatioMethod();
- setItemAreaAndDevicePixelRatio.invoke(m_item, Qt::QueuedConnection, Q_ARG(QSize, boundingRectSize),
- Q_ARG(qreal, m_window->effectiveDevicePixelRatio()));
- }
-
// Rebuild FBO and textures if never created or a resize has occurred
- if ((m_multisampledFBO.isNull() || forceRecreate) && m_multisample) {
- m_multisampledFBO.reset(createMultisampledFramebufferObject(currentSize));
+ if ((m_multisampledFBO.isNull() || m_forceRecreate) && m_multisample) {
+ m_multisampledFBO.reset(createMultisampledFramebufferObject(m_lastSize));
if (m_multisampledFBO->format().samples() == 0 || !QOpenGLFramebufferObject::hasOpenGLFramebufferBlit()) {
m_multisample = false;
m_multisampledFBO.reset(nullptr);
}
}
- if (m_finalFBO.isNull() || forceRecreate) {
- m_finalFBO.reset(createFramebufferObject(currentSize));
+ if (m_finalFBO.isNull() || m_forceRecreate) {
+ m_finalFBO.reset(createFramebufferObject(m_lastSize));
m_texture.reset(m_window->createTextureFromId(m_finalFBO->texture(), m_finalFBO->size(), QQuickWindow::TextureHasAlphaChannel));
m_node->setTexture(m_texture.data());
}
- // Store the current size as a comparison
- // point for the next frame
- m_lastSize = currentSize;
- m_lastMultisample = m_multisample;
-
// Bind FBO
if (m_multisample) //Only try to use MSAA when available
m_multisampledFBO->bind();
diff --git a/src/quick3d/imports/scene3d/scene3drenderer_p.h b/src/quick3d/imports/scene3d/scene3drenderer_p.h
index eb2b930ef..e28ecbe6e 100644
--- a/src/quick3d/imports/scene3d/scene3drenderer_p.h
+++ b/src/quick3d/imports/scene3d/scene3drenderer_p.h
@@ -110,6 +110,7 @@ private:
bool m_lastMultisample;
bool m_needsShutdown;
bool m_blocking;
+ bool m_forceRecreate;
friend class Scene3DCleaner;
};
diff --git a/src/render/materialsystem/prototypes/default.json b/src/render/materialsystem/prototypes/default.json
index 7f196c8df..63c39164c 100644
--- a/src/render/materialsystem/prototypes/default.json
+++ b/src/render/materialsystem/prototypes/default.json
@@ -463,6 +463,15 @@
"rules": [
{
"format": {
+ "api": "OpenGLES",
+ "major": 3,
+ "minor": 0
+ },
+ "substitution": "highp vec4 $outputColor = metalRoughFunction($baseColor, $metalness, $roughness, $ambientOcclusion, $worldPosition, $worldView, $worldNormal);",
+ "headerSnippets": [ "#pragma include :/shaders/es3/metalrough.inc.frag" ]
+ },
+ {
+ "format": {
"api": "OpenGLCoreProfile",
"major": 3,
"minor": 1
diff --git a/src/render/renderers/opengl/graphicshelpers/graphicshelperes3.cpp b/src/render/renderers/opengl/graphicshelpers/graphicshelperes3.cpp
index 29ecf9308..34c1e7448 100644
--- a/src/render/renderers/opengl/graphicshelpers/graphicshelperes3.cpp
+++ b/src/render/renderers/opengl/graphicshelpers/graphicshelperes3.cpp
@@ -234,6 +234,14 @@ void GraphicsHelperES3::vertexAttributePointer(GLenum shaderDataType,
}
}
+void GraphicsHelperES3::drawArraysInstanced(GLenum primitiveType, GLint first, GLsizei count, GLsizei instances)
+{
+ m_extraFuncs->glDrawArraysInstanced(primitiveType,
+ first,
+ count,
+ instances);
+}
+
void GraphicsHelperES3::readBuffer(GLenum mode)
{
m_extraFuncs->glReadBuffer(mode);
diff --git a/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp b/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp
index 9dce08e4f..56da249f2 100644
--- a/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp
+++ b/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp
@@ -117,6 +117,19 @@ void GraphicsHelperES3_2::setVerticesPerPatch(GLint verticesPerPatch)
m_extraFuncs->glPatchParameteri(GL_PATCH_VERTICES, verticesPerPatch);
}
+void GraphicsHelperES3_2::drawElementsInstancedBaseVertexBaseInstance(GLenum primitiveType, GLsizei primitiveCount, GLint indexType, void *indices, GLsizei instances, GLint baseVertex, GLint baseInstance)
+{
+ if (baseInstance != 0)
+ qWarning() << "glDrawElementsInstancedBaseVertexBaseInstance is not supported with OpenGL ES 2";
+
+ m_extraFuncs->glDrawElementsInstancedBaseVertex(primitiveType,
+ primitiveCount,
+ indexType,
+ indices,
+ instances,
+ baseVertex);
+}
+
} // namespace Render
} // namespace Qt3DRender
diff --git a/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2_p.h b/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2_p.h
index ed71b1e3e..259864379 100644
--- a/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2_p.h
+++ b/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_2_p.h
@@ -70,6 +70,7 @@ public:
void bindFrameBufferAttachment(QOpenGLTexture *texture, const Attachment &attachment) override;
bool frameBufferNeedsRenderBuffer(const Attachment &attachment) override;
void setVerticesPerPatch(GLint verticesPerPatch) override;
+ void drawElementsInstancedBaseVertexBaseInstance(GLenum primitiveType, GLsizei primitiveCount, GLint indexType, void *indices, GLsizei instances, GLint baseVertex = 0, GLint baseInstance = 0) override;
};
} // namespace Render
diff --git a/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_p.h b/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_p.h
index 142b7cadd..d4467cf7f 100644
--- a/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_p.h
+++ b/src/render/renderers/opengl/graphicshelpers/graphicshelperes3_p.h
@@ -74,6 +74,7 @@ public:
void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) override;
void buildUniformBuffer(const QVariant &v, const ShaderUniform &description, QByteArray &buffer) override;
void drawBuffers(GLsizei n, const int *bufs) override;
+ void drawArraysInstanced(GLenum primitiveType, GLint first, GLsizei count, GLsizei instances) override;
void drawElementsInstancedBaseVertexBaseInstance(GLenum primitiveType, GLsizei primitiveCount, GLint indexType, void *indices, GLsizei instances, GLint baseVertex = 0, GLint baseInstance = 0) override;
void readBuffer(GLenum mode) override;
void drawBuffer(GLenum mode) override;
diff --git a/src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp b/src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp
index 0c4fd8c9d..f5d0a64f5 100644
--- a/src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp
+++ b/src/render/renderers/opengl/renderer/openglvertexarrayobject.cpp
@@ -108,6 +108,11 @@ void OpenGLVertexArrayObject::create(SubmissionContext *ctx, const VAOIdentifier
m_owners = key;
}
+VAOIdentifier OpenGLVertexArrayObject::key() const
+{
+ return m_owners;
+}
+
// called from Render thread
void OpenGLVertexArrayObject::destroy()
{
diff --git a/src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h b/src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h
index eee837221..4896df9bf 100644
--- a/src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h
+++ b/src/render/renderers/opengl/renderer/openglvertexarrayobject_p.h
@@ -73,6 +73,7 @@ public:
void release();
void create(SubmissionContext *ctx, const VAOIdentifier &key);
+ VAOIdentifier key() const;
void destroy();
void cleanup();
diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp
index e08c953f9..8f5205c34 100644
--- a/src/render/renderers/opengl/renderer/renderer.cpp
+++ b/src/render/renderers/opengl/renderer/renderer.cpp
@@ -2149,7 +2149,8 @@ void Renderer::cleanGraphicsResources()
OpenGLVertexArrayObject *vao = m_nodesManager->vaoManager()->data(vaoHandle);
if (vao) {
vao->destroy();
- m_nodesManager->vaoManager()->release(vaoHandle);
+ // We remove VAO from manager using its VAOIdentifier
+ m_nodesManager->vaoManager()->releaseResource(vao->key());
}
}
}
diff --git a/src/render/renderers/opengl/textures/gltexture.cpp b/src/render/renderers/opengl/textures/gltexture.cpp
index 5c565470c..2fe0e99c1 100644
--- a/src/render/renderers/opengl/textures/gltexture.cpp
+++ b/src/render/renderers/opengl/textures/gltexture.cpp
@@ -223,6 +223,10 @@ GLTexture::TextureUpdateInfo GLTexture::createOrUpdateGLTexture()
delete m_gl;
m_gl = nullptr;
textureInfo.wasUpdated = true;
+ // If we are destroyed because of some property change but still our content data
+ // make sure we are marked for upload
+ if (m_textureData || !m_imageData.empty())
+ needUpload = true;
}
m_properties.status = QAbstractTexture::Ready;