diff options
author | Sean Harmer <sh@theharmers.co.uk> | 2018-10-11 09:55:11 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2018-10-11 10:52:41 +0000 |
commit | b4e52d6a8deef3d268ea97cb5e4ea14948117aad (patch) | |
tree | 11245e012864cca826b904d00725af60e7184c74 /src | |
parent | 12c76991b8ed7378f6d2645dec8dfdd5879562b1 (diff) | |
parent | 9c40f3e4269fb0a21f3555fd6a5e99e8b4ddf1d9 (diff) |
Merge "Merge branch '5.12' into dev" into refs/staging/dev
Diffstat (limited to 'src')
41 files changed, 2231 insertions, 937 deletions
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; |