diff options
Diffstat (limited to 'src/quick3d/imports')
54 files changed, 2749 insertions, 2513 deletions
diff --git a/src/quick3d/imports/animation/plugins.qmltypes b/src/quick3d/imports/animation/plugins.qmltypes new file mode 100644 index 000000000..08879ee52 --- /dev/null +++ b/src/quick3d/imports/animation/plugins.qmltypes @@ -0,0 +1,670 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable Qt3D.Animation 2.9' + +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 + } + } + Component { + name: "Qt3DAnimation::QAbstractAnimation" + prototype: "QObject" + exports: ["Qt3D.Animation/AbstractAnimation 2.9"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "AnimationType" + values: { + "KeyframeAnimation": 1, + "MorphingAnimation": 2, + "VertexBlendAnimation": 3 + } + } + Property { name: "animationName"; type: "string" } + Property { name: "animationType"; type: "QAbstractAnimation::AnimationType"; isReadonly: true } + Property { name: "position"; type: "float" } + Property { name: "duration"; type: "float"; isReadonly: true } + Signal { + name: "animationNameChanged" + Parameter { name: "name"; type: "string" } + } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "float" } + } + Signal { + name: "durationChanged" + Parameter { name: "duration"; type: "float" } + } + Method { + name: "setAnimationName" + Parameter { name: "name"; type: "string" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "float" } + } + } + Component { + name: "Qt3DAnimation::QAbstractAnimationClip" + prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Animation/AbstractAnimationClip 2.9"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "duration"; type: "float"; isReadonly: true } + Signal { + name: "durationChanged" + Parameter { name: "duration"; type: "float" } + } + } + Component { + name: "Qt3DAnimation::QAbstractClipAnimator" + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Animation/AbstractClipAnimator 2.9"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Loops" + values: { + "Infinite": -1 + } + } + Property { name: "running"; type: "bool" } + Property { name: "loops"; type: "int" } + Property { name: "channelMapper"; type: "Qt3DAnimation::QChannelMapper"; isPointer: true } + Signal { + name: "runningChanged" + Parameter { name: "running"; type: "bool" } + } + Signal { + name: "channelMapperChanged" + Parameter { name: "channelMapper"; type: "Qt3DAnimation::QChannelMapper"; isPointer: true } + } + Signal { + name: "loopCountChanged" + Parameter { name: "loops"; type: "int" } + } + Method { + name: "setRunning" + Parameter { name: "running"; type: "bool" } + } + Method { + name: "setChannelMapper" + Parameter { name: "channelMapper"; type: "Qt3DAnimation::QChannelMapper"; isPointer: true } + } + Method { + name: "setLoopCount" + Parameter { name: "loops"; type: "int" } + } + } + Component { + name: "Qt3DAnimation::QAbstractClipBlendNode" + prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Animation/AbstractClipBlendNode 2.9"] + isCreatable: false + exportMetaObjectRevisions: [0] + } + Component { + name: "Qt3DAnimation::QAdditiveClipBlend" + prototype: "Qt3DAnimation::QAbstractClipBlendNode" + exports: ["Qt3D.Animation/AdditiveClipBlend 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "baseClip"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + Property { + name: "additiveClip" + type: "Qt3DAnimation::QAbstractClipBlendNode" + isPointer: true + } + Property { name: "additiveFactor"; type: "float" } + Signal { + name: "additiveFactorChanged" + Parameter { name: "additiveFactor"; type: "float" } + } + Signal { + name: "baseClipChanged" + Parameter { name: "baseClip"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + } + Signal { + name: "additiveClipChanged" + Parameter { + name: "additiveClip" + type: "Qt3DAnimation::QAbstractClipBlendNode" + isPointer: true + } + } + Method { + name: "setAdditiveFactor" + Parameter { name: "additiveFactor"; type: "float" } + } + Method { + name: "setBaseClip" + Parameter { name: "baseClip"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + } + Method { + name: "setAdditiveClip" + Parameter { + name: "additiveClip" + type: "Qt3DAnimation::QAbstractClipBlendNode" + isPointer: true + } + } + } + Component { + name: "Qt3DAnimation::QAnimationClip" + prototype: "Qt3DAnimation::QAbstractAnimationClip" + exports: ["Qt3D.Animation/AnimationClip 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "clipData"; type: "Qt3DAnimation::QAnimationClipData" } + Signal { + name: "clipDataChanged" + Parameter { name: "clipData"; type: "Qt3DAnimation::QAnimationClipData" } + } + Method { + name: "setClipData" + Parameter { name: "clipData"; type: "Qt3DAnimation::QAnimationClipData" } + } + } + Component { + name: "Qt3DAnimation::QAnimationClipLoader" + prototype: "Qt3DAnimation::QAbstractAnimationClip" + exports: ["Qt3D.Animation/AnimationClipLoader 2.9"] + exportMetaObjectRevisions: [0] + Enum { + name: "Status" + values: { + "NotReady": 0, + "Ready": 1, + "Error": 2 + } + } + Property { name: "source"; type: "QUrl" } + Property { name: "status"; type: "Status"; isReadonly: true } + Signal { + name: "sourceChanged" + Parameter { name: "source"; type: "QUrl" } + } + Signal { + name: "statusChanged" + Parameter { name: "status"; type: "Status" } + } + Method { + name: "setSource" + Parameter { name: "source"; type: "QUrl" } + } + } + Component { + name: "Qt3DAnimation::QAnimationController" + prototype: "QObject" + Property { name: "activeAnimationGroup"; type: "int" } + Property { name: "position"; type: "float" } + Property { name: "positionScale"; type: "float" } + Property { name: "positionOffset"; type: "float" } + Property { name: "entity"; type: "Qt3DCore::QEntity"; isPointer: true } + Property { name: "recursive"; type: "bool" } + Signal { + name: "activeAnimationGroupChanged" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "float" } + } + Signal { + name: "positionScaleChanged" + Parameter { name: "scale"; type: "float" } + } + Signal { + name: "positionOffsetChanged" + Parameter { name: "offset"; type: "float" } + } + Signal { + name: "entityChanged" + Parameter { name: "entity"; type: "Qt3DCore::QEntity"; isPointer: true } + } + Signal { + name: "recursiveChanged" + Parameter { name: "recursive"; type: "bool" } + } + Method { + name: "setActiveAnimationGroup" + Parameter { name: "index"; type: "int" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "float" } + } + Method { + name: "setPositionScale" + Parameter { name: "scale"; type: "float" } + } + Method { + name: "setPositionOffset" + Parameter { name: "offset"; type: "float" } + } + Method { + name: "setEntity" + Parameter { name: "entity"; type: "Qt3DCore::QEntity"; isPointer: true } + } + Method { + name: "setRecursive" + Parameter { name: "recursive"; type: "bool" } + } + Method { + name: "getAnimationIndex" + type: "int" + Parameter { name: "name"; type: "string" } + } + Method { + name: "getGroup" + type: "Qt3DAnimation::QAnimationGroup*" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "Qt3DAnimation::QAnimationGroup" + prototype: "QObject" + Property { name: "name"; type: "string" } + Property { name: "position"; type: "float" } + Property { name: "duration"; type: "float"; isReadonly: true } + Signal { + name: "nameChanged" + Parameter { name: "name"; type: "string" } + } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "float" } + } + Signal { + name: "durationChanged" + Parameter { name: "duration"; type: "float" } + } + Method { + name: "setName" + Parameter { name: "name"; type: "string" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "float" } + } + } + Component { + name: "Qt3DAnimation::QBlendedClipAnimator" + prototype: "Qt3DAnimation::QAbstractClipAnimator" + exports: ["Qt3D.Animation/BlendedClipAnimator 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "blendTree"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + Signal { + name: "blendTreeChanged" + Parameter { name: "blendTree"; type: "QAbstractClipBlendNode"; isPointer: true } + } + Method { + name: "setBlendTree" + Parameter { name: "blendTree"; type: "QAbstractClipBlendNode"; isPointer: true } + } + } + Component { name: "Qt3DAnimation::QChannelMapper"; prototype: "Qt3DCore::QNode" } + Component { + name: "Qt3DAnimation::QChannelMapping" + prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Animation/ChannelMapping 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "channelName"; type: "string" } + Property { name: "target"; type: "Qt3DCore::QNode"; isPointer: true } + Property { name: "property"; type: "string" } + Signal { + name: "channelNameChanged" + Parameter { name: "channelName"; type: "string" } + } + Signal { + name: "targetChanged" + Parameter { name: "target"; type: "Qt3DCore::QNode"; isPointer: true } + } + Signal { + name: "propertyChanged" + Parameter { name: "property"; type: "string" } + } + Method { + name: "setChannelName" + Parameter { name: "channelName"; type: "string" } + } + Method { + name: "setTarget" + Parameter { name: "target"; type: "Qt3DCore::QNode"; isPointer: true } + } + Method { + name: "setProperty" + Parameter { name: "property"; type: "string" } + } + } + Component { + name: "Qt3DAnimation::QClipAnimator" + prototype: "Qt3DAnimation::QAbstractClipAnimator" + exports: ["Qt3D.Animation/ClipAnimator 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "clip"; type: "Qt3DAnimation::QAbstractAnimationClip"; isPointer: true } + Signal { + name: "clipChanged" + Parameter { name: "clip"; type: "Qt3DAnimation::QAbstractAnimationClip"; isPointer: true } + } + Method { + name: "setClip" + Parameter { name: "clip"; type: "Qt3DAnimation::QAbstractAnimationClip"; isPointer: true } + } + } + Component { + name: "Qt3DAnimation::QClipBlendValue" + prototype: "Qt3DAnimation::QAbstractClipBlendNode" + exports: ["Qt3D.Animation/ClipBlendValue 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "clip"; type: "Qt3DAnimation::QAbstractAnimationClip"; isPointer: true } + Signal { + name: "clipChanged" + Parameter { name: "clip"; type: "Qt3DAnimation::QAbstractAnimationClip"; isPointer: true } + } + Method { + name: "setClip" + Parameter { name: "clip"; type: "Qt3DAnimation::QAbstractAnimationClip"; isPointer: true } + } + } + Component { + name: "Qt3DAnimation::QKeyframeAnimation" + prototype: "Qt3DAnimation::QAbstractAnimation" + Enum { + name: "RepeatMode" + values: { + "None": 0, + "Constant": 1, + "Repeat": 2 + } + } + Property { name: "framePositions"; type: "QVector<float>" } + 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" } + Signal { + name: "framePositionsChanged" + Parameter { name: "positions"; type: "QVector<float>" } + } + Signal { + name: "targetChanged" + Parameter { name: "target"; type: "Qt3DCore::QTransform"; isPointer: true } + } + Signal { + name: "easingChanged" + Parameter { name: "easing"; type: "QEasingCurve" } + } + Signal { + name: "targetNameChanged" + Parameter { name: "name"; type: "string" } + } + Signal { + name: "startModeChanged" + Parameter { name: "startMode"; type: "QKeyframeAnimation::RepeatMode" } + } + Signal { + name: "endModeChanged" + Parameter { name: "endMode"; type: "QKeyframeAnimation::RepeatMode" } + } + Method { + name: "setFramePositions" + Parameter { name: "positions"; type: "QVector<float>" } + } + Method { + name: "setTarget" + Parameter { name: "target"; type: "Qt3DCore::QTransform"; isPointer: true } + } + Method { + name: "setEasing" + Parameter { name: "easing"; type: "QEasingCurve" } + } + Method { + name: "setTargetName" + Parameter { name: "name"; type: "string" } + } + Method { + name: "setStartMode" + Parameter { name: "mode"; type: "RepeatMode" } + } + Method { + name: "setEndMode" + Parameter { name: "mode"; type: "RepeatMode" } + } + } + Component { + name: "Qt3DAnimation::QLerpClipBlend" + prototype: "Qt3DAnimation::QAbstractClipBlendNode" + exports: ["Qt3D.Animation/LerpClipBlend 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "startClip"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + Property { name: "endClip"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + Property { name: "blendFactor"; type: "float" } + Signal { + name: "blendFactorChanged" + Parameter { name: "blendFactor"; type: "float" } + } + Signal { + name: "startClipChanged" + Parameter { name: "startClip"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + } + Signal { + name: "endClipChanged" + Parameter { name: "endClip"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + } + Method { + name: "setBlendFactor" + Parameter { name: "blendFactor"; type: "float" } + } + Method { + name: "setStartClip" + Parameter { name: "startClip"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + } + Method { + name: "setEndClip" + Parameter { name: "endClip"; type: "Qt3DAnimation::QAbstractClipBlendNode"; isPointer: true } + } + } + Component { + name: "Qt3DAnimation::QMorphTarget" + prototype: "QObject" + Property { name: "attributeNames"; type: "QStringList"; isReadonly: true } + Signal { + name: "attributeNamesChanged" + Parameter { name: "attributeNames"; type: "QStringList" } + } + Method { + name: "fromGeometry" + type: "QMorphTarget*" + Parameter { name: "geometry"; type: "Qt3DRender::QGeometry"; isPointer: true } + Parameter { name: "attributes"; type: "QStringList" } + } + } + Component { + name: "Qt3DAnimation::QMorphingAnimation" + prototype: "Qt3DAnimation::QAbstractAnimation" + Enum { + name: "Method" + values: { + "Normalized": 0, + "Relative": 1 + } + } + 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" } + Property { name: "method"; type: "QMorphingAnimation::Method" } + Property { name: "easing"; type: "QEasingCurve" } + Signal { + name: "targetPositionsChanged" + Parameter { name: "targetPositions"; type: "QVector<float>" } + } + Signal { + name: "interpolatorChanged" + Parameter { name: "interpolator"; type: "float" } + } + Signal { + name: "targetChanged" + Parameter { name: "target"; type: "Qt3DRender::QGeometryRenderer"; isPointer: true } + } + Signal { + name: "targetNameChanged" + Parameter { name: "name"; type: "string" } + } + Signal { + name: "methodChanged" + Parameter { name: "method"; type: "QMorphingAnimation::Method" } + } + Signal { + name: "easingChanged" + Parameter { name: "easing"; type: "QEasingCurve" } + } + Method { + name: "setTargetPositions" + Parameter { name: "targetPositions"; type: "QVector<float>" } + } + Method { + name: "setTarget" + Parameter { name: "target"; type: "Qt3DRender::QGeometryRenderer"; isPointer: true } + } + Method { + name: "setTargetName" + Parameter { name: "name"; type: "string" } + } + Method { + name: "setMethod" + Parameter { name: "method"; type: "QMorphingAnimation::Method" } + } + Method { + 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" + 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 } + } + 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" } + } + } +} diff --git a/src/quick3d/imports/animation/qt3dquick3danimationplugin.cpp b/src/quick3d/imports/animation/qt3dquick3danimationplugin.cpp index e0addd6b0..7feeaf84c 100644 --- a/src/quick3d/imports/animation/qt3dquick3danimationplugin.cpp +++ b/src/quick3d/imports/animation/qt3dquick3danimationplugin.cpp @@ -38,15 +38,33 @@ ****************************************************************************/ #include "qt3dquick3danimationplugin.h" +#include <Qt3DAnimation/qabstractclipanimator.h> +#include <Qt3DAnimation/qabstractanimationclip.h> #include <Qt3DAnimation/qanimationclip.h> +#include <Qt3DAnimation/qanimationcliploader.h> #include <Qt3DAnimation/qblendedclipanimator.h> #include <Qt3DAnimation/qclipanimator.h> -#include <Qt3DAnimation/qconductedclipanimator.h> #include <Qt3DAnimation/qchannelmapping.h> -#include <Qt3DAnimation/qlerpblend.h> +#include <Qt3DAnimation/qlerpclipblend.h> +#include <Qt3DAnimation/qadditiveclipblend.h> +#include <Qt3DAnimation/qclipblendvalue.h> + +#include <Qt3DAnimation/qkeyframeanimation.h> +#include <Qt3DAnimation/qanimationcontroller.h> +#include <Qt3DAnimation/qabstractanimation.h> +#include <Qt3DAnimation/qmorphinganimation.h> +#include <Qt3DAnimation/qanimationgroup.h> +#include <Qt3DAnimation/qmorphtarget.h> +#include <Qt3DAnimation/qvertexblendanimation.h> + #include <Qt3DQuickAnimation/private/qt3dquickanimation_global_p.h> #include <Qt3DQuickAnimation/private/quick3dchannelmapper_p.h> -#include <Qt3DQuickAnimation/private/quick3dabstractclipblendnode_p.h> +#include <Qt3DQuickAnimation/private/quick3dkeyframeanimation_p.h> +#include <Qt3DQuickAnimation/private/quick3danimationgroup_p.h> +#include <Qt3DQuickAnimation/private/quick3danimationcontroller_p.h> +#include <Qt3DQuickAnimation/private/quick3dmorphtarget_p.h> +#include <Qt3DQuickAnimation/private/quick3dmorphinganimation_p.h> +#include <Qt3DQuickAnimation/private/quick3dvertexblendanimation_p.h> QT_BEGIN_NAMESPACE @@ -55,16 +73,28 @@ void Qt3DQuick3DAnimationPlugin::registerTypes(const char *uri) Qt3DAnimation::Quick::Quick3DAnimation_initialize(); // @uri Qt3D.Animation - qmlRegisterType<Qt3DAnimation::QAnimationClip>(uri, 2, 2, "AnimationClip"); - qmlRegisterType<Qt3DAnimation::QClipAnimator>(uri, 2, 2, "ClipAnimator"); - qmlRegisterType<Qt3DAnimation::QBlendedClipAnimator>(uri, 2, 2, "BlendedClipAnimator"); - qmlRegisterType<Qt3DAnimation::QConductedClipAnimator>(uri, 2, 2, "ConductedClipAnimator"); - qmlRegisterType<Qt3DAnimation::QChannelMapping>(uri, 2, 2, "ChannelMapping"); + qmlRegisterUncreatableType<Qt3DAnimation::QAbstractClipAnimator>(uri, 2, 9, "AbstractClipAnimator", QStringLiteral("QAbstractClipAnimator is abstract")); + qmlRegisterType<Qt3DAnimation::QClipAnimator>(uri, 2, 9, "ClipAnimator"); + qmlRegisterType<Qt3DAnimation::QBlendedClipAnimator>(uri, 2, 9, "BlendedClipAnimator"); + qmlRegisterType<Qt3DAnimation::QChannelMapping>(uri, 2, 9, "ChannelMapping"); + qmlRegisterType<Qt3DAnimation::QChannelMapping>(uri, 2, 9, "ChannelMapping"); + qmlRegisterUncreatableType<Qt3DAnimation::QAbstractAnimationClip>(uri, 2, 9, "AbstractAnimationClip", QStringLiteral("QAbstractAnimationClip is abstract")); + qmlRegisterType<Qt3DAnimation::QAnimationClipLoader>(uri, 2, 9, "AnimationClipLoader"); + qmlRegisterType<Qt3DAnimation::QAnimationClip>(uri, 2, 9, "AnimationClip"); qmlRegisterExtendedType<Qt3DAnimation::QChannelMapper, - Qt3DAnimation::Animation::Quick::Quick3DChannelMapper>(uri, 2, 2, "ChannelMapper"); - qmlRegisterExtendedUncreatableType<Qt3DAnimation::QAbstractClipBlendNode, - Qt3DAnimation::Animation::Quick::Quick3DAbstractClipBlendNode>(uri, 2, 2, "AbstractClipBlendNode", QStringLiteral("QAbstractClipBlendNode is abstract")); - qmlRegisterType<Qt3DAnimation::QLerpBlend>(uri, 2, 2, "LerpBlend"); + Qt3DAnimation::Animation::Quick::Quick3DChannelMapper>(uri, 2, 9, "ChannelMapper"); + qmlRegisterUncreatableType<Qt3DAnimation::QAbstractClipBlendNode>(uri, 2, 9, "AbstractClipBlendNode", QStringLiteral("QAbstractClipBlendNode is abstract")); + qmlRegisterType<Qt3DAnimation::QLerpClipBlend>(uri, 2, 9, "LerpClipBlend"); + qmlRegisterType<Qt3DAnimation::QAdditiveClipBlend>(uri, 2, 9, "AdditiveClipBlend"); + qmlRegisterType<Qt3DAnimation::QClipBlendValue>(uri, 2, 9, "ClipBlendValue"); + + qmlRegisterUncreatableType<Qt3DAnimation::QAbstractAnimation>(uri, 2, 9, "AbstractAnimation", QStringLiteral("AbstractAnimation is abstract")); + qmlRegisterExtendedType<Qt3DAnimation::QKeyframeAnimation, Qt3DAnimation::Quick::QQuick3DKeyframeAnimation>(uri, 2, 9, "KeyframeAnimation"); + qmlRegisterExtendedType<Qt3DAnimation::QAnimationGroup, Qt3DAnimation::Quick::QQuick3DAnimationGroup>(uri, 2, 9, "AnimationGroup"); + qmlRegisterExtendedType<Qt3DAnimation::QAnimationController, Qt3DAnimation::Quick::QQuick3DAnimationController>(uri, 2, 9, "AnimationController"); + qmlRegisterExtendedType<Qt3DAnimation::QMorphingAnimation, Qt3DAnimation::Quick::QQuick3DMorphingAnimation>(uri, 2, 9, "MorphingAnimation"); + qmlRegisterExtendedType<Qt3DAnimation::QMorphTarget, Qt3DAnimation::Quick::QQuick3DMorphTarget>(uri, 2, 9, "MorphTarget"); + qmlRegisterExtendedType<Qt3DAnimation::QVertexBlendAnimation, Qt3DAnimation::Quick::QQuick3DVertexBlendAnimation>(uri, 2, 9, "VertexBlendAnimation"); } QT_END_NAMESPACE diff --git a/src/quick3d/imports/core/plugins.qmltypes b/src/quick3d/imports/core/plugins.qmltypes index ed06f8e0c..87cdac04c 100644 --- a/src/quick3d/imports/core/plugins.qmltypes +++ b/src/quick3d/imports/core/plugins.qmltypes @@ -4,29 +4,41 @@ import QtQuick.tooling 1.2 // It is used for QML tooling purposes only. // // This file was auto-generated by: -// 'qmlplugindump -nonrelocatable Qt3D.Core 2.0' +// 'qmlplugindump -nonrelocatable Qt3D.Core 2.9' Module { - dependencies: ["QtQuick 2.7"] + dependencies: ["QtQuick 2.8"] Component { name: "Qt3DCore::QComponent" - prototype: "Qt3DCore::QNode" - Property { name: "isShareable"; type: "bool" } + 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 } Signal { - name: "shareableChanged" - Parameter { name: "isShareable"; type: "bool" } + name: "propertyTrackingOverridesChanged" + Parameter { name: "value"; type: "QJSValue" } } - Method { - name: "setShareable" - Parameter { name: "isShareable"; type: "bool" } + Signal { + name: "propertyTrackingOverridesChanged" + Parameter { name: "value"; type: "QJSValue" } } } 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 } @@ -35,6 +47,10 @@ Module { name: "enabledChanged" Parameter { name: "enabled"; type: "bool" } } + Signal { + name: "defaultPropertyTrackingModeChanged" + Parameter { name: "mode"; type: "PropertyTrackingMode" } + } Signal { name: "nodeDestroyed" } Method { name: "setParent" @@ -44,11 +60,14 @@ Module { name: "setEnabled" Parameter { name: "isEnabled"; type: "bool" } } + Method { + name: "setDefaultPropertyTrackingMode" + Parameter { name: "mode"; type: "PropertyTrackingMode" } + } } Component { name: "Qt3DCore::QTransform" prototype: "Qt3DCore::QComponent" - exports: ["Qt3D.Core/Transform 2.0"] Property { name: "matrix"; type: "QMatrix4x4" } Property { name: "scale"; type: "float" } Property { name: "scale3D"; type: "QVector3D" } @@ -230,10 +249,8 @@ Module { Component { name: "Qt3DCore::Quick::Quick3DEntityLoader" defaultProperty: "data" - prototype: "Qt3DCore::QEntity" - exports: ["Qt3D.Core/EntityLoader 2.0"] - Property { name: "entity"; type: "Qt3DCore::QEntity"; isPointer: true; isReadonly: true } - Property { name: "source"; type: "QUrl" } + prototype: "Qt3DCore::Quick::Quick3DEntityLoader" + Property { name: "components"; type: "Qt3DCore::QComponent"; isList: true; isReadonly: true } } Component { name: "Qt3DCore::Quick::Quick3DNode" @@ -248,13 +265,36 @@ Module { 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" } + } + Signal { + name: "propertyTrackingOverridesChanged" + Parameter { name: "value"; type: "QJSValue" } + } + } + Component { + name: "Qt3DCore::Quick::Quick3DNodeV9" + defaultProperty: "data" prototype: "Qt3DCore::QNode" - exports: ["Qt3D.Core/NodeInstantiator 2.0"] - Property { name: "active"; type: "bool" } - Property { name: "asynchronous"; type: "bool" } - Property { name: "model"; type: "QVariant" } - Property { name: "count"; type: "int"; isReadonly: true } - Property { name: "delegate"; type: "QQmlComponent" } - Property { name: "object"; type: "QObject"; isReadonly: true } + 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 } + Signal { + name: "propertyTrackingOverridesChanged" + Parameter { name: "value"; type: "QJSValue" } + } + Signal { + name: "propertyTrackingOverridesChanged" + Parameter { name: "value"; type: "QJSValue" } + } } } diff --git a/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp b/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp index b72ee9600..3ff63d9d9 100644 --- a/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp +++ b/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp @@ -38,14 +38,17 @@ ****************************************************************************/ #include "qt3dquick3dcoreplugin.h" + #include <Qt3DCore/qtransform.h> -#include <private/quick3dentity_p.h> -#include <private/quick3dentityloader_p.h> -#include <private/quick3dnodeinstantiator_p.h> -#include <private/qquaternionanimation_p.h> -#include <private/qt3dquick_global_p.h> #include <QtCore/qvariantanimation.h> +#include <Qt3DQuick/private/quick3dnodev9_p.h> +#include <Qt3DQuick/private/quick3dentity_p.h> +#include <Qt3DQuick/private/quick3dentityloader_p.h> +#include <Qt3DQuick/private/quick3dnodeinstantiator_p.h> +#include <Qt3DQuick/private/qquaternionanimation_p.h> +#include <Qt3DQuick/private/qt3dquick_global_p.h> + QT_BEGIN_NAMESPACE void Qt3DQuick3DCorePlugin::registerTypes(const char *uri) @@ -65,6 +68,12 @@ void Qt3DQuick3DCorePlugin::registerTypes(const char *uri) // Ideally we want to make Node an uncreatable type // We would need qmlRegisterUncreatableExtendedType for that qmlRegisterExtendedUncreatableType<Qt3DCore::QNode, Qt3DCore::Quick::Quick3DNode>(uri, 2, 0, "Node", QStringLiteral("Node is a base class")); + qmlRegisterExtendedUncreatableType<Qt3DCore::QNode, Qt3DCore::Quick::Quick3DNodeV9, 9>(uri, 2, 9, "Node", QStringLiteral("Node is a base class")); +} + +Qt3DQuick3DCorePlugin::~Qt3DQuick3DCorePlugin() +{ + Qt3DCore::Quick::Quick3D_uninitialize(); } QT_END_NAMESPACE diff --git a/src/quick3d/imports/core/qt3dquick3dcoreplugin.h b/src/quick3d/imports/core/qt3dquick3dcoreplugin.h index a9b215c4a..b0ef5947c 100644 --- a/src/quick3d/imports/core/qt3dquick3dcoreplugin.h +++ b/src/quick3d/imports/core/qt3dquick3dcoreplugin.h @@ -57,6 +57,7 @@ class Qt3DQuick3DCorePlugin : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: Qt3DQuick3DCorePlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { initResources(); } + ~Qt3DQuick3DCorePlugin(); void registerTypes(const char *uri) Q_DECL_OVERRIDE; }; diff --git a/src/quick3d/imports/extras/defaults/defaults.pri b/src/quick3d/imports/extras/defaults/defaults.pri deleted file mode 100644 index 98f542fd6..000000000 --- a/src/quick3d/imports/extras/defaults/defaults.pri +++ /dev/null @@ -1,26 +0,0 @@ - -# When adding new QML files that should be built into the plugin, -# add them to this variable and they will be listed into a generated -# resource file. -# -# To have the plugin register them as types, add an entries to the -# qmldir array in qt3dquick3dextrasplugin.cpp -QML_FILES = \ - $$PWD/qml/DefaultEffect.qml \ - $$PWD/qml/DefaultAlphaEffect.qml \ - $$PWD/qml/PhongMaterial.qml \ - $$PWD/qml/DiffuseMapMaterial.qml \ - $$PWD/qml/DiffuseSpecularMapMaterial.qml \ - $$PWD/qml/NormalDiffuseMapMaterial.qml \ - $$PWD/qml/NormalDiffuseMapAlphaMaterial.qml \ - $$PWD/qml/NormalDiffuseSpecularMapMaterial.qml \ - $$PWD/qml/ForwardRenderer.qml \ - $$PWD/qml/PerVertexColorMaterial.qml \ - $$PWD/qml/SkyboxEntity.qml \ - $$PWD/qml/GoochMaterial.qml \ - $$PWD/qml/PhongAlphaMaterial.qml \ - $$PWD/qml/TextureMaterial.qml \ - $$PWD/qml/OrbitCameraController.qml \ - $$PWD/qml/FirstPersonCameraController.qml \ - $$PWD/qml/NormalDiffuseMapAlphaEffect.qml \ - $$PWD/qml/LevelOfDetailLoader.qml diff --git a/src/quick3d/imports/extras/defaults/qml/DefaultAlphaEffect.qml b/src/quick3d/imports/extras/defaults/qml/DefaultAlphaEffect.qml deleted file mode 100644 index c28fda4d1..000000000 --- a/src/quick3d/imports/extras/defaults/qml/DefaultAlphaEffect.qml +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Effect { - property string vertexES: "qrc:/shaders/es2/phong.vert" - property string fragmentES: "qrc:/shaders/es2/phongalpha.frag" - property string vertex: "qrc:/shaders/gl3/phong.vert" - property string fragment: "qrc:/shaders/gl3/phongalpha.frag" - property int sourceRgbArg: BlendEquationArguments.SourceAlpha - property int destinationRgbArg: BlendEquationArguments.OneMinusSourceAlpha - property int sourceAlphaArg: BlendEquationArguments.One - property int destinationAlphaArg: BlendEquationArguments.Zero - property int blendFunctionArg: BlendEquation.Add - - FilterKey { - id: forward - name: "renderingStyle" - value: "forward" - } - - ShaderProgram { - id: gl2Es2Shader - vertexShaderCode: loadSource(vertexES) - fragmentShaderCode: loadSource(fragmentES) - } - - ShaderProgram { - id: gl3Shader - vertexShaderCode: loadSource(vertex) - fragmentShaderCode: loadSource(fragment) - } - - techniques: [ - // OpenGL 3.1 - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGL - profile: GraphicsApiFilter.CoreProfile - majorVersion: 3 - minorVersion: 1 - } - renderPasses: RenderPass { - shaderProgram: gl3Shader - renderStates: [ - BlendEquationArguments { - sourceRgb: sourceRgbArg - destinationRgb: destinationRgbArg - sourceAlpha: sourceAlphaArg - destinationAlpha: destinationAlphaArg - }, - BlendEquation { - blendFunction: blendFunctionArg - } - ] - } - }, - - // OpenGL 2.1 - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGL - profile: GraphicsApiFilter.NoProfile - majorVersion: 2 - minorVersion: 0 - } - renderPasses: RenderPass { - shaderProgram: gl2Es2Shader - renderStates: [ - BlendEquationArguments { - sourceRgb: sourceRgbArg - destinationRgb: destinationRgbArg - sourceAlpha: sourceAlphaArg - destinationAlpha: destinationAlphaArg - }, - BlendEquation { - blendFunction: blendFunctionArg - } - ] - } - }, - - // OpenGL ES 2 - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGLES - profile: GraphicsApiFilter.NoProfile - majorVersion: 2 - minorVersion: 0 - } - renderPasses: RenderPass { - shaderProgram: gl2Es2Shader - renderStates: [ - BlendEquationArguments { - sourceRgb: sourceRgbArg - destinationRgb: destinationRgbArg - sourceAlpha: sourceAlphaArg - destinationAlpha: destinationAlphaArg - }, - BlendEquation { - blendFunction: blendFunctionArg - } - ] - } - } - ] -} diff --git a/src/quick3d/imports/extras/defaults/qml/DefaultEffect.qml b/src/quick3d/imports/extras/defaults/qml/DefaultEffect.qml deleted file mode 100644 index fed87c94d..000000000 --- a/src/quick3d/imports/extras/defaults/qml/DefaultEffect.qml +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Effect { - property string vertexES: "qrc:/shaders/es2/phong.vert" - property string fragmentES: "qrc:/shaders/es2/phong.frag" - property string vertex: "qrc:/shaders/gl3/phong.vert" - property string fragment: "qrc:/shaders/gl3/phong.frag" - - FilterKey { - id: forward - name: "renderingStyle" - value: "forward" - } - - ShaderProgram { - id: gl2Es2Shader - vertexShaderCode: loadSource(vertexES) - fragmentShaderCode: loadSource(fragmentES) - } - - ShaderProgram { - id: gl3Shader - vertexShaderCode: loadSource(vertex) - fragmentShaderCode: loadSource(fragment) - } - - techniques: [ - // OpenGL 3.1 - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGL - profile: GraphicsApiFilter.CoreProfile - majorVersion: 3 - minorVersion: 1 - } - renderPasses: RenderPass { shaderProgram: gl3Shader } - }, - - // OpenGL 2.1 - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGL - profile: GraphicsApiFilter.NoProfile - majorVersion: 2 - minorVersion: 0 - } - renderPasses: RenderPass { shaderProgram: gl2Es2Shader } - }, - - // OpenGL ES 2 - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGLES - profile: GraphicsApiFilter.NoProfile - majorVersion: 2 - minorVersion: 0 - } - renderPasses: RenderPass { shaderProgram: gl2Es2Shader } - } - ] -} diff --git a/src/quick3d/imports/extras/defaults/qml/DiffuseMapMaterial.qml b/src/quick3d/imports/extras/defaults/qml/DiffuseMapMaterial.qml deleted file mode 100644 index 4b49d76de..000000000 --- a/src/quick3d/imports/extras/defaults/qml/DiffuseMapMaterial.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id: root - - property color ambient: Qt.rgba( 0.05, 0.05, 0.05, 1.0 ) - property alias diffuse: diffuseTextureImage.source - property color specular: Qt.rgba( 0.01, 0.01, 0.01, 1.0 ) - property real shininess: 150.0 - property real textureScale: 1.0 - - parameters: [ - Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) }, - Parameter { - name: "diffuseTexture" - value: Texture2D { - id: diffuseTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: diffuseTextureImage; } - } - }, - Parameter { name: "ks"; value: Qt.vector3d(root.specular.r, root.specular.g, root.specular.b) }, - Parameter { name: "shininess"; value: root.shininess }, - Parameter { name: "texCoordScale"; value: textureScale } - ] - - effect: DefaultEffect { - vertexES: "qrc:/shaders/es2/diffusemap.vert" - fragmentES: "qrc:/shaders/es2/diffusemap.frag" - vertex: "qrc:/shaders/gl3/diffusemap.vert" - fragment: "qrc:/shaders/gl3/diffusemap.frag" - } -} - diff --git a/src/quick3d/imports/extras/defaults/qml/DiffuseSpecularMapMaterial.qml b/src/quick3d/imports/extras/defaults/qml/DiffuseSpecularMapMaterial.qml deleted file mode 100644 index 629cb6d11..000000000 --- a/src/quick3d/imports/extras/defaults/qml/DiffuseSpecularMapMaterial.qml +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id: root - - property color ambient: Qt.rgba( 0.05, 0.05, 0.05, 1.0 ) - property alias diffuse: diffuseTextureImage.source - property alias specular: specularTextureImage.source - property real shininess: 150.0 - property real textureScale: 1.0 - - parameters: [ - Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) }, - Parameter { - name: "diffuseTexture" - value: Texture2D { - id: diffuseTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: diffuseTextureImage; } - } - }, - Parameter { name: "specularTexture"; - value: Texture2D { - id: specularTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: specularTextureImage; } - } - }, - Parameter { name: "shininess"; value: root.shininess }, - Parameter { name: "texCoordScale"; value: textureScale } - ] - - effect: DefaultEffect { - vertexES: "qrc:/shaders/es2/diffusemap.vert" - fragmentES: "qrc:/shaders/es2/diffusespecularmap.frag" - vertex: "qrc:/shaders/gl3/diffusemap.vert" - fragment: "qrc:/shaders/gl3/diffusespecularmap.frag" - } -} diff --git a/src/quick3d/imports/extras/defaults/qml/FirstPersonCameraController.qml b/src/quick3d/imports/extras/defaults/qml/FirstPersonCameraController.qml deleted file mode 100644 index 1003c0ea0..000000000 --- a/src/quick3d/imports/extras/defaults/qml/FirstPersonCameraController.qml +++ /dev/null @@ -1,191 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 Paul Lemire <paul.lemire350@gmail.com> -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Input 2.0 -import Qt3D.Logic 2.0 -import QtQml 2.2 - -Entity { - id: root - property Camera camera - property real linearSpeed: 10.0 - property real lookSpeed: 180.0 - property real acceleration: -1.0 - property real deceleration: -1.0 - - QtObject { - id: d - readonly property vector3d firstPersonUp: Qt.vector3d(0, 1, 0) - readonly property bool leftMouseButtonPressed: leftMouseButtonAction.active - readonly property real vx: txAxis.value * linearSpeed; - readonly property real vy: tyAxis.value * linearSpeed; - readonly property real vz: tzAxis.value * linearSpeed; - readonly property real dx: rxAxis.value * lookSpeed - readonly property real dy: ryAxis.value * lookSpeed - readonly property bool fineMotion: fineMotionAction.active - } - - KeyboardDevice { - id: keyboardSourceDevice - } - - MouseDevice { - id: mouseSourceDevice - sensitivity: d.fineMotion ? 0.01 : 0.1 - } - - components: [ - - LogicalDevice { - enabled: root.enabled - actions: [ - Action { - id: leftMouseButtonAction - ActionInput { - sourceDevice: mouseSourceDevice - buttons: [MouseEvent.LeftButton] - } - }, - Action { - id: fineMotionAction - ActionInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Shift] - } - } - ] // actions - - axes: [ - // Rotation - Axis { - id: rxAxis - AnalogAxisInput { - sourceDevice: mouseSourceDevice - axis: MouseDevice.X - } - }, - Axis { - id: ryAxis - AnalogAxisInput { - sourceDevice: mouseSourceDevice - axis: MouseDevice.Y - } - }, - // Translation - Axis { - id: txAxis - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Left] - scale: -1.0 - acceleration: root.acceleration - deceleration: root.deceleration - } - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Right] - scale: 1.0 - acceleration: root.acceleration - deceleration: root.deceleration - } - }, - Axis { - id: tzAxis - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Up] - scale: 1.0 - acceleration: root.acceleration - deceleration: root.deceleration - } - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Down] - scale: -1.0 - acceleration: root.acceleration - deceleration: root.deceleration - } - }, - Axis { - id: tyAxis - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_PageUp] - scale: 1.0 - acceleration: root.acceleration - deceleration: root.deceleration - } - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_PageDown] - scale: -1.0 - acceleration: root.acceleration - deceleration: root.deceleration - } - } - ] // axes - }, - - FrameAction { - onTriggered: { - // The time difference since the last frame is passed in as the - // argument dt. It is a floating point value in units of seconds. - root.camera.translate(Qt.vector3d(d.vx, d.vy, d.vz).times(dt)) - - if (d.leftMouseButtonPressed) { - root.camera.pan(d.dx * dt, d.firstPersonUp) - root.camera.tilt(d.dy * dt) - } - } - } - ] // components -} diff --git a/src/quick3d/imports/extras/defaults/qml/ForwardRenderer.qml b/src/quick3d/imports/extras/defaults/qml/ForwardRenderer.qml deleted file mode 100644 index b7ad3188c..000000000 --- a/src/quick3d/imports/extras/defaults/qml/ForwardRenderer.qml +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -TechniqueFilter { - // Expose camera to allow user to choose which camera to use for rendering - property alias camera: cameraSelector.camera - property alias clearColor: clearBuffer.clearColor - property alias viewportRect: viewport.normalizedRect - property alias window: surfaceSelector.surface - property alias externalRenderTargetSize: surfaceSelector.externalRenderTargetSize - property alias frustumCulling: frustumCulling.enabled - - // Select the forward rendering Technique of any used Effect - matchAll: [ FilterKey { name: "renderingStyle"; value: "forward" } ] - - RenderSurfaceSelector { - id: surfaceSelector - - // Use the whole viewport - Viewport { - id: viewport - normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0) - - // Use the specified camera - CameraSelector { - id : cameraSelector - FrustumCulling { - id: frustumCulling - ClearBuffers { - id: clearBuffer - clearColor: "white" - buffers : ClearBuffers.ColorDepthBuffer - } - } - } - } - } -} diff --git a/src/quick3d/imports/extras/defaults/qml/GoochMaterial.qml b/src/quick3d/imports/extras/defaults/qml/GoochMaterial.qml deleted file mode 100644 index fffa2284d..000000000 --- a/src/quick3d/imports/extras/defaults/qml/GoochMaterial.qml +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id: root - - property color diffuse: Qt.rgba( 0.0, 0.0, 0.0, 1.0 ) - property color specular: Qt.rgba( 0.0, 0.0, 0.0, 1.0 ) - property color coolColor: Qt.rgba( 0.0, 0.0, 0.4, 1.0 ) - property color warmColor: Qt.rgba( 0.4, 0.4, 0.0, 1.0 ) - property real alpha: 0.25 - property real beta: 0.5 - property real shininess: 100.0 - - parameters: [ - Parameter { name: "kd"; value: root.diffuse }, - Parameter { name: "ks"; value: root.specular }, - Parameter { name: "kblue"; value: root.coolColor }, - Parameter { name: "kyellow"; value: root.warmColor }, - Parameter { name: "alpha"; value: root.alpha }, - Parameter { name: "beta"; value: root.beta }, - Parameter { name: "shininess"; value: root.shininess } - ] - - effect: DefaultEffect { - vertexES: "qrc:/shaders/es2/gooch.vert" - fragmentES: "qrc:/shaders/es2/gooch.frag" - vertex: "qrc:/shaders/gl3/gooch.vert" - fragment: "qrc:/shaders/gl3/gooch.frag" - } -} - diff --git a/src/quick3d/imports/extras/defaults/qml/LevelOfDetailLoader.qml b/src/quick3d/imports/extras/defaults/qml/LevelOfDetailLoader.qml deleted file mode 100644 index 83655a7bc..000000000 --- a/src/quick3d/imports/extras/defaults/qml/LevelOfDetailLoader.qml +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** 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$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.2 - -Entity { - id:root - - property var sources: [] - readonly property alias entity: loader.entity - readonly property alias source: loader.source - - property alias camera: lod.camera - property alias currentIndex: lod.currentIndex - property alias thresholdType: lod.thresholdType - property alias thresholds: lod.thresholds - property alias volumeOverride: lod.volumeOverride - - EntityLoader { - id: loader - components: [ - LevelOfDetail { - id: lod - enabled: root.enabled - currentIndex: -1 - onCurrentIndexChanged: if (currentIndex >= 0 && currentIndex < root.sources.length) - loader.source = root.sources[currentIndex] - } - ] - } -} - diff --git a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaEffect.qml b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaEffect.qml deleted file mode 100644 index e4f038642..000000000 --- a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaEffect.qml +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Effect { - property string vertexES: "qrc:/shaders/es2/normaldiffusemap.vert" - property string fragmentES: "qrc:/shaders/es2/normaldiffusemapalpha.frag" - property string vertex: "qrc:/shaders/gl3/normaldiffusemap.vert" - property string fragment: "qrc:/shaders/gl3/normaldiffusemapalpha.frag" - - FilterKey { - id: forward - name: "renderingStyle" - value: "forward" - } - - ShaderProgram { - id: gl2Es2Shader - vertexShaderCode: loadSource(vertexES) - fragmentShaderCode: loadSource(fragmentES) - } - - ShaderProgram { - id: gl3Shader - vertexShaderCode: loadSource(vertex) - fragmentShaderCode: loadSource(fragment) - } - - AlphaCoverage { id: alphaCoverage } - - techniques: [ - // OpenGL 3.1 - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGL - profile: GraphicsApiFilter.CoreProfile - majorVersion: 3 - minorVersion: 1 - } - renderPasses: RenderPass { - shaderProgram: gl3Shader - renderStates: [ alphaCoverage ] - } - }, - - // OpenGL 2.1 - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGL - profile: GraphicsApiFilter.NoProfile - majorVersion: 2 - minorVersion: 0 - } - renderPasses: RenderPass { - shaderProgram: gl2Es2Shader - renderStates: [ alphaCoverage ] - } - }, - - // OpenGL ES 2 - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGLES - profile: GraphicsApiFilter.NoProfile - majorVersion: 2 - minorVersion: 0 - } - renderPasses: RenderPass { - shaderProgram: gl2Es2Shader - renderStates: [ alphaCoverage ] - } - } - ] -} diff --git a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaMaterial.qml b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaMaterial.qml deleted file mode 100644 index 421cc3aa9..000000000 --- a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapAlphaMaterial.qml +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id: root - - property color ambient: Qt.rgba( 0.05, 0.05, 0.05, 1.0 ) - property alias diffuse: diffuseTextureImage.source - property color specular: Qt.rgba( 0.01, 0.01, 0.01, 1.0 ) - property alias normal: normalTextureImage.source - property real shininess: 150.0 - property real textureScale: 1.0 - - parameters: [ - Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) }, - Parameter { - name: "diffuseTexture" - value: Texture2D { - id: diffuseTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: diffuseTextureImage; } - } - }, - Parameter { - name: "normalTexture" - value: Texture2D { - id: normalTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: normalTextureImage; } - } - }, - Parameter { name: "ks"; value: Qt.vector3d(root.specular.r, root.specular.g, root.specular.b) }, - Parameter { name: "shininess"; value: root.shininess }, - Parameter { name: "texCoordScale"; value: textureScale } - ] - - effect: NormalDiffuseMapAlphaEffect { } -} - diff --git a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapMaterial.qml b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapMaterial.qml deleted file mode 100644 index 0724cf597..000000000 --- a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseMapMaterial.qml +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id: root - - property color ambient: Qt.rgba( 0.05, 0.05, 0.05, 1.0 ) - property alias diffuse: diffuseTextureImage.source - property color specular: Qt.rgba( 0.01, 0.01, 0.01, 1.0 ) - property alias normal: normalTextureImage.source - property real shininess: 150.0 - property real textureScale: 1.0 - - parameters: [ - Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) }, - Parameter { - name: "diffuseTexture" - value: Texture2D { - id: diffuseTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: diffuseTextureImage; } - } - }, - Parameter { - name: "normalTexture" - value: Texture2D { - id: normalTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: normalTextureImage; } - } - }, - Parameter { name: "ks"; value: Qt.vector3d(root.specular.r, root.specular.g, root.specular.b) }, - Parameter { name: "shininess"; value: root.shininess }, - Parameter { name: "texCoordScale"; value: textureScale } - ] - - effect: DefaultEffect { - vertexES: "qrc:/shaders/es2/normaldiffusemap.vert" - fragmentES: "qrc:/shaders/es2/normaldiffusemap.frag" - vertex: "qrc:/shaders/gl3/normaldiffusemap.vert" - fragment: "qrc:/shaders/gl3/normaldiffusemap.frag" - } -} - diff --git a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseSpecularMapMaterial.qml b/src/quick3d/imports/extras/defaults/qml/NormalDiffuseSpecularMapMaterial.qml deleted file mode 100644 index 497209c32..000000000 --- a/src/quick3d/imports/extras/defaults/qml/NormalDiffuseSpecularMapMaterial.qml +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id: root - - property color ambient: Qt.rgba( 0.05, 0.05, 0.05, 1.0 ) - property alias diffuse: diffuseTextureImage.source - property alias specular: specularTextureImage.source - property alias normal: normalTextureImage.source - property real shininess: 150.0 - property real textureScale: 1.0 - - parameters: [ - Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) }, - Parameter { - name: "diffuseTexture" - value: Texture2D { - id: diffuseTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: diffuseTextureImage; } - } - }, - Parameter { name: "specularTexture"; - value: Texture2D { - id: specularTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: specularTextureImage; } - } - }, - Parameter { - name: "normalTexture" - value: Texture2D { - id: normalTexture - minificationFilter: Texture.LinearMipMapLinear - magnificationFilter: Texture.Linear - wrapMode { - x: WrapMode.Repeat - y: WrapMode.Repeat - } - generateMipMaps: true - maximumAnisotropy: 16.0 - TextureImage { id: normalTextureImage; } - } - }, - Parameter { name: "shininess"; value: root.shininess }, - Parameter { name: "texCoordScale"; value: textureScale } - ] - - effect: DefaultEffect { - vertexES: "qrc:/shaders/es2/normaldiffusemap.vert" - fragmentES: "qrc:/shaders/es2/normaldiffusespecularmap.frag" - vertex: "qrc:/shaders/gl3/normaldiffusemap.vert" - fragment: "qrc:/shaders/gl3/normaldiffusespecularmap.frag" - } -} - diff --git a/src/quick3d/imports/extras/defaults/qml/OrbitCameraController.qml b/src/quick3d/imports/extras/defaults/qml/OrbitCameraController.qml deleted file mode 100644 index ae8869473..000000000 --- a/src/quick3d/imports/extras/defaults/qml/OrbitCameraController.qml +++ /dev/null @@ -1,236 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 Paul Lemire <paul.lemire350@gmail.com> -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Input 2.0 -import Qt3D.Logic 2.0 -import QtQml 2.2 - -Entity { - id: root - property Camera camera - property real linearSpeed: 10.0 - property real lookSpeed: 180.0 - property real zoomLimit: 2.0 - - QtObject { - id: d - readonly property vector3d firstPersonUp: Qt.vector3d(0, 1, 0) - readonly property bool leftMouseButtonPressed: leftMouseButtonAction.active - readonly property bool rightMouseButtonPressed: rightMouseButtonAction.active - readonly property bool shiftPressed: shiftAction.active - readonly property bool altPressed: altAction.active - property real translationX: clampInputs(leftMouseButtonPressed ? mouseXAxis.value : 0, keyboardXAxis.value) * linearSpeed; - property real translationY: clampInputs(leftMouseButtonPressed ? mouseYAxis.value : 0, keyboardYAxis.value) * linearSpeed; - property real translationZ: keyboardZAxis.value * linearSpeed; - property real orbitX: clampInputs(rightMouseButtonPressed ? mouseXAxis.value : 0, keyboardXAxis.value) * lookSpeed; - property real orbitY: clampInputs(rightMouseButtonPressed ? mouseYAxis.value : 0, keyboardYAxis.value) * lookSpeed; - } - - function clampInputs(input1, input2) { - var axisValue = input1 + input2; - return (axisValue < -1) ? -1 : (axisValue > 1) ? 1 : axisValue; - } - - function zoomDistance(firstPoint, secondPoint) { - var u = secondPoint.minus(firstPoint); u = u.times(u); - return u.x + u.y + u.z; - } - - KeyboardDevice { - id: keyboardSourceDevice - } - - MouseDevice { - id: mouseSourceDevice - sensitivity: 0.1 - } - - components: [ - - LogicalDevice { - enabled: root.enabled - actions: [ - Action { - id: leftMouseButtonAction - ActionInput { - sourceDevice: mouseSourceDevice - buttons: [MouseEvent.LeftButton] - } - }, - Action { - id: rightMouseButtonAction - ActionInput { - sourceDevice: mouseSourceDevice - buttons: [MouseEvent.RightButton] - } - }, - Action { - id: shiftAction - ActionInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Shift] - } - }, - Action { - id: altAction - ActionInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Alt] - } - } - ] // actions - - axes: [ - // Mouse - Axis { - id: mouseXAxis - AnalogAxisInput { - sourceDevice: mouseSourceDevice - axis: MouseDevice.X - } - }, - Axis { - id: mouseYAxis - AnalogAxisInput { - sourceDevice: mouseSourceDevice - axis: MouseDevice.Y - } - }, - // Keyboard - Axis { - id: keyboardXAxis - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Left] - scale: -1.0 - } - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Right] - scale: 1.0 - } - }, - Axis { - id: keyboardZAxis - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_PageUp] - scale: 1.0 - } - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_PageDown] - scale: -1.0 - } - }, - Axis { - id: keyboardYAxis - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Up] - scale: 1.0 - } - ButtonAxisInput { - sourceDevice: keyboardSourceDevice - buttons: [Qt.Key_Down] - scale: -1.0 - } - } - ] // axes - }, - - FrameAction { - onTriggered: { - // The time difference since the last frame is passed in as the - // argument dt. It is a floating point value in units of seconds. - - // Mouse input - if (d.leftMouseButtonPressed) { - if (d.rightMouseButtonPressed) { - if (zoomDistance(root.camera.position, root.camera.viewCenter) > root.zoomLimit * root.zoomLimit) { - // Dolly up to limit - root.camera.translate(Qt.vector3d(0, 0, d.translationY).times(dt), Camera.DontTranslateViewCenter); - } else { - // Too close, Dolly backwards - root.camera.translate(Qt.vector3d(0, 0, -1).times(dt), Camera.DontTranslateViewCenter); - } - } else { - // Translate - root.camera.translate(Qt.vector3d(d.translationX, d.translationY, 0).times(dt)); - } - return - } else if (d.rightMouseButtonPressed) { - // Orbit - root.camera.panAboutViewCenter(d.orbitX * dt, d.firstPersonUp); - root.camera.tiltAboutViewCenter(d.orbitY * dt); - } - // Keyboard input - if (d.altPressed) { - // Orbit - root.camera.panAboutViewCenter(d.orbitX * dt, d.firstPersonUp); - root.camera.tiltAboutViewCenter(d.orbitY * dt); - } else if (d.shiftPressed) { - if (zoomDistance(root.camera.position, root.camera.viewCenter) > root.zoomLimit * root.zoomLimit) { - // Dolly up to limit - root.camera.translate(Qt.vector3d(0, 0, d.translationY).times(dt), Camera.DontTranslateViewCenter); - } else { - // Too close, Dolly backwards - root.camera.translate(Qt.vector3d(0, 0, -1).times(dt), Camera.DontTranslateViewCenter); - } - } else { - // Translate - root.camera.translate(Qt.vector3d(d.translationX, d.translationY, d.translationZ).times(dt)); - } - } - } - ] // components -} diff --git a/src/quick3d/imports/extras/defaults/qml/PerVertexColorMaterial.qml b/src/quick3d/imports/extras/defaults/qml/PerVertexColorMaterial.qml deleted file mode 100644 index 70c461edd..000000000 --- a/src/quick3d/imports/extras/defaults/qml/PerVertexColorMaterial.qml +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 Lorenz Esch (TU Ilmenau). -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id: root - - effect: DefaultEffect { - vertexES: "qrc:/shaders/es2/pervertexcolor.vert" - fragmentES: "qrc:/shaders/es2/pervertexcolor.frag" - vertex: "qrc:/shaders/gl3/pervertexcolor.vert" - fragment: "qrc:/shaders/gl3/pervertexcolor.frag" - } -} - diff --git a/src/quick3d/imports/extras/defaults/qml/PhongAlphaMaterial.qml b/src/quick3d/imports/extras/defaults/qml/PhongAlphaMaterial.qml deleted file mode 100644 index 87373242d..000000000 --- a/src/quick3d/imports/extras/defaults/qml/PhongAlphaMaterial.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 Paul Lemire -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id: root - - property color ambient: Qt.rgba( 0.05, 0.05, 0.05, 1.0 ) - property color diffuse: Qt.rgba( 0.7, 0.7, 0.7, 1.0 ) - property color specular: Qt.rgba( 0.01, 0.01, 0.01, 1.0 ) - property real shininess: 150.0 - property real alpha: 0.5 - - property alias sourceRgbArg: alphaEffect.sourceRgbArg - property alias destinationRgbArg: alphaEffect.destinationRgbArg - property alias sourceAlphaArg: alphaEffect.sourceAlphaArg - property alias destinationAlphaArg: alphaEffect.destinationAlphaArg - property alias blendFunctionArg: alphaEffect.blendFunctionArg - - parameters: [ - Parameter { name: "alpha"; value: root.alpha }, - Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) }, - Parameter { name: "kd"; value: Qt.vector3d(root.diffuse.r, root.diffuse.g, root.diffuse.b) }, - Parameter { name: "ks"; value: Qt.vector3d(root.specular.r, root.specular.g, root.specular.b) }, - Parameter { name: "shininess"; value: root.shininess } - ] - - effect: DefaultAlphaEffect { id: alphaEffect } -} - diff --git a/src/quick3d/imports/extras/defaults/qml/PhongMaterial.qml b/src/quick3d/imports/extras/defaults/qml/PhongMaterial.qml deleted file mode 100644 index 5b770a56d..000000000 --- a/src/quick3d/imports/extras/defaults/qml/PhongMaterial.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id:root - property color ambient: Qt.rgba( 0.05, 0.05, 0.05, 1.0 ) - property color diffuse: Qt.rgba( 0.7, 0.7, 0.7, 1.0 ) - property color specular: Qt.rgba( 0.01, 0.01, 0.01, 1.0 ) - property real shininess: 150.0 - - parameters: [ - Parameter { name: "ka"; value: Qt.vector3d(root.ambient.r, root.ambient.g, root.ambient.b) }, - Parameter { name: "kd"; value: Qt.vector3d(root.diffuse.r, root.diffuse.g, root.diffuse.b) }, - Parameter { name: "ks"; value: Qt.vector3d(root.specular.r, root.specular.g, root.specular.b) }, - Parameter { name: "shininess"; value: root.shininess } - ] - - effect: DefaultEffect {} -} - diff --git a/src/quick3d/imports/extras/defaults/qml/SkyboxEntity.qml b/src/quick3d/imports/extras/defaults/qml/SkyboxEntity.qml deleted file mode 100644 index 00bff6f10..000000000 --- a/src/quick3d/imports/extras/defaults/qml/SkyboxEntity.qml +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 -import Qt3D.Extras 2.0 - -Entity { - property string baseName: ""; - property string extension: ".png" - - property TextureCubeMap skyboxTexture: TextureCubeMap { - generateMipMaps: false - magnificationFilter: Texture.Linear - minificationFilter: Texture.Linear - wrapMode { - x: WrapMode.ClampToEdge - y: WrapMode.ClampToEdge - } - TextureImage { mirrored: false; face: Texture.CubeMapPositiveX; source: baseName + "_posx" + extension } - TextureImage { mirrored: false; face: Texture.CubeMapPositiveY; source: baseName + "_posy" + extension } - TextureImage { mirrored: false; face: Texture.CubeMapPositiveZ; source: baseName + "_posz" + extension } - TextureImage { mirrored: false; face: Texture.CubeMapNegativeX; source: baseName + "_negx" + extension } - TextureImage { mirrored: false; face: Texture.CubeMapNegativeY; source: baseName + "_negy" + extension } - TextureImage { mirrored: false; face: Texture.CubeMapNegativeZ; source: baseName + "_negz" + extension } - } - - ShaderProgram { - id: gl3SkyboxShader - vertexShaderCode: loadSource("qrc:/shaders/gl3/skybox.vert") - fragmentShaderCode: loadSource("qrc:/shaders/gl3/skybox.frag") - } - - ShaderProgram { - id: gl2es2SkyboxShader - vertexShaderCode: loadSource("qrc:/shaders/es2/skybox.vert") - fragmentShaderCode: loadSource("qrc:/shaders/es2/skybox.frag") - } - - CuboidMesh { - id: cuboidMesh - yzMeshResolution: Qt.size(2, 2) - xzMeshResolution: Qt.size(2, 2) - xyMeshResolution: Qt.size(2, 2) - } - - Material { - id: skyboxMaterial - parameters: Parameter { name: "skyboxTexture"; value: skyboxTexture} - - effect: Effect { - FilterKey { - id: forward - name: "renderingStyle" - value: "forward" - } - - techniques: [ - // GL3 Technique - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGL - profile: GraphicsApiFilter.CoreProfile - majorVersion: 3 - minorVersion: 1 - } - renderPasses: RenderPass { - shaderProgram: gl3SkyboxShader - renderStates: [ - // cull front faces - CullFace { mode: CullFace.Front }, - DepthTest { depthFunction: DepthTest.LessOrEqual } - ] - } - }, - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGL - profile: GraphicsApiFilter.NoProfile - majorVersion: 2 - minorVersion: 0 - } - renderPasses: RenderPass { - shaderProgram: gl2es2SkyboxShader - renderStates: [ - CullFace { mode: CullFace.Front }, - DepthTest { depthFunction: DepthTest.LessOrEqual } - ] - } - }, - Technique { - filterKeys: [ forward ] - graphicsApiFilter { - api: GraphicsApiFilter.OpenGLES - profile: GraphicsApiFilter.NoProfile - majorVersion: 2 - minorVersion: 0 - } - renderPasses: RenderPass { - shaderProgram: gl2es2SkyboxShader - renderStates: [ - CullFace { mode: CullFace.Front }, - DepthTest { depthFunction: DepthTest.LessOrEqual } - ] - } - } - ] - } - } - - components: [cuboidMesh, skyboxMaterial] -} - diff --git a/src/quick3d/imports/extras/defaults/qml/TextureMaterial.qml b/src/quick3d/imports/extras/defaults/qml/TextureMaterial.qml deleted file mode 100644 index 387d8d4aa..000000000 --- a/src/quick3d/imports/extras/defaults/qml/TextureMaterial.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 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:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt3D.Core 2.0 -import Qt3D.Render 2.0 - -Material { - id: root - - property Texture2D texture: Texture2D {} - property alias textureOffset: texCoordOffset.offset - - parameters: [ - Parameter { - name: "diffuseTexture" - value: root.texture - }, - Parameter { - id: texCoordOffset - property vector2d offset: Qt.vector2d(0, 0) - name: "texCoordOffset" - value: offset - } - ] - - effect: DefaultEffect { - vertexES: "qrc:/shaders/es2/unlittexture.vert" - fragmentES: "qrc:/shaders/es2/unlittexture.frag" - vertex: "qrc:/shaders/gl3/unlittexture.vert" - fragment: "qrc:/shaders/gl3/unlittexture.frag" - } -} diff --git a/src/quick3d/imports/extras/importsextras.pro b/src/quick3d/imports/extras/importsextras.pro index 6a70238f4..22f753ee0 100644 --- a/src/quick3d/imports/extras/importsextras.pro +++ b/src/quick3d/imports/extras/importsextras.pro @@ -14,32 +14,6 @@ HEADERS += \ SOURCES += \ qt3dquick3dextrasplugin.cpp -load(qml_plugin) - -include(./defaults/defaults.pri) - -OTHER_FILES += \ - qmldir \ - $$QML_FILES - -# Create a resource file for qml files that need to be registered by the plugin -GENERATED_RESOURCE_FILE = $$OUT_PWD/defaults.qrc -INCLUDED_RESOURCE_FILES = $$QML_FILES -RESOURCE_CONTENT = \ - "<RCC>" \ - "<qresource prefix=\"/qt-project.org/imports/Qt3D/Extras/\">" +OTHER_FILES += qmldir -for(resourcefile, INCLUDED_RESOURCE_FILES) { - resourcefileabsolutepath = $$absolute_path($$resourcefile) - relativepath_in = $$relative_path($$resourcefileabsolutepath, $$_PRO_FILE_PWD_) - relativepath_out = $$relative_path($$resourcefileabsolutepath, $$OUT_PWD) - RESOURCE_CONTENT += "<file alias=\"$$relativepath_in\">$$relativepath_out</file>" -} - -RESOURCE_CONTENT += \ - "</qresource>" \ - "</RCC>" - -write_file($$GENERATED_RESOURCE_FILE, RESOURCE_CONTENT)|error("Aborting.") - -RESOURCES += $$GENERATED_RESOURCE_FILE +load(qml_plugin) diff --git a/src/quick3d/imports/extras/plugins.qmltypes b/src/quick3d/imports/extras/plugins.qmltypes index 6a7e1203d..a623f385c 100644 --- a/src/quick3d/imports/extras/plugins.qmltypes +++ b/src/quick3d/imports/extras/plugins.qmltypes @@ -4,10 +4,31 @@ import QtQuick.tooling 1.2 // It is used for QML tooling purposes only. // // This file was auto-generated by: -// 'qmlplugindump -nonrelocatable Qt3D.Extras 2.0' +// 'qmlplugindump -nonrelocatable Qt3D.Extras 2.9' Module { dependencies: ["Qt3D.Logic 2.0"] + Component { name: "Qt3DCore::QEntity"; prototype: "Qt3DCore::QNode" } + Component { + name: "Qt3DExtras::Extras::Quick::Quick3DLevelOfDetailLoader" + prototype: "Qt3DCore::QEntity" + exports: ["Qt3D.Extras/LevelOfDetailLoader 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "sources"; type: "QVariantList" } + Property { name: "camera"; type: "Qt3DRender::QCamera"; isPointer: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "thresholdType"; type: "Qt3DRender::QLevelOfDetail::ThresholdType" } + Property { name: "thresholds"; type: "QVector<qreal>" } + Property { name: "volumeOverride"; type: "Qt3DRender::QLevelOfDetailBoundingSphere" } + Property { name: "entity"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "source"; type: "QUrl"; isReadonly: true } + Method { + name: "createBoundingSphere" + type: "Qt3DRender::QLevelOfDetailBoundingSphere" + Parameter { name: "center"; type: "QVector3D" } + Parameter { name: "radius"; type: "float" } + } + } Component { name: "Qt3DExtras::QConeGeometry" prototype: "Qt3DRender::QGeometry" @@ -429,6 +450,723 @@ Module { } } Component { + name: "Qt3DExtras::QDiffuseMapMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/DiffuseMapMaterial 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "ambient"; type: "QColor" } + Property { name: "specular"; type: "QColor" } + Property { name: "shininess"; type: "float" } + Property { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "textureScale"; type: "float" } + Signal { + name: "ambientChanged" + Parameter { name: "ambient"; type: "QColor" } + } + Signal { + name: "diffuseChanged" + Parameter { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Signal { + name: "specularChanged" + Parameter { name: "specular"; type: "QColor" } + } + Signal { + name: "shininessChanged" + Parameter { name: "shininess"; type: "float" } + } + Signal { + name: "textureScaleChanged" + Parameter { name: "textureScale"; type: "float" } + } + Method { + name: "setAmbient" + Parameter { name: "color"; type: "QColor" } + } + Method { + name: "setSpecular" + Parameter { name: "specular"; type: "QColor" } + } + Method { + name: "setShininess" + Parameter { name: "shininess"; type: "float" } + } + Method { + name: "setDiffuse" + Parameter { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setTextureScale" + Parameter { name: "textureScale"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QDiffuseSpecularMapMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/DiffuseSpecularMapMaterial 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "ambient"; type: "QColor" } + Property { name: "shininess"; type: "float" } + Property { name: "specular"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "textureScale"; type: "float" } + Signal { + name: "ambientChanged" + Parameter { name: "ambient"; type: "QColor" } + } + Signal { + name: "diffuseChanged" + Parameter { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Signal { + name: "specularChanged" + Parameter { name: "specular"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Signal { + name: "shininessChanged" + Parameter { name: "shininess"; type: "float" } + } + Signal { + name: "textureScaleChanged" + Parameter { name: "textureScale"; type: "float" } + } + Method { + name: "setAmbient" + Parameter { name: "ambient"; type: "QColor" } + } + Method { + name: "setDiffuse" + Parameter { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setSpecular" + Parameter { name: "specular"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setShininess" + Parameter { name: "shininess"; type: "float" } + } + Method { + name: "setTextureScale" + Parameter { name: "textureScale"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QExtrudedTextGeometry" + prototype: "Qt3DRender::QGeometry" + exports: ["Qt3D.Extras/ExtrudedTextGeometry 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "extrusionLength"; type: "float" } + Property { + name: "positionAttribute" + type: "Qt3DRender::QAttribute" + isReadonly: true + isPointer: true + } + Property { + name: "normalAttribute" + type: "Qt3DRender::QAttribute" + isReadonly: true + isPointer: true + } + Property { + name: "indexAttribute" + type: "Qt3DRender::QAttribute" + isReadonly: true + isPointer: true + } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "depthChanged" + Parameter { name: "extrusionLength"; type: "float" } + } + Method { + name: "setText" + Parameter { name: "text"; type: "string" } + } + Method { + name: "setFont" + Parameter { name: "font"; type: "QFont" } + } + Method { + name: "setDepth" + Parameter { name: "extrusionLength"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QExtrudedTextMesh" + prototype: "Qt3DRender::QGeometryRenderer" + exports: ["Qt3D.Extras/ExtrudedTextMesh 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "depth"; type: "float" } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "depthChanged" + Parameter { name: "depth"; type: "float" } + } + Method { + name: "setText" + Parameter { name: "text"; type: "string" } + } + Method { + name: "setFont" + Parameter { name: "font"; type: "QFont" } + } + Method { + name: "setDepth" + Parameter { name: "depth"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QFirstPersonCameraController" + prototype: "Qt3DCore::QEntity" + 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] + Property { name: "surface"; type: "QObject"; isPointer: true } + Property { name: "window"; type: "QObject"; isPointer: true } + Property { name: "viewportRect"; type: "QRectF" } + Property { name: "clearColor"; type: "QColor" } + Property { name: "camera"; type: "Qt3DCore::QEntity"; isPointer: true } + Property { name: "externalRenderTargetSize"; type: "QSize" } + Property { name: "frustumCulling"; type: "bool" } + Property { name: "gamma"; revision: 9; type: "float" } + Signal { + name: "viewportRectChanged" + Parameter { name: "viewportRect"; type: "QRectF" } + } + Signal { + name: "clearColorChanged" + Parameter { name: "clearColor"; type: "QColor" } + } + Signal { + name: "cameraChanged" + Parameter { name: "camera"; type: "Qt3DCore::QEntity"; isPointer: true } + } + Signal { + name: "surfaceChanged" + Parameter { name: "surface"; type: "QObject"; isPointer: true } + } + Signal { + name: "externalRenderTargetSizeChanged" + Parameter { name: "size"; type: "QSize" } + } + Signal { + name: "frustumCullingEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "gammaChanged" + Parameter { name: "gamma"; type: "float" } + } + Method { + name: "setViewportRect" + Parameter { name: "viewportRect"; type: "QRectF" } + } + Method { + name: "setClearColor" + Parameter { name: "clearColor"; type: "QColor" } + } + Method { + name: "setCamera" + Parameter { name: "camera"; type: "Qt3DCore::QEntity"; isPointer: true } + } + Method { + name: "setSurface" + Parameter { name: "surface"; type: "QObject"; isPointer: true } + } + Method { + name: "setExternalRenderTargetSize" + Parameter { name: "size"; type: "QSize" } + } + Method { + name: "setFrustumCullingEnabled" + Parameter { name: "enabled"; type: "bool" } + } + Method { + name: "setGamma" + Parameter { name: "gamma"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QGoochMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/GoochMaterial 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "diffuse"; type: "QColor" } + Property { name: "specular"; type: "QColor" } + Property { name: "cool"; type: "QColor" } + Property { name: "warm"; type: "QColor" } + Property { name: "alpha"; type: "float" } + Property { name: "beta"; type: "float" } + Property { name: "shininess"; type: "float" } + Signal { + name: "diffuseChanged" + Parameter { name: "diffuse"; type: "QColor" } + } + Signal { + name: "specularChanged" + Parameter { name: "specular"; type: "QColor" } + } + Signal { + name: "coolChanged" + Parameter { name: "cool"; type: "QColor" } + } + Signal { + name: "warmChanged" + Parameter { name: "warm"; type: "QColor" } + } + Signal { + name: "alphaChanged" + Parameter { name: "alpha"; type: "float" } + } + Signal { + name: "betaChanged" + Parameter { name: "beta"; type: "float" } + } + Signal { + name: "shininessChanged" + Parameter { name: "shininess"; type: "float" } + } + Method { + name: "setDiffuse" + Parameter { name: "diffuse"; type: "QColor" } + } + Method { + name: "setSpecular" + Parameter { name: "specular"; type: "QColor" } + } + Method { + name: "setCool" + Parameter { name: "cool"; type: "QColor" } + } + Method { + name: "setWarm" + Parameter { name: "warm"; type: "QColor" } + } + Method { + name: "setAlpha" + Parameter { name: "alpha"; type: "float" } + } + Method { + name: "setBeta" + Parameter { name: "beta"; type: "float" } + } + Method { + name: "setShininess" + Parameter { name: "shininess"; type: "float" } + } + } + 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" } + Signal { + name: "baseColorChanged" + Parameter { name: "baseColor"; type: "QColor" } + } + Signal { + name: "metalnessChanged" + Parameter { name: "metalness"; type: "float" } + } + Signal { + name: "roughnessChanged" + Parameter { name: "roughness"; type: "float" } + } + Method { + name: "setBaseColor" + Parameter { name: "baseColor"; type: "QColor" } + } + Method { + name: "setMetalness" + Parameter { name: "metalness"; type: "float" } + } + Method { + name: "setRoughness" + Parameter { name: "roughness"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QMorphPhongMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/MorphPhongMaterial 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "ambient"; type: "QColor" } + Property { name: "diffuse"; type: "QColor" } + Property { name: "specular"; type: "QColor" } + Property { name: "shininess"; type: "float" } + Property { name: "interpolator"; type: "float" } + Signal { + name: "ambientChanged" + Parameter { name: "ambient"; type: "QColor" } + } + Signal { + name: "diffuseChanged" + Parameter { name: "diffuse"; type: "QColor" } + } + Signal { + name: "specularChanged" + Parameter { name: "specular"; type: "QColor" } + } + Signal { + name: "shininessChanged" + Parameter { name: "shininess"; type: "float" } + } + Signal { + name: "interpolatorChanged" + Parameter { name: "interpolator"; type: "float" } + } + Method { + name: "setAmbient" + Parameter { name: "ambient"; type: "QColor" } + } + Method { + name: "setDiffuse" + Parameter { name: "diffuse"; type: "QColor" } + } + Method { + name: "setSpecular" + Parameter { name: "specular"; type: "QColor" } + } + Method { + name: "setShininess" + Parameter { name: "shininess"; type: "float" } + } + Method { + name: "setInterpolator" + Parameter { name: "interpolator"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QNormalDiffuseMapAlphaMaterial" + prototype: "Qt3DExtras::QNormalDiffuseMapMaterial" + exports: ["Qt3D.Extras/NormalDiffuseMapAlphaMaterial 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "Qt3DExtras::QNormalDiffuseMapMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/NormalDiffuseMapMaterial 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "ambient"; type: "QColor" } + Property { name: "specular"; type: "QColor" } + Property { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "normal"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "shininess"; type: "float" } + Property { name: "textureScale"; type: "float" } + Signal { + name: "ambientChanged" + Parameter { name: "ambient"; type: "QColor" } + } + Signal { + name: "diffuseChanged" + Parameter { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Signal { + name: "normalChanged" + Parameter { name: "normal"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Signal { + name: "specularChanged" + Parameter { name: "specular"; type: "QColor" } + } + Signal { + name: "shininessChanged" + Parameter { name: "shininess"; type: "float" } + } + Signal { + name: "textureScaleChanged" + Parameter { name: "textureScale"; type: "float" } + } + Method { + name: "setAmbient" + Parameter { name: "ambient"; type: "QColor" } + } + Method { + name: "setSpecular" + Parameter { name: "specular"; type: "QColor" } + } + Method { + name: "setDiffuse" + Parameter { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setNormal" + Parameter { name: "normal"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setShininess" + Parameter { name: "shininess"; type: "float" } + } + Method { + name: "setTextureScale" + Parameter { name: "textureScale"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QNormalDiffuseSpecularMapMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/NormalDiffuseSpecularMapMaterial 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "ambient"; type: "QColor" } + Property { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "normal"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "specular"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "shininess"; type: "float" } + Property { name: "textureScale"; type: "float" } + Signal { + name: "ambientChanged" + Parameter { name: "ambient"; type: "QColor" } + } + Signal { + name: "diffuseChanged" + Parameter { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Signal { + name: "normalChanged" + Parameter { name: "normal"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Signal { + name: "specularChanged" + Parameter { name: "specular"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Signal { + name: "shininessChanged" + Parameter { name: "shininess"; type: "float" } + } + Signal { + name: "textureScaleChanged" + Parameter { name: "textureScale"; type: "float" } + } + Method { + name: "setAmbient" + Parameter { name: "ambient"; type: "QColor" } + } + Method { + name: "setDiffuse" + Parameter { name: "diffuse"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setNormal" + Parameter { name: "normal"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setSpecular" + Parameter { name: "specular"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setShininess" + Parameter { name: "shininess"; type: "float" } + } + Method { + name: "setTextureScale" + Parameter { name: "textureScale"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QOrbitCameraController" + prototype: "Qt3DCore::QEntity" + 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 { + name: "Qt3DExtras::QPerVertexColorMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/PerVertexColorMaterial 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "Qt3DExtras::QPhongAlphaMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/PhongAlphaMaterial 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "ambient"; type: "QColor" } + Property { name: "diffuse"; type: "QColor" } + Property { name: "specular"; type: "QColor" } + Property { name: "shininess"; type: "float" } + Property { name: "alpha"; type: "float" } + Property { name: "sourceRgbArg"; type: "Qt3DRender::QBlendEquationArguments::Blending" } + Property { name: "destinationRgbArg"; type: "Qt3DRender::QBlendEquationArguments::Blending" } + Property { name: "sourceAlphaArg"; type: "Qt3DRender::QBlendEquationArguments::Blending" } + Property { + name: "destinationAlphaArg" + type: "Qt3DRender::QBlendEquationArguments::Blending" + } + Property { name: "blendFunctionArg"; type: "Qt3DRender::QBlendEquation::BlendFunction" } + Signal { + name: "ambientChanged" + Parameter { name: "ambient"; type: "QColor" } + } + Signal { + name: "diffuseChanged" + Parameter { name: "diffuse"; type: "QColor" } + } + Signal { + name: "specularChanged" + Parameter { name: "specular"; type: "QColor" } + } + Signal { + name: "shininessChanged" + Parameter { name: "shininess"; type: "float" } + } + Signal { + name: "alphaChanged" + Parameter { name: "alpha"; type: "float" } + } + Signal { + name: "sourceRgbArgChanged" + Parameter { name: "sourceRgbArg"; type: "Qt3DRender::QBlendEquationArguments::Blending" } + } + Signal { + name: "destinationRgbArgChanged" + Parameter { name: "destinationRgbArg"; type: "Qt3DRender::QBlendEquationArguments::Blending" } + } + Signal { + name: "sourceAlphaArgChanged" + Parameter { name: "sourceAlphaArg"; type: "Qt3DRender::QBlendEquationArguments::Blending" } + } + Signal { + name: "destinationAlphaArgChanged" + Parameter { + name: "destinationAlphaArg" + type: "Qt3DRender::QBlendEquationArguments::Blending" + } + } + Signal { + name: "blendFunctionArgChanged" + Parameter { name: "blendFunctionArg"; type: "Qt3DRender::QBlendEquation::BlendFunction" } + } + Method { + name: "setAmbient" + Parameter { name: "ambient"; type: "QColor" } + } + Method { + name: "setDiffuse" + Parameter { name: "diffuse"; type: "QColor" } + } + Method { + name: "setSpecular" + Parameter { name: "specular"; type: "QColor" } + } + Method { + name: "setShininess" + Parameter { name: "shininess"; type: "float" } + } + Method { + name: "setAlpha" + Parameter { name: "alpha"; type: "float" } + } + Method { + name: "setSourceRgbArg" + Parameter { name: "sourceRgbArg"; type: "Qt3DRender::QBlendEquationArguments::Blending" } + } + Method { + name: "setDestinationRgbArg" + Parameter { name: "destinationRgbArg"; type: "Qt3DRender::QBlendEquationArguments::Blending" } + } + Method { + name: "setSourceAlphaArg" + Parameter { name: "sourceAlphaArg"; type: "Qt3DRender::QBlendEquationArguments::Blending" } + } + Method { + name: "setDestinationAlphaArg" + Parameter { + name: "destinationAlphaArg" + type: "Qt3DRender::QBlendEquationArguments::Blending" + } + } + Method { + name: "setBlendFunctionArg" + Parameter { name: "blendFunctionArg"; type: "Qt3DRender::QBlendEquation::BlendFunction" } + } + } + Component { + name: "Qt3DExtras::QPhongMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/PhongMaterial 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "ambient"; type: "QColor" } + Property { name: "diffuse"; type: "QColor" } + Property { name: "specular"; type: "QColor" } + Property { name: "shininess"; type: "float" } + Signal { + name: "ambientChanged" + Parameter { name: "ambient"; type: "QColor" } + } + Signal { + name: "diffuseChanged" + Parameter { name: "diffuse"; type: "QColor" } + } + Signal { + name: "specularChanged" + Parameter { name: "specular"; type: "QColor" } + } + Signal { + name: "shininessChanged" + Parameter { name: "shininess"; type: "float" } + } + Method { + name: "setAmbient" + Parameter { name: "ambient"; type: "QColor" } + } + Method { + name: "setDiffuse" + Parameter { name: "diffuse"; type: "QColor" } + } + Method { + name: "setSpecular" + Parameter { name: "specular"; type: "QColor" } + } + Method { + name: "setShininess" + Parameter { name: "shininess"; type: "float" } + } + } + Component { name: "Qt3DExtras::QPlaneGeometry" prototype: "Qt3DRender::QGeometry" exports: ["Qt3D.Extras/PlaneGeometry 2.0"] @@ -525,6 +1263,39 @@ Module { } } Component { + name: "Qt3DExtras::QSkyboxEntity" + prototype: "Qt3DCore::QEntity" + exports: ["Qt3D.Extras/SkyboxEntity 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "baseName"; type: "string" } + Property { name: "extension"; type: "string" } + Property { name: "gammaCorrect"; revision: 9; type: "bool" } + Signal { + name: "baseNameChanged" + Parameter { name: "path"; type: "string" } + } + Signal { + name: "extensionChanged" + Parameter { name: "extension"; type: "string" } + } + Signal { + name: "gammaCorrectEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Method { + name: "setBaseName" + Parameter { name: "path"; type: "string" } + } + Method { + name: "setExtension" + Parameter { name: "extension"; type: "string" } + } + Method { + name: "setGammaCorrectEnabled" + Parameter { name: "enabled"; type: "bool" } + } + } + Component { name: "Qt3DExtras::QSphereGeometry" prototype: "Qt3DRender::QGeometry" exports: ["Qt3D.Extras/SphereGeometry 2.0"] @@ -639,6 +1410,112 @@ Module { } } Component { + name: "Qt3DExtras::QText2DEntity" + prototype: "Qt3DCore::QEntity" + exports: ["Qt3D.Extras/Text2DEntity 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "font"; type: "QFont" } + Property { name: "text"; type: "string" } + Property { name: "color"; type: "QColor" } + Property { name: "width"; type: "float" } + Property { name: "height"; type: "float" } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "widthChanged" + Parameter { name: "width"; type: "float" } + } + Signal { + name: "heightChanged" + Parameter { name: "height"; type: "float" } + } + } + Component { + name: "Qt3DExtras::QTextureMaterial" + prototype: "Qt3DRender::QMaterial" + exports: ["Qt3D.Extras/TextureMaterial 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "texture"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "textureOffset"; type: "QVector2D" } + Signal { + name: "textureChanged" + Parameter { name: "texture"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Signal { + name: "textureOffsetChanged" + Parameter { name: "textureOffset"; type: "QVector2D" } + } + Method { + name: "setTexture" + Parameter { name: "texture"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setTextureOffset" + Parameter { name: "textureOffset"; type: "QVector2D" } + } + } + Component { + name: "Qt3DExtras::QTexturedMetalRoughMaterial" + prototype: "Qt3DRender::QMaterial" + 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 } + } + Signal { + name: "ambientOcclusionChanged" + Parameter { name: "ambientOcclusion"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + 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 } + } + } + Component { name: "Qt3DExtras::QTorusGeometry" prototype: "Qt3DRender::QGeometry" exports: ["Qt3D.Extras/TorusGeometry 2.0"] @@ -746,6 +1623,7 @@ Module { Parameter { name: "minorRadius"; type: "float" } } } + Component { name: "Qt3DRender::QFrameGraphNode"; prototype: "Qt3DCore::QNode" } Component { name: "Qt3DRender::QGeometry" prototype: "Qt3DCore::QNode" @@ -883,306 +1761,8 @@ Module { } } Component { - prototype: "Qt3DCore::QNode" - name: "Qt3D.Extras/DefaultAlphaEffect 2.0" - exports: ["Qt3D.Extras/DefaultAlphaEffect 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "vertexES"; type: "string" } - Property { name: "fragmentES"; type: "string" } - Property { name: "vertex"; type: "string" } - Property { name: "fragment"; type: "string" } - Property { name: "sourceRgbArg"; type: "int" } - Property { name: "destinationRgbArg"; type: "int" } - Property { name: "sourceAlphaArg"; type: "int" } - Property { name: "destinationAlphaArg"; type: "int" } - Property { name: "blendFunctionArg"; type: "int" } - } - Component { - prototype: "Qt3DCore::QNode" - name: "Qt3D.Extras/DefaultEffect 2.0" - exports: ["Qt3D.Extras/DefaultEffect 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "vertexES"; type: "string" } - Property { name: "fragmentES"; type: "string" } - Property { name: "vertex"; type: "string" } - Property { name: "fragment"; type: "string" } - } - Component { - prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/DiffuseMapMaterial 2.0" - exports: ["Qt3D.Extras/DiffuseMapMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "ambient"; type: "QColor" } - Property { name: "specular"; type: "QColor" } - Property { name: "shininess"; type: "double" } - Property { name: "textureScale"; type: "double" } - Property { name: "diffuse"; type: "QUrl" } - 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 { - prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/DiffuseSpecularMapMaterial 2.0" - exports: ["Qt3D.Extras/DiffuseSpecularMapMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "ambient"; type: "QColor" } - Property { name: "shininess"; type: "double" } - Property { name: "textureScale"; type: "double" } - Property { name: "diffuse"; type: "QUrl" } - Property { name: "specular"; type: "QUrl" } - 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 { - prototype: "Qt3DCore::QNode" - name: "Qt3D.Extras/FirstPersonCameraController 2.0" - exports: ["Qt3D.Extras/FirstPersonCameraController 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "camera"; type: "Qt3DRender::QCamera"; isPointer: true } - Property { name: "linearSpeed"; type: "double" } - Property { name: "lookSpeed"; type: "double" } - Property { name: "acceleration"; type: "double" } - Property { name: "deceleration"; type: "double" } - } - Component { - prototype: "Qt3DCore::QNode" - name: "Qt3D.Extras/ForwardRenderer 2.0" - exports: ["Qt3D.Extras/ForwardRenderer 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "camera"; type: "Qt3DCore::QEntity"; isPointer: true } - Property { name: "clearColor"; type: "QColor" } - Property { name: "viewportRect"; type: "QRectF" } - Property { name: "window"; type: "QObject"; isPointer: true } - } - Component { + name: "Qt3DRender::QMaterial" prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/GoochMaterial 2.0" - exports: ["Qt3D.Extras/GoochMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "diffuse"; type: "QColor" } - Property { name: "specular"; type: "QColor" } - Property { name: "coolColor"; type: "QColor" } - Property { name: "warmColor"; type: "QColor" } - Property { name: "alpha"; type: "double" } - Property { name: "beta"; type: "double" } - Property { name: "shininess"; type: "double" } - 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 { - prototype: "Qt3DCore::QNode" - name: "Qt3D.Extras/NormalDiffuseMapAlphaEffect 2.0" - exports: ["Qt3D.Extras/NormalDiffuseMapAlphaEffect 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "vertexES"; type: "string" } - Property { name: "fragmentES"; type: "string" } - Property { name: "vertex"; type: "string" } - Property { name: "fragment"; type: "string" } - } - Component { - prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/NormalDiffuseMapAlphaMaterial 2.0" - exports: ["Qt3D.Extras/NormalDiffuseMapAlphaMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "ambient"; type: "QColor" } - Property { name: "specular"; type: "QColor" } - Property { name: "shininess"; type: "double" } - Property { name: "textureScale"; type: "double" } - Property { name: "diffuse"; type: "QUrl" } - Property { name: "normal"; type: "QUrl" } - 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 { - prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/NormalDiffuseMapMaterial 2.0" - exports: ["Qt3D.Extras/NormalDiffuseMapMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "ambient"; type: "QColor" } - Property { name: "specular"; type: "QColor" } - Property { name: "shininess"; type: "double" } - Property { name: "textureScale"; type: "double" } - Property { name: "diffuse"; type: "QUrl" } - Property { name: "normal"; type: "QUrl" } - 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 { - prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/NormalDiffuseSpecularMapMaterial 2.0" - exports: ["Qt3D.Extras/NormalDiffuseSpecularMapMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "ambient"; type: "QColor" } - Property { name: "shininess"; type: "double" } - Property { name: "textureScale"; type: "double" } - Property { name: "diffuse"; type: "QUrl" } - Property { name: "specular"; type: "QUrl" } - Property { name: "normal"; type: "QUrl" } - 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 { - prototype: "Qt3DCore::QNode" - name: "Qt3D.Extras/OrbitCameraController 2.0" - exports: ["Qt3D.Extras/OrbitCameraController 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "camera"; type: "Qt3DRender::QCamera"; isPointer: true } - Property { name: "linearSpeed"; type: "double" } - Property { name: "lookSpeed"; type: "double" } - Property { name: "zoomLimit"; type: "double" } - Method { - name: "clampInputs" - type: "QVariant" - Parameter { name: "input1"; type: "QVariant" } - Parameter { name: "input2"; type: "QVariant" } - } - Method { - name: "zoomDistance" - type: "QVariant" - Parameter { name: "firstPoint"; type: "QVariant" } - Parameter { name: "secondPoint"; type: "QVariant" } - } - } - Component { - prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/PerVertexColorMaterial 2.0" - exports: ["Qt3D.Extras/PerVertexColorMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - 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 { - prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/PhongAlphaMaterial 2.0" - exports: ["Qt3D.Extras/PhongAlphaMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "ambient"; type: "QColor" } - Property { name: "diffuse"; type: "QColor" } - Property { name: "specular"; type: "QColor" } - Property { name: "shininess"; type: "double" } - Property { name: "alpha"; type: "double" } - Property { name: "sourceRgbArg"; type: "int" } - Property { name: "destinationRgbArg"; type: "int" } - Property { name: "sourceAlphaArg"; type: "int" } - Property { name: "destinationAlphaArg"; type: "int" } - Property { name: "blendFunctionArg"; type: "int" } - Property { name: "effect"; type: "Qt3DRender::QEffect"; isPointer: true } - Signal { - name: "effectChanged" - Parameter { name: "effect"; type: "QEffect"; isPointer: true } - } - Method { - name: "setEffect" - Parameter { name: "effect"; type: "QEffect"; isPointer: true } - } - } - Component { - prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/PhongMaterial 2.0" - exports: ["Qt3D.Extras/PhongMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "ambient"; type: "QColor" } - Property { name: "diffuse"; type: "QColor" } - Property { name: "specular"; type: "QColor" } - Property { name: "shininess"; type: "double" } - 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 { - prototype: "Qt3DCore::QComponent" - name: "Qt3D.Extras/TextureMaterial 2.0" - exports: ["Qt3D.Extras/TextureMaterial 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "texture"; type: "Qt3DRender::QTexture2D"; isPointer: true } - Property { name: "textureOffset"; type: "QVector2D" } Property { name: "effect"; type: "Qt3DRender::QEffect"; isPointer: true } Signal { name: "effectChanged" @@ -1193,4 +1773,5 @@ Module { Parameter { name: "effect"; type: "QEffect"; isPointer: true } } } + Component { name: "Qt3DRender::QTechniqueFilter"; prototype: "Qt3DRender::QFrameGraphNode" } } diff --git a/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp b/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp index 55af6432b..879b79294 100644 --- a/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp +++ b/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp @@ -38,69 +38,76 @@ ****************************************************************************/ #include "qt3dquick3dextrasplugin.h" -#include <Qt3DExtras/qcuboidmesh.h> + +#include <Qt3DExtras/qconegeometry.h> #include <Qt3DExtras/qconemesh.h> +#include <Qt3DExtras/qcuboidgeometry.h> +#include <Qt3DExtras/qcuboidmesh.h> +#include <Qt3DExtras/qcylindergeometry.h> #include <Qt3DExtras/qcylindermesh.h> +#include <Qt3DExtras/qdiffusemapmaterial.h> +#include <Qt3DExtras/qdiffusespecularmapmaterial.h> +#include <Qt3DExtras/qextrudedtextgeometry.h> +#include <Qt3DExtras/qextrudedtextmesh.h> +#include <Qt3DExtras/qfirstpersoncameracontroller.h> +#include <Qt3DExtras/qforwardrenderer.h> +#include <Qt3DExtras/qgoochmaterial.h> +#include <Qt3DExtras/qmetalroughmaterial.h> +#include <Qt3DExtras/qmorphphongmaterial.h> +#include <Qt3DExtras/qnormaldiffusemapalphamaterial.h> +#include <Qt3DExtras/qnormaldiffusemapmaterial.h> +#include <Qt3DExtras/qnormaldiffusespecularmapmaterial.h> +#include <Qt3DExtras/qorbitcameracontroller.h> +#include <Qt3DExtras/qpervertexcolormaterial.h> +#include <Qt3DExtras/qphongalphamaterial.h> +#include <Qt3DExtras/qphongmaterial.h> +#include <Qt3DExtras/qplanegeometry.h> #include <Qt3DExtras/qplanemesh.h> +#include <Qt3DExtras/qskyboxentity.h> +#include <Qt3DExtras/qspheregeometry.h> #include <Qt3DExtras/qspheremesh.h> -#include <Qt3DExtras/qtorusmesh.h> +#include <Qt3DExtras/qtext2dentity.h> +#include <Qt3DExtras/qtexturedmetalroughmaterial.h> +#include <Qt3DExtras/qtexturematerial.h> #include <Qt3DExtras/qtorusgeometry.h> -#include <Qt3DExtras/qspheregeometry.h> -#include <Qt3DExtras/qcuboidgeometry.h> -#include <Qt3DExtras/qplanegeometry.h> -#include <Qt3DExtras/qconegeometry.h> -#include <Qt3DExtras/qcylindergeometry.h> -#include <Qt3DExtras/qtext3dgeometry.h> -#include <Qt3DExtras/qtext3dmesh.h> -#include <Qt3DExtras/qkeyframeanimation.h> -#include <Qt3DExtras/qanimationcontroller.h> -#include <Qt3DExtras/qabstractanimation.h> -#include <Qt3DExtras/qmorphinganimation.h> -#include <Qt3DExtras/qanimationgroup.h> -#include <Qt3DExtras/qmorphtarget.h> +#include <Qt3DExtras/qtorusmesh.h> -#include <Qt3DQuickExtras/private/quick3dkeyframeanimation_p.h> -#include <Qt3DQuickExtras/private/quick3danimationgroup_p.h> -#include <Qt3DQuickExtras/private/quick3danimationcontroller_p.h> -#include <Qt3DQuickExtras/private/quick3dmorphtarget_p.h> -#include <Qt3DQuickExtras/private/quick3dmorphinganimation_p.h> +#include <Qt3DQuickExtras/private/quick3dlevelofdetailloader_p.h> #include <QtQml/qqml.h> QT_BEGIN_NAMESPACE -static const struct { - const char *type; - int major, minor; -} qmldir [] = { - // Materials - { "PhongMaterial", 2, 0 }, - { "PhongAlphaMaterial", 2, 0 }, - { "DiffuseMapMaterial", 2, 0 }, - { "DiffuseSpecularMapMaterial", 2, 0 }, - { "NormalDiffuseMapAlphaMaterial", 2, 0 }, - { "NormalDiffuseMapMaterial", 2, 0 }, - { "NormalDiffuseSpecularMapMaterial", 2, 0 }, - { "PerVertexColorMaterial", 2, 0 }, - { "GoochMaterial", 2, 0 }, - { "TextureMaterial", 2, 0 }, - // Effects - { "DefaultEffect", 2, 0 }, - { "DefaultAlphaEffect", 2, 0 }, - { "NormalDiffuseMapAlphaEffect", 2, 0 }, - // Scene Graph - { "LevelOfDetailLoader", 2, 2 }, - // FrameGraphs - { "ForwardRenderer", 2, 0 }, +void Qt3DQuick3DExtrasPlugin::registerTypes(const char *uri) +{ + // Framegraphs + qmlRegisterType<Qt3DExtras::QForwardRenderer>(uri, 2, 0, "ForwardRenderer"); + qmlRegisterRevision<Qt3DExtras::QForwardRenderer, 9>(uri, 2, 9); + // Entities - { "SkyboxEntity", 2, 0 }, + qmlRegisterType<Qt3DExtras::QSkyboxEntity>(uri, 2, 0, "SkyboxEntity"); + qmlRegisterRevision<Qt3DExtras::QSkyboxEntity, 9>(uri, 2, 9); + qmlRegisterType<Qt3DExtras::Extras::Quick::Quick3DLevelOfDetailLoader>(uri, 2, 9, "LevelOfDetailLoader"); + // Camera Controllers - { "OrbitCameraController", 2, 0 }, - { "FirstPersonCameraController", 2, 0 }, -}; + qmlRegisterType<Qt3DExtras::QFirstPersonCameraController>(uri, 2, 0, "FirstPersonCameraController"); + qmlRegisterType<Qt3DExtras::QOrbitCameraController>(uri, 2, 0, "OrbitCameraController"); + + // Materials + qmlRegisterType<Qt3DExtras::QPhongMaterial>(uri, 2, 0, "PhongMaterial"); + qmlRegisterType<Qt3DExtras::QPhongAlphaMaterial>(uri, 2, 0, "PhongAlphaMaterial"); + qmlRegisterType<Qt3DExtras::QDiffuseMapMaterial>(uri, 2, 0, "DiffuseMapMaterial"); + qmlRegisterType<Qt3DExtras::QDiffuseSpecularMapMaterial>(uri, 2, 0, "DiffuseSpecularMapMaterial"); + qmlRegisterType<Qt3DExtras::QNormalDiffuseMapAlphaMaterial>(uri, 2, 0, "NormalDiffuseMapAlphaMaterial"); + qmlRegisterType<Qt3DExtras::QNormalDiffuseMapMaterial>(uri, 2, 0, "NormalDiffuseMapMaterial"); + qmlRegisterType<Qt3DExtras::QNormalDiffuseSpecularMapMaterial>(uri, 2, 0, "NormalDiffuseSpecularMapMaterial"); + qmlRegisterType<Qt3DExtras::QPerVertexColorMaterial>(uri, 2, 0, "PerVertexColorMaterial"); + qmlRegisterType<Qt3DExtras::QGoochMaterial>(uri, 2, 0, "GoochMaterial"); + qmlRegisterType<Qt3DExtras::QTextureMaterial>(uri, 2, 0, "TextureMaterial"); + qmlRegisterType<Qt3DExtras::QMetalRoughMaterial>(uri, 2, 9, "MetalRoughMaterial"); + qmlRegisterType<Qt3DExtras::QTexturedMetalRoughMaterial>(uri, 2, 9, "TexturedMetalRoughMaterial"); + qmlRegisterType<Qt3DExtras::QMorphPhongMaterial>(uri, 2, 9, "MorphPhongMaterial"); -void Qt3DQuick3DExtrasPlugin::registerTypes(const char *uri) -{ // Meshes qmlRegisterType<Qt3DExtras::QConeMesh>(uri, 2, 0, "ConeMesh"); qmlRegisterType<Qt3DExtras::QConeGeometry>(uri, 2, 0, "ConeGeometry"); @@ -109,31 +116,19 @@ void Qt3DQuick3DExtrasPlugin::registerTypes(const char *uri) qmlRegisterType<Qt3DExtras::QCylinderMesh>(uri, 2, 0, "CylinderMesh"); qmlRegisterType<Qt3DExtras::QCylinderGeometry>(uri, 2, 0, "CylinderGeometry"); qmlRegisterType<Qt3DExtras::QPlaneMesh>(uri, 2, 0, "PlaneMesh"); + qmlRegisterRevision<Qt3DExtras::QPlaneMesh, 9>(uri, 2, 9); qmlRegisterType<Qt3DExtras::QPlaneGeometry>(uri, 2, 0, "PlaneGeometry"); + qmlRegisterRevision<Qt3DExtras::QPlaneGeometry, 9>(uri, 2, 9); qmlRegisterType<Qt3DExtras::QTorusMesh>(uri, 2, 0, "TorusMesh"); qmlRegisterType<Qt3DExtras::QTorusGeometry>(uri, 2, 0, "TorusGeometry"); qmlRegisterType<Qt3DExtras::QSphereMesh>(uri, 2, 0, "SphereMesh"); qmlRegisterType<Qt3DExtras::QSphereGeometry>(uri, 2, 0, "SphereGeometry"); // 3D Text - qmlRegisterType<Qt3DExtras::QText3DGeometry>(uri, 2, 2, "Text3DGeometry"); - qmlRegisterType<Qt3DExtras::QText3DMesh>(uri, 2, 2, "Text3DMesh"); - - qmlRegisterUncreatableType<Qt3DExtras::QAbstractAnimation>(uri, 2, 0, "AbstractAnimation", QStringLiteral("AbstractAnimation is abstract")); - qmlRegisterExtendedType<Qt3DExtras::QKeyframeAnimation, Qt3DExtras::Quick::QQuick3DKeyframeAnimation>(uri, 2, 2, "KeyframeAnimation"); - qmlRegisterExtendedType<Qt3DExtras::QAnimationGroup, Qt3DExtras::Quick::QQuick3DAnimationGroup>(uri, 2, 2, "AnimationGroup"); - qmlRegisterExtendedType<Qt3DExtras::QAnimationController, Qt3DExtras::Quick::QQuick3DAnimationController>(uri, 2, 2, "AnimationController"); - qmlRegisterExtendedType<Qt3DExtras::QMorphingAnimation, Qt3DExtras::Quick::QQuick3DMorphingAnimation>(uri, 2, 2, "MorphingAnimation"); - qmlRegisterExtendedType<Qt3DExtras::QMorphTarget, Qt3DExtras::Quick::QQuick3DMorphTarget>(uri, 2, 2, "MorphTarget"); + qmlRegisterType<Qt3DExtras::QExtrudedTextGeometry>(uri, 2, 9, "ExtrudedTextGeometry"); + qmlRegisterType<Qt3DExtras::QExtrudedTextMesh>(uri, 2, 9, "ExtrudedTextMesh"); - // Register types provided as QML files compiled into the plugin - for (int i = 0; i < int(sizeof(qmldir) / sizeof(qmldir[0])); i++) { - auto path = QLatin1String("qrc:/qt-project.org/imports/Qt3D/Extras/defaults/qml/"); - qmlRegisterType(QUrl(path + qmldir[i].type + QLatin1String(".qml")), - uri, - qmldir[i].major, qmldir[i].minor, - qmldir[i].type); - } + qmlRegisterType<Qt3DExtras::QText2DEntity>(uri, 2, 9, "Text2DEntity"); } diff --git a/src/quick3d/imports/extras/qt3dquick3dextrasplugin.h b/src/quick3d/imports/extras/qt3dquick3dextrasplugin.h index f5ea6a7f1..f24a93b3f 100644 --- a/src/quick3d/imports/extras/qt3dquick3dextrasplugin.h +++ b/src/quick3d/imports/extras/qt3dquick3dextrasplugin.h @@ -46,7 +46,6 @@ static void initResources() { #ifdef QT_STATIC Q_INIT_RESOURCE(qmake_Qt3D_Extras); - Q_INIT_RESOURCE(defaults); Q_INIT_RESOURCE(extras); #endif } diff --git a/src/quick3d/imports/input/plugins.qmltypes b/src/quick3d/imports/input/plugins.qmltypes index 860ab4d68..24655977e 100644 --- a/src/quick3d/imports/input/plugins.qmltypes +++ b/src/quick3d/imports/input/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.Input 2.0' +// 'qmlplugindump -nonrelocatable Qt3D.Input 2.1' Module { - dependencies: ["QtQuick 2.7"] + dependencies: ["QtQuick 2.8"] Component { name: "Qt3DCore::QComponent" prototype: "Qt3DCore::QNode" @@ -16,6 +16,14 @@ Module { 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" } @@ -24,8 +32,17 @@ Module { 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 } @@ -34,6 +51,10 @@ Module { name: "enabledChanged" Parameter { name: "enabled"; type: "bool" } } + Signal { + name: "defaultPropertyTrackingModeChanged" + Parameter { name: "mode"; type: "PropertyTrackingMode" } + } Signal { name: "nodeDestroyed" } Method { name: "setParent" @@ -43,6 +64,10 @@ Module { name: "setEnabled" Parameter { name: "isEnabled"; type: "bool" } } + Method { + name: "setDefaultPropertyTrackingMode" + Parameter { name: "mode"; type: "PropertyTrackingMode" } + } } Component { name: "Qt3DInput::Input::Quick::Quick3DAction" @@ -101,6 +126,7 @@ Module { name: "Qt3DInput::Input::Quick::Quick3DPhysicalDevice" prototype: "Qt3DInput::QAbstractPhysicalDevice" exports: ["Qt3D.Input/QAbstractPhysicalDevice 2.0"] + isCreatable: false exportMetaObjectRevisions: [0] Property { name: "axisSettings"; type: "Qt3DInput::QAxisSetting"; isList: true; isReadonly: true } } @@ -186,6 +212,56 @@ Module { } } Component { + name: "Qt3DInput::QAxisAccumulator" + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Input/AxisAccumulator 2.1"] + exportMetaObjectRevisions: [0] + Enum { + name: "SourceAxisType" + values: { + "Velocity": 0, + "Acceleration": 1 + } + } + Property { name: "sourceAxis"; type: "Qt3DInput::QAxis"; isPointer: true } + Property { name: "sourceAxisType"; type: "SourceAxisType" } + Property { name: "scale"; type: "float" } + Property { name: "value"; type: "float"; isReadonly: true } + Property { name: "velocity"; type: "float"; isReadonly: true } + Signal { + name: "sourceAxisChanged" + Parameter { name: "sourceAxis"; type: "Qt3DInput::QAxis"; isPointer: true } + } + Signal { + name: "sourceAxisTypeChanged" + Parameter { name: "sourceAxisType"; type: "QAxisAccumulator::SourceAxisType" } + } + Signal { + name: "valueChanged" + Parameter { name: "value"; type: "float" } + } + Signal { + name: "velocityChanged" + Parameter { name: "value"; type: "float" } + } + Signal { + name: "scaleChanged" + Parameter { name: "scale"; type: "float" } + } + Method { + name: "setSourceAxis" + Parameter { name: "sourceAxis"; type: "Qt3DInput::QAxis"; isPointer: true } + } + Method { + name: "setSourceAxisType" + Parameter { name: "sourceAxisType"; type: "QAxisAccumulator::SourceAxisType" } + } + Method { + name: "setScale" + Parameter { name: "scale"; type: "float" } + } + } + Component { name: "Qt3DInput::QAxisSetting" prototype: "Qt3DCore::QNode" exports: ["Qt3D.Input/AxisSetting 2.0"] @@ -337,7 +413,6 @@ Module { Component { name: "Qt3DInput::QKeyboardDevice" prototype: "Qt3DInput::QAbstractPhysicalDevice" - exports: ["Qt3D.Input/KeyboardDevice 2.0"] Property { name: "activeInput" type: "Qt3DInput::QKeyboardHandler" @@ -537,12 +612,13 @@ Module { Component { name: "Qt3DInput::QMouseDevice" prototype: "Qt3DInput::QAbstractPhysicalDevice" - exports: ["Qt3D.Input/MouseDevice 2.0"] Enum { name: "Axis" values: { "X": 0, - "Y": 1 + "Y": 1, + "WheelX": 2, + "WheelY": 3 } } Property { name: "sensitivity"; type: "float" } diff --git a/src/quick3d/imports/input/qt3dquick3dinputplugin.cpp b/src/quick3d/imports/input/qt3dquick3dinputplugin.cpp index d31680b4d..5719a2b98 100644 --- a/src/quick3d/imports/input/qt3dquick3dinputplugin.cpp +++ b/src/quick3d/imports/input/qt3dquick3dinputplugin.cpp @@ -37,29 +37,31 @@ ** ****************************************************************************/ -#include <QtQml> -#include <Qt3DInput/qkeyboarddevice.h> -#include <Qt3DInput/qkeyboardhandler.h> -#include <Qt3DInput/qkeyevent.h> -#include <Qt3DInput/qmousedevice.h> -#include <Qt3DInput/qmousehandler.h> -#include <Qt3DInput/qmouseevent.h> +#include "qt3dquick3dinputplugin.h" -#include <Qt3DInput/qaxis.h> -#include <Qt3DInput/qaxisaccumulator.h> -#include <Qt3DInput/qaxissetting.h> +#include <Qt3DInput/qabstractphysicaldevice.h> #include <Qt3DInput/qaction.h> #include <Qt3DInput/qactioninput.h> #include <Qt3DInput/qanalogaxisinput.h> +#include <Qt3DInput/qaxis.h> +#include <Qt3DInput/qaxisaccumulator.h> +#include <Qt3DInput/qaxissetting.h> #include <Qt3DInput/qbuttonaxisinput.h> -#include <Qt3DInput/qinputsequence.h> #include <Qt3DInput/qinputchord.h> -#include <Qt3DInput/qlogicaldevice.h> -#include <Qt3DInput/qabstractphysicaldevice.h> +#include <Qt3DInput/qinputsequence.h> #include <Qt3DInput/qinputsettings.h> +#include <Qt3DInput/qkeyboarddevice.h> +#include <Qt3DInput/qkeyboardhandler.h> +#include <Qt3DInput/qkeyevent.h> +#include <Qt3DInput/qlogicaldevice.h> +#include <Qt3DInput/qmousedevice.h> +#include <Qt3DInput/qmouseevent.h> +#include <Qt3DInput/qmousehandler.h> +#include <QtQml> + #include <Qt3DInput/private/qgenericinputdevice_p.h> -#include <Qt3DQuickInput/private/quick3daxis_p.h> #include <Qt3DQuickInput/private/quick3daction_p.h> +#include <Qt3DQuickInput/private/quick3daxis_p.h> #include <Qt3DQuickInput/private/quick3dinputchord_p.h> #include <Qt3DQuickInput/private/quick3dinputsequence_p.h> #include <Qt3DQuickInput/private/quick3dlogicaldevice_p.h> @@ -69,8 +71,6 @@ # include <Qt3DInput/private/qgamepadinput_p.h> #endif -#include "qt3dquick3dinputplugin.h" - QT_BEGIN_NAMESPACE void Qt3DQuick3DInputPlugin::registerTypes(const char *uri) @@ -81,7 +81,9 @@ void Qt3DQuick3DInputPlugin::registerTypes(const char *uri) qmlRegisterType<Qt3DInput::QInputSettings>(uri, 2, 0, "InputSettings"); qmlRegisterUncreatableType<Qt3DInput::QMouseEvent>(uri, 2, 0, "MouseEvent", QStringLiteral("Events cannot be created")); +#if QT_CONFIG(wheelevent) qmlRegisterUncreatableType<Qt3DInput::QWheelEvent>(uri, 2, 0, "WheelEvent", QStringLiteral("Events cannot be created")); +#endif qmlRegisterType<Qt3DInput::QMouseHandler>(uri, 2, 0, "MouseHandler"); qmlRegisterType<Qt3DInput::QMouseDevice>(uri, 2, 0, "MouseDevice"); diff --git a/src/quick3d/imports/logic/plugins.qmltypes b/src/quick3d/imports/logic/plugins.qmltypes index 0c0ccc847..61b67ca73 100644 --- a/src/quick3d/imports/logic/plugins.qmltypes +++ b/src/quick3d/imports/logic/plugins.qmltypes @@ -7,7 +7,7 @@ import QtQuick.tooling 1.2 // 'qmlplugindump -nonrelocatable Qt3D.Logic 2.0' Module { - dependencies: ["QtQuick 2.7"] + dependencies: ["QtQuick 2.8"] Component { name: "Qt3DCore::QComponent" prototype: "Qt3DCore::QNode" @@ -16,6 +16,14 @@ Module { 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" } @@ -24,8 +32,17 @@ Module { 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 } @@ -34,6 +51,10 @@ Module { name: "enabledChanged" Parameter { name: "enabled"; type: "bool" } } + Signal { + name: "defaultPropertyTrackingModeChanged" + Parameter { name: "mode"; type: "PropertyTrackingMode" } + } Signal { name: "nodeDestroyed" } Method { name: "setParent" @@ -43,6 +64,10 @@ Module { name: "setEnabled" Parameter { name: "isEnabled"; type: "bool" } } + Method { + name: "setDefaultPropertyTrackingMode" + Parameter { name: "mode"; type: "PropertyTrackingMode" } + } } Component { name: "Qt3DLogic::QFrameAction" diff --git a/src/quick3d/imports/logic/qt3dquick3dlogicplugin.cpp b/src/quick3d/imports/logic/qt3dquick3dlogicplugin.cpp index 3f96928b7..f97bc8fc6 100644 --- a/src/quick3d/imports/logic/qt3dquick3dlogicplugin.cpp +++ b/src/quick3d/imports/logic/qt3dquick3dlogicplugin.cpp @@ -37,10 +37,11 @@ ** ****************************************************************************/ -#include <QtQml> -#include <Qt3DLogic/qframeaction.h> #include "qt3dquick3dlogicplugin.h" +#include <Qt3DLogic/qframeaction.h> +#include <QtQml> + QT_BEGIN_NAMESPACE void Qt3DQuick3DLogicPlugin::registerTypes(const char *uri) diff --git a/src/quick3d/imports/render/importsrender.pro b/src/quick3d/imports/render/importsrender.pro index 442068fe7..cc34ff3df 100644 --- a/src/quick3d/imports/render/importsrender.pro +++ b/src/quick3d/imports/render/importsrender.pro @@ -3,7 +3,7 @@ TARGET = quick3drenderplugin TARGETPATH = Qt3D/Render IMPORT_VERSION = 2.0 -QT += core-private qml qml-private 3dcore 3drender 3dquick 3dquick-private 3dquickrender-private +QT += core-private qml qml-private 3dcore 3drender 3drender-private 3dquick 3dquick-private 3dquickrender-private # Qt3D is free of Q_FOREACH - make sure it stays that way: DEFINES += QT_NO_FOREACH diff --git a/src/quick3d/imports/render/plugins.qmltypes b/src/quick3d/imports/render/plugins.qmltypes index 9e6e5fe38..aa0272430 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.0' +// 'qmlplugindump -nonrelocatable Qt3D.Render 2.9' Module { - dependencies: ["QtQuick 2.7"] + dependencies: ["QtQuick 2.8"] Component { name: "QWindow" prototype: "QObject" @@ -25,6 +25,13 @@ Module { "FullScreen": 5 } } + Enum { + name: "AncestorMode" + values: { + "ExcludeTransients": 0, + "IncludeTransients": 1 + } + } Property { name: "title"; type: "string" } Property { name: "modality"; type: "Qt::WindowModality" } Property { name: "flags"; type: "Qt::WindowFlags" } @@ -178,6 +185,14 @@ Module { 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" } @@ -187,8 +202,17 @@ Module { 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 } @@ -197,6 +221,10 @@ Module { name: "enabledChanged" Parameter { name: "enabled"; type: "bool" } } + Signal { + name: "defaultPropertyTrackingModeChanged" + Parameter { name: "mode"; type: "PropertyTrackingMode" } + } Signal { name: "nodeDestroyed" } Method { name: "setParent" @@ -206,6 +234,10 @@ Module { name: "setEnabled" Parameter { name: "isEnabled"; type: "bool" } } + Method { + name: "setDefaultPropertyTrackingMode" + Parameter { name: "mode"; type: "PropertyTrackingMode" } + } } Component { name: "Qt3DCore::Quick::Quick3DNode" @@ -404,7 +436,8 @@ Module { "CubeMapPositiveY": 34071, "CubeMapNegativeY": 34072, "CubeMapPositiveZ": 34073, - "CubeMapNegativeZ": 34074 + "CubeMapNegativeZ": 34074, + "AllFaces": 34075 } } Enum { @@ -446,6 +479,7 @@ Module { Property { name: "comparisonFunction"; type: "ComparisonFunction" } Property { name: "comparisonMode"; type: "ComparisonMode" } Property { name: "layers"; type: "int" } + Property { name: "samples"; type: "int" } Signal { name: "formatChanged" Parameter { name: "format"; type: "TextureFormat" } @@ -494,6 +528,10 @@ Module { name: "layersChanged" Parameter { name: "layers"; type: "int" } } + Signal { + name: "samplesChanged" + Parameter { name: "samples"; type: "int" } + } Method { name: "setFormat" Parameter { name: "format"; type: "TextureFormat" } @@ -538,6 +576,10 @@ Module { name: "setLayers" Parameter { name: "layers"; type: "int" } } + Method { + name: "setSamples" + Parameter { name: "samples"; type: "int" } + } } Component { name: "Qt3DRender::QAbstractTextureImage" @@ -625,7 +667,8 @@ Module { name: "AttributeType" values: { "VertexAttribute": 0, - "IndexAttribute": 1 + "IndexAttribute": 1, + "DrawIndirectAttribute": 2 } } Enum { @@ -651,6 +694,11 @@ Module { Property { name: "byteOffset"; type: "uint" } Property { name: "divisor"; type: "uint" } Property { name: "attributeType"; type: "AttributeType" } + Property { name: "defaultPositionAttributeName"; type: "string"; isReadonly: true } + Property { name: "defaultNormalAttributeName"; type: "string"; isReadonly: true } + Property { name: "defaultColorAttributeName"; type: "string"; isReadonly: true } + Property { name: "defaultTextureCoordinateAttributeName"; type: "string"; isReadonly: true } + Property { name: "defaultTangentAttributeName"; type: "string"; isReadonly: true } Signal { name: "bufferChanged" Parameter { name: "buffer"; type: "QBuffer"; isPointer: true } @@ -660,6 +708,14 @@ Module { Parameter { name: "name"; type: "string" } } Signal { + name: "vertexBaseTypeChanged" + Parameter { name: "vertexBaseType"; type: "VertexBaseType" } + } + Signal { + name: "vertexSizeChanged" + Parameter { name: "vertexSize"; type: "uint" } + } + Signal { name: "dataTypeChanged" Parameter { name: "vertexBaseType"; type: "VertexBaseType" } } @@ -696,6 +752,14 @@ Module { Parameter { name: "name"; type: "string" } } Method { + name: "setVertexBaseType" + Parameter { name: "type"; type: "VertexBaseType" } + } + Method { + name: "setVertexSize" + Parameter { name: "size"; type: "uint" } + } + Method { name: "setDataType" Parameter { name: "type"; type: "VertexBaseType" } } @@ -780,7 +844,8 @@ Module { "OneMinusConstantColor": 32770, "OneMinusConstantAlpha": 32772, "OneMinusSource1Alpha": 32773, - "OneMinusSource1Color": 32774 + "OneMinusSource1Color": 32774, + "OneMinusSource1Color0": 32774 } } Property { name: "sourceRgb"; type: "Blending" } @@ -848,6 +913,9 @@ Module { Component { name: "Qt3DRender::QBuffer" prototype: "Qt3DCore::QNode" + exports: ["Qt3D.Render/BufferBase 2.0", "Qt3D.Render/BufferBase 2.9"] + isCreatable: false + exportMetaObjectRevisions: [0, 9] Enum { name: "BufferType" values: { @@ -856,7 +924,8 @@ Module { "PixelPackBuffer": 35051, "PixelUnpackBuffer": 35052, "UniformBuffer": 35345, - "ShaderStorageBuffer": 37074 + "ShaderStorageBuffer": 37074, + "DrawIndirectBuffer": 36671 } } Enum { @@ -873,9 +942,18 @@ Module { "DynamicCopy": 35050 } } + Enum { + name: "AccessType" + values: { + "Write": 1, + "Read": 2, + "ReadWrite": 3 + } + } Property { name: "type"; type: "BufferType" } Property { name: "usage"; type: "UsageType" } Property { name: "syncData"; type: "bool" } + Property { name: "accessType"; revision: 9; type: "AccessType" } Signal { name: "dataChanged" Parameter { name: "bytes"; type: "QByteArray" } @@ -892,6 +970,11 @@ Module { name: "syncDataChanged" Parameter { name: "syncData"; type: "bool" } } + Signal { + name: "accessTypeChanged" + Parameter { name: "access"; type: "AccessType" } + } + Signal { name: "dataAvailable" } Method { name: "setType" Parameter { name: "type"; type: "BufferType" } @@ -904,6 +987,21 @@ Module { name: "setSyncData" Parameter { name: "syncData"; type: "bool" } } + Method { + name: "setAccessType" + Parameter { name: "access"; type: "AccessType" } + } + Method { + name: "updateData" + Parameter { name: "offset"; type: "int" } + Parameter { name: "bytes"; type: "QByteArray" } + } + } + Component { + name: "Qt3DRender::QBufferCapture" + prototype: "Qt3DRender::QFrameGraphNode" + exports: ["Qt3D.Render/BufferCapture 2.9"] + exportMetaObjectRevisions: [0] } Component { name: "Qt3DRender::QCamera" @@ -927,6 +1025,7 @@ Module { Property { name: "bottom"; type: "float" } Property { name: "top"; type: "float" } Property { name: "projectionMatrix"; type: "QMatrix4x4" } + Property { name: "exposure"; revision: 9; type: "float" } Property { name: "position"; type: "QVector3D" } Property { name: "upVector"; type: "QVector3D" } Property { name: "viewCenter"; type: "QVector3D" } @@ -973,6 +1072,10 @@ Module { Parameter { name: "projectionMatrix"; type: "QMatrix4x4" } } Signal { + name: "exposureChanged" + Parameter { name: "exposure"; type: "float" } + } + Signal { name: "positionChanged" Parameter { name: "position"; type: "QVector3D" } } @@ -1029,6 +1132,10 @@ Module { Parameter { name: "projectionMatrix"; type: "QMatrix4x4" } } Method { + name: "setExposure" + Parameter { name: "exposure"; type: "float" } + } + Method { name: "setPosition" Parameter { name: "position"; type: "QVector3D" } } @@ -1146,6 +1253,7 @@ Module { Property { name: "bottom"; type: "float" } Property { name: "top"; type: "float" } Property { name: "projectionMatrix"; type: "QMatrix4x4" } + Property { name: "exposure"; revision: 9; type: "float" } Signal { name: "projectionTypeChanged" Parameter { name: "projectionType"; type: "QCameraLens::ProjectionType" } @@ -1186,6 +1294,10 @@ Module { name: "projectionMatrixChanged" Parameter { name: "projectionMatrix"; type: "QMatrix4x4" } } + Signal { + name: "exposureChanged" + Parameter { name: "exposure"; type: "float" } + } Method { name: "setProjectionType" Parameter { name: "projectionType"; type: "ProjectionType" } @@ -1226,6 +1338,10 @@ Module { name: "setProjectionMatrix" Parameter { name: "projectionMatrix"; type: "QMatrix4x4" } } + Method { + name: "setExposure" + Parameter { name: "exposure"; type: "float" } + } } Component { name: "Qt3DRender::QCameraSelector" @@ -1496,6 +1612,34 @@ Module { } Component { name: "Qt3DRender::QEffect"; prototype: "Qt3DCore::QNode" } Component { + name: "Qt3DRender::QEnvironmentLight" + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/EnvironmentLight 2.9"] + exportMetaObjectRevisions: [0] + Property { name: "irradiance"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Property { name: "specular"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + Signal { + name: "irradianceChanged" + Parameter { + name: "environmentIrradiance" + type: "Qt3DRender::QAbstractTexture" + isPointer: true + } + } + Signal { + name: "specularChanged" + Parameter { name: "environmentSpecular"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setIrradiance" + Parameter { name: "irradiance"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + Method { + name: "setSpecular" + Parameter { name: "specular"; type: "Qt3DRender::QAbstractTexture"; isPointer: true } + } + } + Component { name: "Qt3DRender::QFilterKey" prototype: "Qt3DCore::QNode" exports: ["Qt3D.Render/FilterKey 2.0"] @@ -1523,7 +1667,6 @@ Module { name: "Qt3DRender::QFrameGraphNode" prototype: "Qt3DCore::QNode" exports: ["Qt3D.Render/FrameGraphNode 2.0"] - isCreatable: false exportMetaObjectRevisions: [0] } Component { @@ -1776,6 +1919,76 @@ Module { } Component { name: "Qt3DRender::QLayerFilter"; prototype: "Qt3DRender::QFrameGraphNode" } Component { + name: "Qt3DRender::QLevelOfDetail" + prototype: "Qt3DCore::QComponent" + exports: ["Qt3D.Render/LevelOfDetail 2.9"] + exportMetaObjectRevisions: [0] + Enum { + name: "ThresholdType" + values: { + "DistanceToCameraThreshold": 0, + "ProjectedScreenPixelSizeThreshold": 1 + } + } + Property { name: "camera"; type: "Qt3DRender::QCamera"; isPointer: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "thresholdType"; type: "ThresholdType" } + Property { name: "thresholds"; type: "QVector<qreal>" } + Property { name: "volumeOverride"; type: "Qt3DRender::QLevelOfDetailBoundingSphere" } + Signal { + name: "cameraChanged" + Parameter { name: "camera"; type: "QCamera"; isPointer: true } + } + Signal { + name: "currentIndexChanged" + Parameter { name: "currentIndex"; type: "int" } + } + Signal { + name: "thresholdTypeChanged" + Parameter { name: "thresholdType"; type: "ThresholdType" } + } + Signal { + name: "thresholdsChanged" + Parameter { name: "thresholds"; type: "QVector<qreal>" } + } + Signal { + name: "volumeOverrideChanged" + Parameter { name: "volumeOverride"; type: "QLevelOfDetailBoundingSphere" } + } + Method { + name: "setCamera" + Parameter { name: "camera"; type: "QCamera"; isPointer: true } + } + Method { + name: "setCurrentIndex" + Parameter { name: "currentIndex"; type: "int" } + } + Method { + name: "setThresholdType" + Parameter { name: "thresholdType"; type: "ThresholdType" } + } + Method { + name: "setThresholds" + Parameter { name: "thresholds"; type: "QVector<qreal>" } + } + Method { + name: "setVolumeOverride" + Parameter { name: "volumeOverride"; type: "QLevelOfDetailBoundingSphere" } + } + Method { + name: "createBoundingSphere" + type: "QLevelOfDetailBoundingSphere" + Parameter { name: "center"; type: "QVector3D" } + Parameter { name: "radius"; type: "float" } + } + } + Component { + name: "Qt3DRender::QLevelOfDetailSwitch" + prototype: "Qt3DRender::QLevelOfDetail" + exports: ["Qt3D.Render/LevelOfDetailSwitch 2.9"] + exportMetaObjectRevisions: [0] + } + Component { name: "Qt3DRender::QMaterial" prototype: "Qt3DCore::QComponent" Property { name: "effect"; type: "Qt3DRender::QEffect"; isPointer: true } @@ -1789,6 +2002,39 @@ Module { } } Component { + name: "Qt3DRender::QMemoryBarrier" + prototype: "Qt3DRender::QFrameGraphNode" + Enum { + name: "Operation" + values: { + "None": 0, + "VertexAttributeArray": 1, + "ElementArray": 2, + "Uniform": 4, + "TextureFetch": 8, + "ShaderImageAccess": 16, + "Command": 32, + "PixelBuffer": 64, + "TextureUpdate": 128, + "BufferUpdate": 256, + "FrameBuffer": 512, + "TransformFeedback": 1024, + "AtomicCounter": 2048, + "ShaderStorage": 4096, + "QueryBuffer": 8192, + "All": -1 + } + } + Signal { + name: "waitOperationsChanged" + Parameter { name: "barrierTypes"; type: "QMemoryBarrier::Operations" } + } + Method { + name: "setWaitOperations" + Parameter { name: "operations"; type: "QMemoryBarrier::Operations" } + } + } + Component { name: "Qt3DRender::QMesh" prototype: "Qt3DRender::QGeometryRenderer" exports: ["Qt3D.Render/Mesh 2.0"] @@ -1913,11 +2159,35 @@ Module { exports: ["Qt3D.Render/PickEvent 2.0"] isCreatable: false exportMetaObjectRevisions: [0] + Enum { + name: "Buttons" + values: { + "LeftButton": 1, + "RightButton": 2, + "MiddleButton": 4, + "BackButton": 8, + "NoButton": 0 + } + } + Enum { + name: "Modifiers" + values: { + "NoModifier": 0, + "ShiftModifier": 33554432, + "ControlModifier": 67108864, + "AltModifier": 134217728, + "MetaModifier": 268435456, + "KeypadModifier": 536870912 + } + } Property { name: "accepted"; type: "bool" } Property { name: "position"; type: "QPointF"; isReadonly: true } Property { name: "distance"; type: "float"; isReadonly: true } Property { name: "localIntersection"; type: "QVector3D"; isReadonly: true } Property { name: "worldIntersection"; type: "QVector3D"; isReadonly: true } + Property { name: "button"; type: "Qt3DRender::QPickEvent::Buttons"; isReadonly: true } + Property { name: "buttons"; type: "int"; isReadonly: true } + Property { name: "modifiers"; type: "int"; isReadonly: true } Signal { name: "acceptedChanged" Parameter { name: "accepted"; type: "bool" } @@ -1946,8 +2216,17 @@ Module { "AllPicks": 1 } } + Enum { + name: "FaceOrientationPickingMode" + values: { + "FrontFace": 1, + "BackFace": 2, + "FrontAndBackFace": 3 + } + } Property { name: "pickMethod"; type: "PickMethod" } Property { name: "pickResultMode"; type: "PickResultMode" } + Property { name: "faceOrientationPickingMode"; type: "FaceOrientationPickingMode" } Signal { name: "pickMethodChanged" Parameter { name: "pickMethod"; type: "QPickingSettings::PickMethod" } @@ -1956,6 +2235,13 @@ Module { name: "pickResultModeChanged" Parameter { name: "pickResult"; type: "QPickingSettings::PickResultMode" } } + Signal { + name: "faceOrientationPickingModeChanged" + Parameter { + name: "faceOrientationPickingMode" + type: "QPickingSettings::FaceOrientationPickingMode" + } + } Method { name: "setPickMethod" Parameter { name: "pickMethod"; type: "PickMethod" } @@ -1964,6 +2250,10 @@ Module { name: "setPickResultMode" Parameter { name: "pickResultMode"; type: "PickResultMode" } } + Method { + name: "setFaceOrientationPickingMode" + Parameter { name: "faceOrientationPickingMode"; type: "FaceOrientationPickingMode" } + } } Component { name: "Qt3DRender::QPointLight" @@ -2054,6 +2344,42 @@ Module { } } Component { + name: "Qt3DRender::QRenderCapture" + prototype: "Qt3DRender::QFrameGraphNode" + exports: ["Qt3D.Render/RenderCapture 2.1"] + exportMetaObjectRevisions: [0] + Method { + name: "requestCapture" + type: "Qt3DRender::QRenderCaptureReply*" + Parameter { name: "captureId"; type: "int" } + } + Method { name: "requestCapture"; revision: 9; type: "Qt3DRender::QRenderCaptureReply*" } + } + Component { + name: "Qt3DRender::QRenderCaptureReply" + prototype: "QObject" + exports: ["Qt3D.Render/RenderCaptureReply 2.1"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "image"; type: "QImage"; isReadonly: true } + Property { name: "captureId"; type: "int"; isReadonly: true } + Property { name: "complete"; type: "bool"; isReadonly: true } + Signal { + name: "completeChanged" + Parameter { name: "isComplete"; type: "bool" } + } + Signal { name: "completed" } + Method { + name: "saveImage" + type: "bool" + Parameter { name: "fileName"; type: "string" } + } + Method { + name: "saveToFile" + Parameter { name: "fileName"; type: "string" } + } + } + Component { name: "Qt3DRender::QRenderPass" prototype: "Qt3DCore::QNode" Property { name: "shaderProgram"; type: "Qt3DRender::QShaderProgram"; isPointer: true } @@ -2119,7 +2445,7 @@ Module { exports: ["Qt3D.Render/RenderSurfaceSelector 2.0"] exportMetaObjectRevisions: [0] Property { name: "surface"; type: "QObject"; isPointer: true } - Property { name: "externalRenderTargetSize"; type: "QSize"; isReadonly: true } + Property { name: "externalRenderTargetSize"; type: "QSize" } Property { name: "surfacePixelRatio"; type: "float" } Signal { name: "surfaceChanged" @@ -2141,6 +2467,10 @@ Module { name: "setSurfacePixelRatio" Parameter { name: "ratio"; type: "float" } } + Method { + name: "setExternalRenderTargetSize" + Parameter { name: "size"; type: "QSize" } + } } Component { name: "Qt3DRender::QRenderTarget"; prototype: "Qt3DCore::QComponent" } Component { @@ -2176,7 +2506,7 @@ Module { Property { name: "texture"; type: "QAbstractTexture"; isPointer: true } Property { name: "mipLevel"; type: "int" } Property { name: "layer"; type: "int" } - Property { name: "face"; type: "QAbstractTexture::CubeMapFace" } + Property { name: "face"; type: "Qt3DRender::QAbstractTexture::CubeMapFace" } Signal { name: "attachmentPointChanged" Parameter { name: "attachmentPoint"; type: "AttachmentPoint" } @@ -2243,6 +2573,17 @@ Module { "Error": 3 } } + Enum { + name: "ComponentType" + values: { + "UnknownComponent": 0, + "GeometryRendererComponent": 1, + "TransformComponent": 2, + "MaterialComponent": 3, + "LightComponent": 4, + "CameraLensComponent": 5 + } + } Property { name: "source"; type: "QUrl" } Property { name: "status"; type: "Status"; isReadonly: true } Signal { @@ -2261,6 +2602,20 @@ Module { name: "setStatus" Parameter { name: "status"; type: "Status" } } + Method { + name: "entity" + revision: 9 + type: "Qt3DCore::QEntity*" + Parameter { name: "entityName"; type: "string" } + } + Method { name: "entityNames"; revision: 9; type: "QStringList" } + Method { + name: "component" + revision: 9 + type: "Qt3DCore::QComponent*" + Parameter { name: "entityName"; type: "string" } + Parameter { name: "componentType"; type: "ComponentType" } + } } Component { name: "Qt3DRender::QScissorTest" @@ -2333,12 +2688,22 @@ Module { "Compute": 5 } } + Enum { + name: "Status" + values: { + "NotReady": 0, + "Ready": 1, + "Error": 2 + } + } Property { name: "vertexShaderCode"; type: "QByteArray" } Property { name: "tessellationControlShaderCode"; type: "QByteArray" } Property { name: "tessellationEvaluationShaderCode"; type: "QByteArray" } Property { name: "geometryShaderCode"; type: "QByteArray" } Property { name: "fragmentShaderCode"; type: "QByteArray" } Property { name: "computeShaderCode"; type: "QByteArray" } + Property { name: "log"; revision: 9; type: "string"; isReadonly: true } + Property { name: "status"; revision: 9; type: "Status"; isReadonly: true } Signal { name: "vertexShaderCodeChanged" Parameter { name: "vertexShaderCode"; type: "QByteArray" } @@ -2363,6 +2728,14 @@ Module { name: "computeShaderCodeChanged" Parameter { name: "computeShaderCode"; type: "QByteArray" } } + Signal { + name: "logChanged" + Parameter { name: "log"; type: "string" } + } + Signal { + name: "statusChanged" + Parameter { name: "status"; type: "Status" } + } Method { name: "setVertexShaderCode" Parameter { name: "vertexShaderCode"; type: "QByteArray" } @@ -2701,6 +3074,7 @@ Module { } Property { name: "source"; type: "QUrl" } Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "mirrored"; type: "bool" } Signal { name: "sourceChanged" Parameter { name: "source"; type: "QUrl" } @@ -2709,23 +3083,40 @@ Module { name: "statusChanged" Parameter { name: "status"; type: "Status" } } + Signal { + name: "mirroredChanged" + Parameter { name: "mirrored"; type: "bool" } + } Method { name: "setSource" Parameter { name: "source"; type: "QUrl" } } + Method { + name: "setMirrored" + Parameter { name: "mirrored"; type: "bool" } + } } Component { name: "Qt3DRender::QTextureLoader" prototype: "Qt3DRender::QAbstractTexture" Property { name: "source"; type: "QUrl" } + Property { name: "mirrored"; type: "bool" } Signal { name: "sourceChanged" Parameter { name: "source"; type: "QUrl" } } + Signal { + name: "mirroredChanged" + Parameter { name: "mirrored"; type: "bool" } + } Method { name: "setSource" Parameter { name: "source"; type: "QUrl" } } + Method { + name: "setMirrored" + Parameter { name: "mirrored"; type: "bool" } + } } Component { name: "Qt3DRender::QTextureRectangle"; prototype: "Qt3DRender::QAbstractTexture" } Component { @@ -2774,14 +3165,23 @@ Module { name: "Qt3DRender::QViewport" prototype: "Qt3DRender::QFrameGraphNode" Property { name: "normalizedRect"; type: "QRectF" } + Property { name: "gamma"; revision: 9; type: "float" } Signal { name: "normalizedRectChanged" Parameter { name: "normalizedRect"; type: "QRectF" } } + Signal { + name: "gammaChanged" + Parameter { name: "gamma"; type: "float" } + } Method { name: "setNormalizedRect" Parameter { name: "normalizedRect"; type: "QRectF" } } + Method { + name: "setGamma" + Parameter { name: "gamma"; type: "float" } + } } Component { name: "Qt3DRender::Render::Quick::Quick3DBuffer" @@ -2790,7 +3190,16 @@ Module { exportMetaObjectRevisions: [0] Property { name: "data"; type: "QVariant" } Signal { name: "bufferDataChanged" } - Signal { name: "bufferDataChanged" } + Method { + name: "updateData" + Parameter { name: "offset"; type: "int" } + Parameter { name: "bytes"; type: "QVariant" } + } + Method { + name: "readBinaryFile" + type: "QVariant" + Parameter { name: "fileUrl"; type: "QUrl" } + } } Component { name: "Qt3DRender::Render::Quick::Quick3DEffect" @@ -2823,6 +3232,13 @@ Module { 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"] @@ -2921,7 +3337,7 @@ Module { Component { name: "Qt3DRender::Render::Quick::Quick3DTextureExtension" defaultProperty: "textureImages" - prototype: "Qt3DRender::QTextureLoader" + prototype: "Qt3DRender::QTextureRectangle" exports: [ "Qt3D.Render/Texture1D 2.0", "Qt3D.Render/Texture1DArray 2.0", diff --git a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp index c6831dbce..f81b1fa53 100644 --- a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp +++ b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp @@ -39,94 +39,99 @@ ****************************************************************************/ #include "qt3dquick3drenderplugin.h" -#include <Qt3DRender/qsceneloader.h> -#include <Qt3DRender/qmesh.h> -#include <Qt3DRender/qrenderpass.h> -#include <Qt3DRender/qshaderprogram.h> -#include <Qt3DRender/qviewport.h> -#include <Qt3DRender/qrenderpassfilter.h> -#include <Qt3DRender/qtechniquefilter.h> -#include <Qt3DRender/qrendertargetselector.h> -#include <Qt3DRender/qrendersurfaceselector.h> -#include <Qt3DRender/qtexture.h> -#include <Qt3DRender/qtechnique.h> +#include <Qt3DRender/qabstractlight.h> +#include <Qt3DRender/qalphacoverage.h> +#include <Qt3DRender/qalphatest.h> +#include <Qt3DRender/qattribute.h> +#include <Qt3DRender/qblendequation.h> +#include <Qt3DRender/qblendequationarguments.h> +#include <Qt3DRender/qbuffer.h> +#include <Qt3DRender/qbuffercapture.h> +#include <Qt3DRender/qcamera.h> +#include <Qt3DRender/qcameralens.h> #include <Qt3DRender/qcameraselector.h> +#include <Qt3DRender/qclearbuffers.h> +#include <Qt3DRender/qclipplane.h> +#include <Qt3DRender/qcolormask.h> +#include <Qt3DRender/qcomputecommand.h> +#include <Qt3DRender/qcullface.h> +#include <Qt3DRender/qdepthtest.h> +#include <Qt3DRender/qdirectionallight.h> +#include <Qt3DRender/qdispatchcompute.h> +#include <Qt3DRender/qdithering.h> #include <Qt3DRender/qeffect.h> -#include <Qt3DRender/qparameter.h> +#include <Qt3DRender/qenvironmentlight.h> #include <Qt3DRender/qfilterkey.h> +#include <Qt3DRender/qfrontface.h> +#include <Qt3DRender/qfrustumculling.h> +#include <Qt3DRender/qgeometry.h> +#include <Qt3DRender/qgeometryrenderer.h> +#include <Qt3DRender/qgraphicsapifilter.h> #include <Qt3DRender/qlayer.h> #include <Qt3DRender/qlevelofdetail.h> +#include <Qt3DRender/qlevelofdetailboundingsphere.h> #include <Qt3DRender/qlevelofdetailswitch.h> -#include <Qt3DRender/qboundingsphere.h> -#include <Qt3DRender/qabstractlight.h> -#include <Qt3DRender/qspotlight.h> -#include <Qt3DRender/qdirectionallight.h> -#include <Qt3DRender/qpointlight.h> -#include <Qt3DRender/qgraphicsapifilter.h> -#include <Qt3DRender/qrenderstate.h> -#include <Qt3DRender/qblendequationarguments.h> -#include <Qt3DRender/qblendequation.h> -#include <Qt3DRender/qalphatest.h> -#include <Qt3DRender/qdepthtest.h> -#include <Qt3DRender/qnodepthmask.h> -#include <Qt3DRender/qcullface.h> -#include <Qt3DRender/qfrontface.h> -#include <Qt3DRender/qstenciltest.h> -#include <Qt3DRender/qstenciltestarguments.h> -#include <Qt3DRender/qscissortest.h> -#include <Qt3DRender/qdithering.h> -#include <Qt3DRender/qrendertargetoutput.h> -#include <Qt3DRender/qclearbuffers.h> -#include <Qt3DRender/qalphacoverage.h> +#include <Qt3DRender/qmemorybarrier.h> +#include <Qt3DRender/qmesh.h> #include <Qt3DRender/qmultisampleantialiasing.h> +#include <Qt3DRender/qnodepthmask.h> +#include <Qt3DRender/qnodraw.h> +#include <Qt3DRender/qobjectpicker.h> +#include <Qt3DRender/qparameter.h> +#include <Qt3DRender/qpickevent.h> +#include <Qt3DRender/qpickingsettings.h> +#include <Qt3DRender/qpointlight.h> #include <Qt3DRender/qpointsize.h> #include <Qt3DRender/qpolygonoffset.h> -#include <Qt3DRender/qcolormask.h> -#include <Qt3DRender/qshaderdata.h> -#include <Qt3DRender/qnodraw.h> -#include <Qt3DRender/qclipplane.h> +#include <Qt3DRender/qrendercapture.h> +#include <Qt3DRender/qrenderpass.h> +#include <Qt3DRender/qrenderpassfilter.h> +#include <Qt3DRender/qrendersettings.h> +#include <Qt3DRender/qrenderstate.h> +#include <Qt3DRender/qrendersurfaceselector.h> +#include <Qt3DRender/qrendertargetoutput.h> +#include <Qt3DRender/qrendertargetselector.h> +#include <Qt3DRender/qsceneloader.h> +#include <Qt3DRender/qscissortest.h> #include <Qt3DRender/qseamlesscubemap.h> +#include <Qt3DRender/qshaderdata.h> +#include <Qt3DRender/qshaderprogram.h> #include <Qt3DRender/qsortpolicy.h> +#include <Qt3DRender/qspotlight.h> +#include <Qt3DRender/qstencilmask.h> #include <Qt3DRender/qstenciloperation.h> #include <Qt3DRender/qstenciloperationarguments.h> -#include <Qt3DRender/qstencilmask.h> -#include <Qt3DRender/qattribute.h> -#include <Qt3DRender/qbuffer.h> -#include <Qt3DRender/qgeometry.h> -#include <Qt3DRender/qgeometryrenderer.h> -#include <Qt3DRender/qobjectpicker.h> -#include <Qt3DRender/qpickevent.h> -#include <Qt3DRender/qfrustumculling.h> -#include <Qt3DRender/qdispatchcompute.h> -#include <Qt3DRender/qcomputecommand.h> -#include <Qt3DRender/qcameralens.h> -#include <Qt3DRender/qcamera.h> -#include <Qt3DRender/qrendersettings.h> -#include <Qt3DRender/qpickingsettings.h> -#include <Qt3DRender/qrendercapture.h> -#include <Qt3DRender/qmemorybarrier.h> +#include <Qt3DRender/qstenciltest.h> +#include <Qt3DRender/qstenciltestarguments.h> +#include <Qt3DRender/qtechnique.h> +#include <Qt3DRender/qtechniquefilter.h> +#include <Qt3DRender/qtexture.h> +#include <Qt3DRender/qviewport.h> + +#include <QtGui/qwindow.h> + +#include <Qt3DQuickRender/private/qt3dquickrender_global_p.h> +#include <Qt3DQuickRender/private/qt3dquickrender_global_p.h> +#include <Qt3DQuickRender/private/quick3dbuffer_p.h> +#include <Qt3DQuickRender/private/quick3deffect_p.h> +#include <Qt3DQuickRender/private/quick3dgeometry_p.h> #include <Qt3DQuickRender/private/quick3dlayerfilter_p.h> -#include <Qt3DQuickRender/private/quick3dtechnique_p.h> #include <Qt3DQuickRender/private/quick3dmaterial_p.h> -#include <Qt3DQuickRender/private/quick3dtechniquefilter_p.h> -#include <Qt3DQuickRender/private/quick3dviewport_p.h> +#include <Qt3DQuickRender/private/quick3dmemorybarrier_p.h> +#include <Qt3DQuickRender/private/quick3dparameter_p.h> +#include <Qt3DQuickRender/private/quick3drenderpass_p.h> #include <Qt3DQuickRender/private/quick3drenderpassfilter_p.h> #include <Qt3DQuickRender/private/quick3drendertargetoutput_p.h> -#include <Qt3DQuickRender/private/quick3deffect_p.h> +#include <Qt3DQuickRender/private/quick3drendertargetselector_p.h> #include <Qt3DQuickRender/private/quick3dscene_p.h> -#include <Qt3DQuickRender/private/quick3dtexture_p.h> -#include <Qt3DQuickRender/private/quick3drenderpass_p.h> -#include <Qt3DQuickRender/private/quick3dparameter_p.h> #include <Qt3DQuickRender/private/quick3dshaderdata_p.h> #include <Qt3DQuickRender/private/quick3dshaderdataarray_p.h> #include <Qt3DQuickRender/private/quick3dstateset_p.h> -#include <Qt3DQuickRender/private/quick3drendertargetselector_p.h> -#include <Qt3DQuickRender/private/quick3dgeometry_p.h> -#include <Qt3DQuickRender/private/quick3dbuffer_p.h> -#include <Qt3DQuickRender/private/quick3dmemorybarrier_p.h> -#include <Qt3DQuickRender/private/qt3dquickrender_global_p.h> +#include <Qt3DQuickRender/private/quick3dtechnique_p.h> +#include <Qt3DQuickRender/private/quick3dtechniquefilter_p.h> +#include <Qt3DQuickRender/private/quick3dtexture_p.h> +#include <Qt3DQuickRender/private/quick3dviewport_p.h> -#include <QtGui/qwindow.h> QT_BEGIN_NAMESPACE @@ -155,6 +160,7 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri) // @uri Qt3D.Render Qt3DRender::Quick::registerExtendedType<Qt3DRender::QSceneLoader, Qt3DRender::Render::Quick::Quick3DScene>("QSceneLoader", "Qt3D.Render/SceneLoader", uri, 2, 0, "SceneLoader"); + qmlRegisterRevision<Qt3DRender::QSceneLoader, 9>(uri, 2, 9); Qt3DRender::Quick::registerExtendedType<Qt3DRender::QEffect, Qt3DRender::Render::Quick::Quick3DEffect>("QEffect", "Qt3D.Render/Effect", uri, 2, 0, "Effect"); Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTechnique, Qt3DRender::Render::Quick::Quick3DTechnique>("QTechnique", "Qt3D.Render/Technique", uri, 2, 0, "Technique"); qmlRegisterType<Qt3DRender::QFilterKey>(uri, 2, 0, "FilterKey"); @@ -164,13 +170,16 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri) Qt3DRender::Quick::registerExtendedType<Qt3DRender::QMaterial, Qt3DRender::Render::Quick::Quick3DMaterial>("QMaterial", "Qt3D.Render/Material", uri, 2, 0, "Material"); Qt3DRender::Quick::registerExtendedType<Qt3DRender::QRenderPass, Qt3DRender::Render::Quick::Quick3DRenderPass>("QRenderPass", "Qt3D.Render/RenderPass", uri, 2, 0, "RenderPass"); qmlRegisterType<Qt3DRender::QShaderProgram>(uri, 2, 0, "ShaderProgram"); + qmlRegisterRevision<Qt3DRender::QShaderProgram, 9>(uri, 2, 9); qmlRegisterUncreatableType<Qt3DRender::QShaderData>(uri, 2, 0, "QShaderData", "Quick3D should instantiate Quick3DShaderData only"); qmlRegisterType<Qt3DRender::Render::Quick::Quick3DShaderDataArray>(uri, 2, 0, "ShaderDataArray"); qmlRegisterType<Qt3DRender::Render::Quick::Quick3DShaderData>(uri, 2, 0, "ShaderData"); // Camera qmlRegisterType<Qt3DRender::QCamera>(uri, 2, 0, "Camera"); + qmlRegisterRevision<Qt3DRender::QCamera, 9>(uri, 2, 9); qmlRegisterType<Qt3DRender::QCameraLens>(uri, 2, 0, "CameraLens"); + qmlRegisterRevision<Qt3DRender::QCameraLens, 9>(uri, 2, 9); // Textures qmlRegisterType<Qt3DRender::QTextureWrapMode>(uri, 2, 0, "WrapMode");//, QStringLiteral("QTextureWrapMode cannot be created from QML")); @@ -193,18 +202,20 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri) // Geometry qmlRegisterType<Qt3DRender::QAttribute>(uri, 2, 0, "Attribute"); qmlRegisterUncreatableType<Qt3DRender::QBuffer>(uri, 2, 0, "BufferBase", QStringLiteral("Use Quick3DBuffer in QML")); + qmlRegisterUncreatableType<Qt3DRender::QBuffer, 9>(uri, 2, 9, "BufferBase", QStringLiteral("Use Quick3DBuffer in QML")); qmlRegisterType<Qt3DRender::Render::Quick::Quick3DBuffer>(uri, 2, 0, "Buffer"); Qt3DRender::Quick::registerExtendedType<Qt3DRender::QGeometry, Qt3DRender::Render::Quick::Quick3DGeometry>("QGeometry", "Qt3D.Render/Geometry", uri, 2, 0, "Geometry"); qmlRegisterType<Qt3DRender::QGeometryRenderer>(uri, 2, 0, "GeometryRenderer"); - qmlRegisterType<Qt3DRender::QLevelOfDetail>(uri, 2, 2, "LevelOfDetail"); - qmlRegisterType<Qt3DRender::QLevelOfDetailSwitch>(uri, 2, 2, "LevelOfDetailSwitch"); - qmlRegisterType<Qt3DRender::QBoundingSphere>(uri, 2, 2, "BoundingSphere"); + qmlRegisterType<Qt3DRender::QLevelOfDetail>(uri, 2, 9, "LevelOfDetail"); + qmlRegisterType<Qt3DRender::QLevelOfDetailSwitch>(uri, 2, 9, "LevelOfDetailSwitch"); + qRegisterMetaType<Qt3DRender::QLevelOfDetailBoundingSphere>("LevelOfDetailBoundingSphere"); // Mesh qmlRegisterType<Qt3DRender::QMesh>(uri, 2, 0, "Mesh"); // Picking qmlRegisterType<Qt3DRender::QObjectPicker>(uri, 2, 0, "ObjectPicker"); + qmlRegisterRevision<Qt3DRender::QObjectPicker, 9>(uri, 2, 9); qmlRegisterUncreatableType<Qt3DRender::QPickEvent>(uri, 2, 0, "PickEvent", QStringLiteral("Events cannot be created")); // Compute Job @@ -218,6 +229,7 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri) qmlRegisterUncreatableType<Qt3DRender::QAbstractLight>(uri, 2, 0, "Light", QStringLiteral("Light is an abstract base class")); qmlRegisterType<Qt3DRender::QPointLight>(uri, 2, 0, "PointLight"); qmlRegisterType<Qt3DRender::QDirectionalLight>(uri, 2, 0, "DirectionalLight"); + qmlRegisterType<Qt3DRender::QEnvironmentLight>(uri, 2, 9, "EnvironmentLight"); qmlRegisterType<Qt3DRender::QSpotLight>(uri, 2, 0, "SpotLight"); // FrameGraph @@ -225,6 +237,7 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri) Qt3DRender::Quick::registerExtendedType<Qt3DRender::QRenderPassFilter, Qt3DRender::Render::Quick::Quick3DRenderPassFilter>("QRenderPassFilter", "Qt3D.Render/RenderPassFilter", uri, 2, 0, "RenderPassFilter"); Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTechniqueFilter, Qt3DRender::Render::Quick::Quick3DTechniqueFilter>("QTechniqueFilter", "Qt3D.Render/TechniqueFilter", uri, 2, 0, "TechniqueFilter"); Qt3DRender::Quick::registerExtendedType<Qt3DRender::QViewport, Qt3DRender::Render::Quick::Quick3DViewport>("QViewport", "Qt3D.Render/Viewport", uri, 2, 0, "Viewport"); + qmlRegisterRevision<Qt3DRender::QViewport, 9>(uri, 2, 9); Qt3DRender::Quick::registerExtendedType<Qt3DRender::QRenderTargetSelector, Qt3DRender::Render::Quick::Quick3DRenderTargetSelector>("QRenderTargetSelector", "Qt3D.Render/RenderTargetSelector", uri, 2, 0, "RenderTargetSelector"); qmlRegisterType<Qt3DRender::QClearBuffers>(uri, 2, 0, "ClearBuffers"); qmlRegisterType<Qt3DRender::QFrameGraphNode>(uri, 2, 0, "FrameGraphNode"); @@ -233,8 +246,10 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri) qmlRegisterType<Qt3DRender::QFrustumCulling>(uri, 2, 0, "FrustumCulling"); qmlRegisterType<Qt3DRender::QDispatchCompute>(uri, 2, 0, "DispatchCompute"); qmlRegisterType<Qt3DRender::QRenderCapture>(uri, 2, 1, "RenderCapture"); + qmlRegisterRevision<Qt3DRender::QRenderCapture, 9>(uri, 2, 9); qmlRegisterUncreatableType<Qt3DRender::QRenderCaptureReply>(uri, 2, 1, "RenderCaptureReply", QStringLiteral("RenderCaptureReply is only instantiated by RenderCapture")); - Qt3DRender::Quick::registerExtendedType<Qt3DRender::QMemoryBarrier, Qt3DRender::Render::Quick::Quick3DMemoryBarrier>("QMemoryBarrier", "Qt3D.Render/MemoryBarrier", uri, 2, 0, "MemoryBarrier"); + qmlRegisterType<Qt3DRender::QBufferCapture>(uri, 2, 9, "BufferCapture"); + Qt3DRender::Quick::registerExtendedType<Qt3DRender::QMemoryBarrier, Qt3DRender::Render::Quick::Quick3DMemoryBarrier>("QMemoryBarrier", "Qt3D.Render/MemoryBarrier", uri, 2, 9, "MemoryBarrier"); // RenderTarget qmlRegisterType<Qt3DRender::QRenderTargetOutput>(uri, 2, 0, "RenderTargetOutput"); diff --git a/src/quick3d/imports/scene2d/importsscene2d.pro b/src/quick3d/imports/scene2d/importsscene2d.pro new file mode 100644 index 000000000..32fbc5b1b --- /dev/null +++ b/src/quick3d/imports/scene2d/importsscene2d.pro @@ -0,0 +1,19 @@ +CXX_MODULE = qml +TARGET = qtquickscene2dplugin +TARGETPATH = QtQuick/Scene2D +IMPORT_VERSION = 2.0 + +QT += qml quick 3dcore 3drender 3drender-private 3dinput 3dlogic 3dquickscene2d 3dquickscene2d-private + +# Qt3D is free of Q_FOREACH - make sure it stays that way: +DEFINES += QT_NO_FOREACH + +HEADERS += \ + qtquickscene2dplugin.h \ + +SOURCES += \ + qtquickscene2dplugin.cpp \ + +OTHER_FILES += qmldir + +load(qml_plugin) diff --git a/src/quick3d/imports/scene2d/plugins.qmltypes b/src/quick3d/imports/scene2d/plugins.qmltypes new file mode 100644 index 000000000..a26dcbec0 --- /dev/null +++ b/src/quick3d/imports/scene2d/plugins.qmltypes @@ -0,0 +1,121 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable -output plugins.qmltypes QtQuick.Scene2D 2.9' + +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" } + } + } + Component { + name: "Qt3DRender::Quick::QScene2D" + defaultProperty: "item" + prototype: "Qt3DCore::QNode" + Enum { + name: "RenderPolicy" + values: { + "Continuous": 0, + "SingleShot": 1 + } + } + 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" } + 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" } + } + Signal { + name: "itemChanged" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Signal { + name: "grabMouseChanged" + Parameter { name: "grab"; 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" } + } + Method { + name: "setItem" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "setGrabMouseEnabled" + Parameter { name: "grab"; type: "bool" } + } + } + 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/scene2d/qmldir b/src/quick3d/imports/scene2d/qmldir new file mode 100644 index 000000000..2e807f1e6 --- /dev/null +++ b/src/quick3d/imports/scene2d/qmldir @@ -0,0 +1,3 @@ +module QtQuick.Scene2D +plugin qtquickscene2dplugin +classname QtQuickScene2DPlugin diff --git a/src/quick3d/imports/scene2d/qtquickscene2dplugin.cpp b/src/quick3d/imports/scene2d/qtquickscene2dplugin.cpp new file mode 100644 index 000000000..4e6245d2d --- /dev/null +++ b/src/quick3d/imports/scene2d/qtquickscene2dplugin.cpp @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qtquickscene2dplugin.h" + +#include <Qt3DQuickScene2D/qscene2d.h> +#include <private/qrenderaspect_p.h> +#include <Qt3DQuickScene2D/private/qt3dquick3dscene2d_p.h> +#include <QtCore/qcoreapplication.h> + +QT_BEGIN_NAMESPACE + +static void initScene2dPlugin() +{ + Qt3DRender::QRenderAspectPrivate::configurePlugin("scene2d"); +} + +Q_COREAPP_STARTUP_FUNCTION(initScene2dPlugin) + +void QtQuickScene2DPlugin::registerTypes(const char *uri) +{ + qmlRegisterExtendedType<Qt3DRender::Quick::QScene2D, Qt3DRender::Render::Quick::QQuick3DScene2D>(uri, 2, 9, "Scene2D"); +} + +QT_END_NAMESPACE diff --git a/src/quick3d/imports/scene2d/qtquickscene2dplugin.h b/src/quick3d/imports/scene2d/qtquickscene2dplugin.h new file mode 100644 index 000000000..c9318673f --- /dev/null +++ b/src/quick3d/imports/scene2d/qtquickscene2dplugin.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTQUICKSCENE2DPLUGIN_H +#define QTQUICKSCENE2DPLUGIN_H + +#include <QtQml/qqmlextensionplugin.h> + +static void initResources() +{ +#ifdef QT_STATIC + Q_INIT_RESOURCE(qmake_QtQuick_Scene2D); +#endif +} + +QT_BEGIN_NAMESPACE + +class QtQuickScene2DPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) +public: + QtQuickScene2DPlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); } + void registerTypes(const char *uri) Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif // QTQUICKSCENE2DPLUGIN_H diff --git a/src/quick3d/imports/scene3d/qtquickscene3dplugin.cpp b/src/quick3d/imports/scene3d/qtquickscene3dplugin.cpp index 7103a1bb8..6b9ec96f8 100644 --- a/src/quick3d/imports/scene3d/qtquickscene3dplugin.cpp +++ b/src/quick3d/imports/scene3d/qtquickscene3dplugin.cpp @@ -37,9 +37,11 @@ ** ****************************************************************************/ -#include <QtQml> #include "qtquickscene3dplugin.h" -#include "scene3ditem_p.h" + +#include <QtQml> + +#include <scene3ditem_p.h> QT_BEGIN_NAMESPACE diff --git a/src/quick3d/imports/scene3d/scene3dcleaner.cpp b/src/quick3d/imports/scene3d/scene3dcleaner.cpp index 06b795c8a..ec371410d 100644 --- a/src/quick3d/imports/scene3d/scene3dcleaner.cpp +++ b/src/quick3d/imports/scene3d/scene3dcleaner.cpp @@ -38,13 +38,13 @@ ****************************************************************************/ #include "scene3dcleaner_p.h" -#include "scene3dlogging_p.h" -#include "scene3drenderer_p.h" #include <Qt3DCore/qaspectengine.h> - #include <QtCore/qthread.h> +#include <scene3dlogging_p.h> +#include <scene3drenderer_p.h> + QT_BEGIN_NAMESPACE namespace Qt3DRender { diff --git a/src/quick3d/imports/scene3d/scene3dcleaner_p.h b/src/quick3d/imports/scene3d/scene3dcleaner_p.h index 6ec2c7e6b..a246cbde7 100644 --- a/src/quick3d/imports/scene3d/scene3dcleaner_p.h +++ b/src/quick3d/imports/scene3d/scene3dcleaner_p.h @@ -51,7 +51,7 @@ // We mean it. // -#include <QObject> +#include <QtCore/QObject> QT_BEGIN_NAMESPACE diff --git a/src/quick3d/imports/scene3d/scene3ditem.cpp b/src/quick3d/imports/scene3d/scene3ditem.cpp index 4a5c959c4..c31f4aa97 100644 --- a/src/quick3d/imports/scene3d/scene3ditem.cpp +++ b/src/quick3d/imports/scene3d/scene3ditem.cpp @@ -38,23 +38,26 @@ ****************************************************************************/ #include "scene3ditem_p.h" -#include "scene3dcleaner_p.h" -#include "scene3dlogging_p.h" -#include "scene3drenderer_p.h" -#include "scene3dsgnode_p.h" #include <Qt3DCore/QAspectEngine> #include <Qt3DCore/qentity.h> -#include <Qt3DRender/qcamera.h> -#include <Qt3DRender/QRenderAspect> -#include <Qt3DRender/qrendersurfaceselector.h> -#include <Qt3DRender/private/qrendersurfaceselector_p.h> #include <Qt3DInput/QInputAspect> #include <Qt3DInput/qinputsettings.h> #include <Qt3DLogic/qlogicaspect.h> +#include <Qt3DRender/QRenderAspect> +#include <Qt3DRender/qcamera.h> +#include <Qt3DRender/qrendersurfaceselector.h> - +#include <QtGui/qguiapplication.h> +#include <QtGui/qoffscreensurface.h> #include <QtQuick/qquickwindow.h> +#include <QtQuick/qquickrendercontrol.h> + +#include <Qt3DRender/private/qrendersurfaceselector_p.h> +#include <scene3dcleaner_p.h> +#include <scene3dlogging_p.h> +#include <scene3drenderer_p.h> +#include <scene3dsgnode_p.h> QT_BEGIN_NAMESPACE @@ -179,7 +182,7 @@ void Scene3DItem::applyRootEntityChange() QList<Qt3DRender::QCamera *> cameras = m_entity->findChildren<Qt3DRender::QCamera *>(); if (cameras.isEmpty()) { - qWarning() << "No camera found and automatic aspect ratio requested"; + qCDebug(Scene3D) << "No camera found and automatic aspect ratio requested"; } else { m_camera = cameras.first(); setCameraAspectModeHelper(); @@ -191,7 +194,7 @@ void Scene3DItem::applyRootEntityChange() if (inputSettings) { inputSettings->setEventSource(this); } else { - qWarning() << "No Input Settings found, keyboard and mouse events won't be handled"; + qCDebug(Scene3D) << "No Input Settings found, keyboard and mouse events won't be handled"; } } } @@ -202,11 +205,25 @@ void Scene3DItem::setWindowSurface(QObject *rootObject) // Set the item's window surface if it appears // the surface wasn't set on the surfaceSelector - if (surfaceSelector && !surfaceSelector->surface()) - surfaceSelector->setSurface(this->window()); + if (surfaceSelector && !surfaceSelector->surface()) { + // We may not have a real, exposed QQuickWindow when the Quick rendering + // is redirected via QQuickRenderControl (f.ex. QQuickWidget). + if (QWindow *rw = QQuickRenderControl::renderWindowFor(this->window())) { + // rw is the top-level window that is backed by a native window. Do + // not use that though since we must not clash with e.g. the widget + // backingstore compositor in the gui thread. + m_dummySurface = new QOffscreenSurface; + m_dummySurface->setParent(qGuiApp); // parent to something suitably long-living + m_dummySurface->setFormat(rw->format()); + m_dummySurface->create(); + surfaceSelector->setSurface(m_dummySurface); + } else { + surfaceSelector->setSurface(this->window()); + } + } } -void Scene3DItem::setItemArea(const QSize &area) +void Scene3DItem::setItemArea(QSize area) { Qt3DRender::QRenderSurfaceSelector *surfaceSelector = Qt3DRender::QRenderSurfaceSelectorPrivate::find(m_entity); if (surfaceSelector) diff --git a/src/quick3d/imports/scene3d/scene3ditem_p.h b/src/quick3d/imports/scene3d/scene3ditem_p.h index 09859a763..e0ce3addc 100644 --- a/src/quick3d/imports/scene3d/scene3ditem_p.h +++ b/src/quick3d/imports/scene3d/scene3ditem_p.h @@ -51,11 +51,13 @@ // We mean it. // -#include <QQuickItem> #include <QtCore/qpointer.h> +#include <QtQuick/QQuickItem> QT_BEGIN_NAMESPACE +class QOffscreenSurface; + namespace Qt3DCore { class QAspectEngine; class QEntity; @@ -86,7 +88,7 @@ public: bool multisample() const; void setMultisample(bool enable); - void setItemArea(const QSize &area); + Q_INVOKABLE void setItemArea(QSize area); bool isHoverEnabled() const; enum CameraAspectRatioMode { @@ -131,6 +133,7 @@ private: QPointer<Qt3DRender::QCamera> m_camera; CameraAspectRatioMode m_cameraAspectRatioMode; + QOffscreenSurface *m_dummySurface; }; } // Qt3DRender diff --git a/src/quick3d/imports/scene3d/scene3dlogging.cpp b/src/quick3d/imports/scene3d/scene3dlogging.cpp index b9582799b..b6656541b 100644 --- a/src/quick3d/imports/scene3d/scene3dlogging.cpp +++ b/src/quick3d/imports/scene3d/scene3dlogging.cpp @@ -43,7 +43,7 @@ QT_BEGIN_NAMESPACE namespace Qt3DRender { -Q_LOGGING_CATEGORY(Scene3D, "Qt3D.Scene3D") +Q_LOGGING_CATEGORY(Scene3D, "Qt3D.Scene3D", QtWarningMsg) } // Qt3DRender diff --git a/src/quick3d/imports/scene3d/scene3dlogging_p.h b/src/quick3d/imports/scene3d/scene3dlogging_p.h index 0f9448d42..91430939f 100644 --- a/src/quick3d/imports/scene3d/scene3dlogging_p.h +++ b/src/quick3d/imports/scene3d/scene3dlogging_p.h @@ -51,7 +51,7 @@ // We mean it. // -#include <QLoggingCategory> +#include <QtCore/QLoggingCategory> QT_BEGIN_NAMESPACE diff --git a/src/quick3d/imports/scene3d/scene3drenderer.cpp b/src/quick3d/imports/scene3d/scene3drenderer.cpp index 3065b19ac..b32191391 100644 --- a/src/quick3d/imports/scene3d/scene3drenderer.cpp +++ b/src/quick3d/imports/scene3d/scene3drenderer.cpp @@ -38,27 +38,36 @@ ****************************************************************************/ #include "scene3drenderer_p.h" -#include "scene3dcleaner_p.h" -#include "scene3ditem_p.h" -#include "scene3dlogging_p.h" -#include "scene3dsgnode_p.h" -#include <Qt3DRender/qrenderaspect.h> -#include <Qt3DRender/private/qrenderaspect_p.h> #include <Qt3DCore/qaspectengine.h> -#include <Qt3DCore/private/qaspectengine_p.h> - -#include <QtQuick/qquickwindow.h> - +#include <Qt3DRender/qrenderaspect.h> +#include <QtCore/qthread.h> #include <QtGui/qopenglcontext.h> #include <QtGui/qopenglframebufferobject.h> +#include <QtQuick/qquickwindow.h> -#include <QtCore/qthread.h> +#include <Qt3DRender/private/qrenderaspect_p.h> +#include <Qt3DCore/private/qaspectengine_p.h> +#include <scene3dcleaner_p.h> +#include <scene3ditem_p.h> +#include <scene3dlogging_p.h> +#include <scene3dsgnode_p.h> QT_BEGIN_NAMESPACE namespace Qt3DRender { +namespace { + +inline QMetaMethod setItemAreaMethod() +{ + const int idx = Scene3DItem::staticMetaObject.indexOfMethod("setItemArea(QSize)"); + Q_ASSERT(idx != -1); + return Scene3DItem::staticMetaObject.method(idx); +} + +} // anonymous + class ContextSaver { public: @@ -120,14 +129,18 @@ Scene3DRenderer::Scene3DRenderer(Scene3DItem *item, Qt3DCore::QAspectEngine *asp , m_multisampledFBO(nullptr) , m_finalFBO(nullptr) , m_texture(nullptr) + , m_node(nullptr) + , m_cleaner(nullptr) , m_multisample(false) // this value is not used, will be synced from the Scene3DItem instead , m_lastMultisample(false) + , m_needsShutdown(true) { Q_CHECK_PTR(m_item); Q_CHECK_PTR(m_item->window()); QObject::connect(m_item->window(), &QQuickWindow::beforeRendering, this, &Scene3DRenderer::render, Qt::DirectConnection); - QObject::connect(m_item, &QQuickItem::windowChanged, this, &Scene3DRenderer::onWindowChangedQueued, Qt::QueuedConnection); + QObject::connect(m_item->window(), &QQuickWindow::sceneGraphInvalidated, this, &Scene3DRenderer::onSceneGraphInvalidated, Qt::DirectConnection); + QObject::connect(m_item, &QQuickItem::windowChanged, this, &Scene3DRenderer::onWindowChanged, Qt::QueuedConnection); Q_ASSERT(QOpenGLContext::currentContext()); ContextSaver saver; @@ -173,7 +186,7 @@ void Scene3DRenderer::setCleanerHelper(Scene3DCleaner *cleaner) } } -// Executed in the QtQuick render thread. +// Executed in the QtQuick render thread (which may even be the gui/main with QQuickWidget / RenderControl). void Scene3DRenderer::shutdown() { qCDebug(Scene3D) << Q_FUNC_INFO << QThread::currentThread(); @@ -195,19 +208,29 @@ void Scene3DRenderer::shutdown() static_cast<QRenderAspectPrivate*>(QRenderAspectPrivate::get(m_renderAspect))->renderShutdown(); } -// SGThread -void Scene3DRenderer::onWindowChangedQueued(QQuickWindow *w) +// QtQuick render thread (which may also be the gui/main thread with QQuickWidget / RenderControl) +void Scene3DRenderer::onSceneGraphInvalidated() { - if (w == nullptr) { - qCDebug(Scene3D) << Q_FUNC_INFO << QThread::currentThread(); + qCDebug(Scene3D) << Q_FUNC_INFO << QThread::currentThread(); + if (m_needsShutdown) { + m_needsShutdown = false; shutdown(); - // Will only trigger something with the Loader case - // The window closed cases is handled by the window's destroyed - // signal QMetaObject::invokeMethod(m_cleaner, "cleanup"); } } +void Scene3DRenderer::onWindowChanged(QQuickWindow *w) +{ + qCDebug(Scene3D) << Q_FUNC_INFO << QThread::currentThread() << w; + if (!w) { + if (m_needsShutdown) { + m_needsShutdown = false; + shutdown(); + QMetaObject::invokeMethod(m_cleaner, "cleanup"); + } + } +} + void Scene3DRenderer::synchronize() { m_multisample = m_item->multisample(); @@ -238,8 +261,11 @@ void Scene3DRenderer::render() const bool multisampleHasChanged = m_multisample != m_lastMultisample; const bool forceRecreate = sizeHasChanged || multisampleHasChanged; - if (sizeHasChanged) - m_item->setItemArea(boundingRectSize); + if (sizeHasChanged) { + // We are in the QSGRenderThread (doing a direct call would result in a race) + static const QMetaMethod setItemArea = setItemAreaMethod(); + setItemArea.invoke(m_item, Qt::QueuedConnection, Q_ARG(QSize, boundingRectSize)); + } // Rebuild FBO and textures if never created or a resize has occurred if ((m_multisampledFBO.isNull() || forceRecreate) && m_multisample) { diff --git a/src/quick3d/imports/scene3d/scene3drenderer_p.h b/src/quick3d/imports/scene3d/scene3drenderer_p.h index 9ff5e7f36..ab1db1010 100644 --- a/src/quick3d/imports/scene3d/scene3drenderer_p.h +++ b/src/quick3d/imports/scene3d/scene3drenderer_p.h @@ -51,8 +51,7 @@ // We mean it. // -#include <QObject> - +#include <QtCore/QObject> #include <QtCore/qsize.h> QT_BEGIN_NAMESPACE @@ -91,7 +90,8 @@ public: public Q_SLOTS: void render(); void shutdown(); - void onWindowChangedQueued(QQuickWindow *w); + void onSceneGraphInvalidated(); + void onWindowChanged(QQuickWindow *w); private: Scene3DItem *m_item; // Will be released by the QQuickWindow/QML Engine @@ -105,6 +105,7 @@ private: QSize m_lastSize; bool m_multisample; bool m_lastMultisample; + bool m_needsShutdown; friend class Scene3DCleaner; }; diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h b/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h index f3817dc05..df431e452 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h +++ b/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h @@ -52,10 +52,10 @@ // #include <QtQuick/QSGMaterial> -#include "scene3dsgmaterialshader_p.h" - #include <QtQuick/qsgtexture.h> +#include <scene3dsgmaterialshader_p.h> + QT_BEGIN_NAMESPACE namespace Qt3DRender { diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp b/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp index 5ce0f4d60..8a4585558 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp +++ b/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp @@ -38,12 +38,13 @@ ****************************************************************************/ #include "scene3dsgmaterialshader_p.h" -#include "scene3dsgmaterial_p.h" #include <QtGui/qopenglcontext.h> #include <QtGui/qopenglfunctions.h> #include <QtGui/qsurfaceformat.h> +#include <scene3dsgmaterial_p.h> + QT_BEGIN_NAMESPACE namespace { @@ -71,6 +72,13 @@ namespace Qt3DRender { QSGMaterialType Scene3DSGMaterialShader::type; +Scene3DSGMaterialShader::Scene3DSGMaterialShader() + : QSGMaterialShader() + , m_matrixId(-1) + , m_opacityId(-1) +{ +} + const char * const *Scene3DSGMaterialShader::attributeNames() const { static char const *const attr[] = { "qt_VertexPosition", "qt_VertexTexCoord", 0 }; diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h b/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h index 64d281ec4..a1222b07d 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h +++ b/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h @@ -60,6 +60,7 @@ namespace Qt3DRender { class Scene3DSGMaterialShader : public QSGMaterialShader { public: + Scene3DSGMaterialShader(); void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) Q_DECL_FINAL; const char * const *attributeNames() const Q_DECL_FINAL; diff --git a/src/quick3d/imports/scene3d/scene3dsgnode.cpp b/src/quick3d/imports/scene3d/scene3dsgnode.cpp index ae0a07350..8806b59a9 100644 --- a/src/quick3d/imports/scene3d/scene3dsgnode.cpp +++ b/src/quick3d/imports/scene3d/scene3dsgnode.cpp @@ -38,10 +38,11 @@ ****************************************************************************/ #include "scene3dsgnode_p.h" -#include "scene3dlogging_p.h" #include <QtCore/qthread.h> +#include <scene3dlogging_p.h> + QT_BEGIN_NAMESPACE namespace Qt3DRender { diff --git a/src/quick3d/imports/scene3d/scene3dsgnode_p.h b/src/quick3d/imports/scene3d/scene3dsgnode_p.h index f7b21e2b9..68b68eea5 100644 --- a/src/quick3d/imports/scene3d/scene3dsgnode_p.h +++ b/src/quick3d/imports/scene3d/scene3dsgnode_p.h @@ -53,7 +53,7 @@ #include <QtQuick/QSGGeometryNode> -#include "scene3dsgmaterial_p.h" +#include <scene3dsgmaterial_p.h> QT_BEGIN_NAMESPACE |