| 1 | /**************************************************************************** | 
| 2 | ** | 
| 3 | ** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). | 
| 4 | ** Copyright (C) 2016 The Qt Company Ltd and/or its subsidiary(-ies). | 
| 5 | ** Contact: https://www.qt.io/licensing/ | 
| 6 | ** | 
| 7 | ** This file is part of the Qt3D module of the Qt Toolkit. | 
| 8 | ** | 
| 9 | ** $QT_BEGIN_LICENSE:LGPL$ | 
| 10 | ** Commercial License Usage | 
| 11 | ** Licensees holding valid commercial Qt licenses may use this file in | 
| 12 | ** accordance with the commercial license agreement provided with the | 
| 13 | ** Software or, alternatively, in accordance with the terms contained in | 
| 14 | ** a written agreement between you and The Qt Company. For licensing terms | 
| 15 | ** and conditions see https://www.qt.io/terms-conditions. For further | 
| 16 | ** information use the contact form at https://www.qt.io/contact-us. | 
| 17 | ** | 
| 18 | ** GNU Lesser General Public License Usage | 
| 19 | ** Alternatively, this file may be used under the terms of the GNU Lesser | 
| 20 | ** General Public License version 3 as published by the Free Software | 
| 21 | ** Foundation and appearing in the file LICENSE.LGPL3 included in the | 
| 22 | ** packaging of this file. Please review the following information to | 
| 23 | ** ensure the GNU Lesser General Public License version 3 requirements | 
| 24 | ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. | 
| 25 | ** | 
| 26 | ** GNU General Public License Usage | 
| 27 | ** Alternatively, this file may be used under the terms of the GNU | 
| 28 | ** General Public License version 2.0 or (at your option) the GNU General | 
| 29 | ** Public license version 3 or any later version approved by the KDE Free | 
| 30 | ** Qt Foundation. The licenses are as published by the Free Software | 
| 31 | ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 | 
| 32 | ** included in the packaging of this file. Please review the following | 
| 33 | ** information to ensure the GNU General Public License requirements will | 
| 34 | ** be met: https://www.gnu.org/licenses/gpl-2.0.html and | 
| 35 | ** https://www.gnu.org/licenses/gpl-3.0.html. | 
| 36 | ** | 
| 37 | ** $QT_END_LICENSE$ | 
| 38 | ** | 
| 39 | ****************************************************************************/ | 
| 40 |  | 
| 41 | #include "qt3dquick3drenderplugin.h" | 
| 42 | #include <Qt3DRender/qabstractlight.h> | 
| 43 | #include <Qt3DRender/qalphacoverage.h> | 
| 44 | #include <Qt3DRender/qalphatest.h> | 
| 45 | #include <Qt3DRender/qattribute.h> | 
| 46 | #include <Qt3DRender/qblendequation.h> | 
| 47 | #include <Qt3DRender/qblendequationarguments.h> | 
| 48 | #include <Qt3DRender/qbuffer.h> | 
| 49 | #include <Qt3DRender/qbuffercapture.h> | 
| 50 | #include <Qt3DRender/qcamera.h> | 
| 51 | #include <Qt3DRender/qcameralens.h> | 
| 52 | #include <Qt3DRender/qcameraselector.h> | 
| 53 | #include <Qt3DRender/qclearbuffers.h> | 
| 54 | #include <Qt3DRender/qclipplane.h> | 
| 55 | #include <Qt3DRender/qcolormask.h> | 
| 56 | #include <Qt3DRender/qcomputecommand.h> | 
| 57 | #include <Qt3DRender/qcullface.h> | 
| 58 | #include <Qt3DRender/qdepthrange.h> | 
| 59 | #include <Qt3DRender/qdepthtest.h> | 
| 60 | #include <Qt3DRender/qdirectionallight.h> | 
| 61 | #include <Qt3DRender/qdispatchcompute.h> | 
| 62 | #include <Qt3DRender/qdithering.h> | 
| 63 | #include <Qt3DRender/qeffect.h> | 
| 64 | #include <Qt3DRender/qenvironmentlight.h> | 
| 65 | #include <Qt3DRender/qfilterkey.h> | 
| 66 | #include <Qt3DRender/qfrontface.h> | 
| 67 | #include <Qt3DRender/qfrustumculling.h> | 
| 68 | #include <Qt3DRender/qgeometry.h> | 
| 69 | #include <Qt3DRender/qgeometryrenderer.h> | 
| 70 | #include <Qt3DRender/qgraphicsapifilter.h> | 
| 71 | #include <Qt3DRender/qlayer.h> | 
| 72 | #include <Qt3DRender/qlevelofdetail.h> | 
| 73 | #include <Qt3DRender/qlevelofdetailboundingsphere.h> | 
| 74 | #include <Qt3DRender/qlevelofdetailswitch.h> | 
| 75 | #include <Qt3DRender/qlinewidth.h> | 
| 76 | #include <Qt3DRender/qmemorybarrier.h> | 
| 77 | #include <Qt3DRender/qmesh.h> | 
| 78 | #include <Qt3DRender/qmultisampleantialiasing.h> | 
| 79 | #include <Qt3DRender/qnodepthmask.h> | 
| 80 | #include <Qt3DRender/qnodraw.h> | 
| 81 | #include <Qt3DRender/qobjectpicker.h> | 
| 82 | #include <Qt3DRender/qraycaster.h> | 
| 83 | #include <Qt3DRender/qparameter.h> | 
| 84 | #include <Qt3DRender/qpickevent.h> | 
| 85 | #include <Qt3DRender/qpickingsettings.h> | 
| 86 | #include <Qt3DRender/qpointlight.h> | 
| 87 | #include <Qt3DRender/qpointsize.h> | 
| 88 | #include <Qt3DRender/qpolygonoffset.h> | 
| 89 | #include <Qt3DRender/qrendercapture.h> | 
| 90 | #include <Qt3DRender/qrenderpass.h> | 
| 91 | #include <Qt3DRender/qrenderpassfilter.h> | 
| 92 | #include <Qt3DRender/qrendersettings.h> | 
| 93 | #include <Qt3DRender/qrenderstate.h> | 
| 94 | #include <Qt3DRender/qrendersurfaceselector.h> | 
| 95 | #include <Qt3DRender/qrendertargetoutput.h> | 
| 96 | #include <Qt3DRender/qrendertargetselector.h> | 
| 97 | #include <Qt3DRender/qsceneloader.h> | 
| 98 | #include <Qt3DRender/qscissortest.h> | 
| 99 | #include <Qt3DRender/qseamlesscubemap.h> | 
| 100 | #include <Qt3DRender/qshaderdata.h> | 
| 101 | #include <Qt3DRender/qshaderprogram.h> | 
| 102 | #include <Qt3DRender/qshaderprogrambuilder.h> | 
| 103 | #include <Qt3DRender/qsortpolicy.h> | 
| 104 | #include <Qt3DRender/qspotlight.h> | 
| 105 | #include <Qt3DRender/qstencilmask.h> | 
| 106 | #include <Qt3DRender/qstenciloperation.h> | 
| 107 | #include <Qt3DRender/qstenciloperationarguments.h> | 
| 108 | #include <Qt3DRender/qstenciltest.h> | 
| 109 | #include <Qt3DRender/qstenciltestarguments.h> | 
| 110 | #include <Qt3DRender/qtechnique.h> | 
| 111 | #include <Qt3DRender/qtechniquefilter.h> | 
| 112 | #include <Qt3DRender/qtexture.h> | 
| 113 | #include <Qt3DRender/qviewport.h> | 
| 114 | #include <Qt3DRender/qproximityfilter.h> | 
| 115 | #include <Qt3DRender/qblitframebuffer.h> | 
| 116 | #include <Qt3DRender/qsetfence.h> | 
| 117 | #include <Qt3DRender/qwaitfence.h> | 
| 118 | #include <Qt3DRender/qrastermode.h> | 
| 119 | #include <Qt3DRender/qnopicking.h> | 
| 120 | #include <Qt3DRender/qshaderimage.h> | 
| 121 | #include <Qt3DRender/qsubtreeenabler.h> | 
| 122 | #include <Qt3DRender/qrendercapabilities.h> | 
| 123 |  | 
| 124 | #include <QtGui/qwindow.h> | 
| 125 |  | 
| 126 | #include <Qt3DQuickRender/private/qt3dquickrender_global_p.h> | 
| 127 | #include <Qt3DQuickRender/private/qt3dquickrender_global_p.h> | 
| 128 | #include <Qt3DQuickRender/private/quick3dbuffer_p.h> | 
| 129 | #include <Qt3DQuickRender/private/quick3deffect_p.h> | 
| 130 | #include <Qt3DQuickRender/private/quick3dgeometry_p.h> | 
| 131 | #include <Qt3DQuickRender/private/quick3dlayerfilter_p.h> | 
| 132 | #include <Qt3DQuickRender/private/quick3dmaterial_p.h> | 
| 133 | #include <Qt3DQuickRender/private/quick3dmemorybarrier_p.h> | 
| 134 | #include <Qt3DQuickRender/private/quick3dparameter_p.h> | 
| 135 | #include <Qt3DQuickRender/private/quick3drenderpass_p.h> | 
| 136 | #include <Qt3DQuickRender/private/quick3drenderpassfilter_p.h> | 
| 137 | #include <Qt3DQuickRender/private/quick3drendertargetoutput_p.h> | 
| 138 | #include <Qt3DQuickRender/private/quick3drendertargetselector_p.h> | 
| 139 | #include <Qt3DQuickRender/private/quick3dscene_p.h> | 
| 140 | #include <Qt3DQuickRender/private/quick3dshaderdata_p.h> | 
| 141 | #include <Qt3DQuickRender/private/quick3dshaderdataarray_p.h> | 
| 142 | #include <Qt3DQuickRender/private/quick3dstateset_p.h> | 
| 143 | #include <Qt3DQuickRender/private/quick3dtechnique_p.h> | 
| 144 | #include <Qt3DQuickRender/private/quick3dtechniquefilter_p.h> | 
| 145 | #include <Qt3DQuickRender/private/quick3dtexture_p.h> | 
| 146 | #include <Qt3DQuickRender/private/quick3dviewport_p.h> | 
| 147 | #include <Qt3DQuickRender/private/quick3draycaster_p.h> | 
| 148 | #include <Qt3DQuickRender/private/quick3dscreenraycaster_p.h> | 
| 149 |  | 
| 150 | QT_BEGIN_NAMESPACE | 
| 151 |  | 
| 152 | QVariantList Quick3DShaderDataArrayToVariantListConverter(Qt3DRender::Render::Quick::Quick3DShaderDataArray *array) | 
| 153 | { | 
| 154 |     const QVector<Qt3DRender::QShaderData *> arrayValues = array->values(); | 
| 155 |     QVariantList values; | 
| 156 |     values.reserve(alloc: arrayValues.size()); | 
| 157 |     for (Qt3DRender::QShaderData *data : arrayValues) | 
| 158 |         values.append(t: QVariant::fromValue(value: data)); | 
| 159 |     return values; | 
| 160 | } | 
| 161 |  | 
| 162 | void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri) | 
| 163 | { | 
| 164 |     Qt3DRender::Quick::Quick3DRender_initialize(); | 
| 165 |  | 
| 166 |     qmlRegisterUncreatableType<QWindow>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Window" , reason: "Only for assigning window surface property" ); | 
| 167 |  | 
| 168 |     // Converters | 
| 169 |     QMetaType::registerConverter<Qt3DRender::Render::Quick::Quick3DShaderDataArray*, QVariantList>(function: Quick3DShaderDataArrayToVariantListConverter); | 
| 170 |  | 
| 171 |     // Renderer setttings | 
| 172 |     qmlRegisterType<Qt3DRender::QRenderSettings>(uri, versionMajor: 2, versionMinor: 0, qmlName: "RenderSettings" ); | 
| 173 |     qmlRegisterType<Qt3DRender::QRenderSettings, 15>(uri, versionMajor: 2, versionMinor: 15, qmlName: "RenderSettings" ); | 
| 174 |     qmlRegisterType<Qt3DRender::QPickingSettings>(uri, versionMajor: 2, versionMinor: 0, qmlName: "PickingSettings" ); | 
| 175 |     qmlRegisterUncreatableType<Qt3DRender::QRenderCapabilities>(uri, versionMajor: 2, versionMinor: 15, qmlName: "RenderCapabilities" , reason: "Only available as a property of RenderSettings" ); | 
| 176 |  | 
| 177 |     // @uri Qt3D.Render | 
| 178 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QSceneLoader, Qt3DRender::Render::Quick::Quick3DScene>(className: "QSceneLoader" , quickName: "Qt3D.Render/SceneLoader" , uri, major: 2, minor: 0, name: "SceneLoader" ); | 
| 179 |     qmlRegisterType<Qt3DRender::QSceneLoader, 9>(uri, versionMajor: 2, versionMinor: 9, qmlName: "SceneLoader" ); | 
| 180 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QEffect, Qt3DRender::Render::Quick::Quick3DEffect>(className: "QEffect" , quickName: "Qt3D.Render/Effect" , uri, major: 2, minor: 0, name: "Effect" ); | 
| 181 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTechnique, Qt3DRender::Render::Quick::Quick3DTechnique>(className: "QTechnique" , quickName: "Qt3D.Render/Technique" , uri, major: 2, minor: 0, name: "Technique" ); | 
| 182 |     qmlRegisterType<Qt3DRender::QFilterKey>(uri, versionMajor: 2, versionMinor: 0, qmlName: "FilterKey" ); | 
| 183 |     qmlRegisterType<Qt3DRender::QGraphicsApiFilter>(uri, versionMajor: 2, versionMinor: 0, qmlName: "GraphicsApiFilter" ); | 
| 184 |     qmlRegisterUncreatableType<Qt3DRender::QParameter>(uri, versionMajor: 2, versionMinor: 0, qmlName: "QParameter" , reason: "Quick3D should instantiate Quick3DParameter only" ); | 
| 185 |     qmlRegisterType<Qt3DRender::Render::Quick::Quick3DParameter>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Parameter" ); | 
| 186 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QMaterial, Qt3DRender::Render::Quick::Quick3DMaterial>(className: "QMaterial" , quickName: "Qt3D.Render/Material" , uri, major: 2, minor: 0, name: "Material" ); | 
| 187 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QRenderPass, Qt3DRender::Render::Quick::Quick3DRenderPass>(className: "QRenderPass" , quickName: "Qt3D.Render/RenderPass" , uri, major: 2, minor: 0, name: "RenderPass" ); | 
| 188 |     qmlRegisterType<Qt3DRender::QShaderProgram>(uri, versionMajor: 2, versionMinor: 0, qmlName: "ShaderProgram" ); | 
| 189 |     qmlRegisterType<Qt3DRender::QShaderProgram, 9>(uri, versionMajor: 2, versionMinor: 9, qmlName: "ShaderProgram" ); | 
| 190 |     qmlRegisterType<Qt3DRender::QShaderProgram, 15>(uri, versionMajor: 2, versionMinor: 15, qmlName: "ShaderProgram" ); | 
| 191 |     qmlRegisterType<Qt3DRender::QShaderProgramBuilder>(uri, versionMajor: 2, versionMinor: 10, qmlName: "ShaderProgramBuilder" ); | 
| 192 |     qmlRegisterType<Qt3DRender::QShaderProgramBuilder, 13>(uri, versionMajor: 2, versionMinor: 13, qmlName: "ShaderProgramBuilder" ); | 
| 193 |     qmlRegisterUncreatableType<Qt3DRender::QShaderData>(uri, versionMajor: 2, versionMinor: 0, qmlName: "QShaderData" , reason: "Quick3D should instantiate Quick3DShaderData only" ); | 
| 194 |     qmlRegisterType<Qt3DRender::Render::Quick::Quick3DShaderDataArray>(uri, versionMajor: 2, versionMinor: 0, qmlName: "ShaderDataArray" ); | 
| 195 |     qmlRegisterType<Qt3DRender::Render::Quick::Quick3DShaderData>(uri, versionMajor: 2, versionMinor: 0, qmlName: "ShaderData" ); | 
| 196 |  | 
| 197 |     // Camera | 
| 198 |     qmlRegisterType<Qt3DRender::QCamera>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Camera" ); | 
| 199 |     qmlRegisterType<Qt3DRender::QCamera, 9>(uri, versionMajor: 2, versionMinor: 9, qmlName: "Camera" ); | 
| 200 |     qmlRegisterType<Qt3DRender::QCamera, 14>(uri, versionMajor: 2, versionMinor: 14, qmlName: "Camera" ); | 
| 201 |     qmlRegisterType<Qt3DRender::QCameraLens>(uri, versionMajor: 2, versionMinor: 0, qmlName: "CameraLens" ); | 
| 202 |     qmlRegisterType<Qt3DRender::QCameraLens, 9>(uri, versionMajor: 2, versionMinor: 9, qmlName: "CameraLens" ); | 
| 203 |  | 
| 204 |     // Textures | 
| 205 |     qmlRegisterType<Qt3DRender::QTextureWrapMode>(uri, versionMajor: 2, versionMinor: 0, qmlName: "WrapMode" );//, QStringLiteral("QTextureWrapMode cannot be created from QML")); | 
| 206 |     qmlRegisterUncreatableType<Qt3DRender::QAbstractTexture>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Texture" , QStringLiteral("Texture should be created from one of the subclasses" )); | 
| 207 |     qmlRegisterUncreatableType<Qt3DRender::QAbstractTexture, 13>(uri, versionMajor: 2, versionMinor: 13, qmlName: "Texture" , QStringLiteral("Texture should be created from one of the subclasses" )); | 
| 208 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTexture1D, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTexture1D" , quickName: "Qt3D.Render/Texture1D" , uri, major: 2, minor: 0, name: "Texture1D" ); | 
| 209 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTexture1DArray, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTexture1DArray" , quickName: "Qt3D.Render/Texture1DArray" , uri, major: 2, minor: 0, name: "Texture1DArray" ); | 
| 210 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTexture2D, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTexture2D" , quickName: "Qt3D.Render/Texture2D" , uri, major: 2, minor: 0, name: "Texture2D" ); | 
| 211 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTexture2DArray, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTexture2DArray" , quickName: "Qt3D.Render/Texture2DArray" , uri, major: 2, minor: 0, name: "Texture2DArray" ); | 
| 212 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTexture3D, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTexture3D" , quickName: "Qt3D.Render/Texture3D" , uri, major: 2, minor: 0, name: "Texture3D" ); | 
| 213 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTextureCubeMap, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTextureCubeMap" , quickName: "Qt3D.Render/TextureCubeMap" , uri, major: 2, minor: 0, name: "TextureCubeMap" ); | 
| 214 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTextureCubeMapArray, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTextureCubeMapArray" , quickName: "Qt3D.Render/TextureCubeMapArray" , uri, major: 2, minor: 0, name: "TextureCubeMapArray" ); | 
| 215 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTexture2DMultisample, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTexture2DMultisample" , quickName: "Qt3D.Render/Texture2DMultisample" , uri, major: 2, minor: 0, name: "Texture2DMultisample" ); | 
| 216 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTexture2DMultisampleArray, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTexture2DMultisampleArray" , quickName: "Qt3D.Render/Texture2DMultisampleArray" , uri, major: 2, minor: 0, name: "Texture2DMultisampleArray" ); | 
| 217 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTextureRectangle, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTextureRectangle" , quickName: "Qt3D.Render/TextureRectangle" , uri, major: 2, minor: 0, name: "TextureRectangle" ); | 
| 218 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTextureBuffer, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTextureBuffer" , quickName: "Qt3D.Render/TextureBuffer" , uri, major: 2, minor: 0, name: "TextureBuffer" ); | 
| 219 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTextureLoader, Qt3DRender::Render::Quick::Quick3DTextureExtension>(className: "QTextureLoader" , quickName: "Qt3D.Render/TextureLoader" , uri, major: 2, minor: 0, name: "TextureLoader" ); | 
| 220 |     qmlRegisterUncreatableType<Qt3DRender::QAbstractTextureImage>(uri, versionMajor: 2, versionMinor: 0, qmlName: "QAbstractTextureImage" , QStringLiteral("QAbstractTextureImage is abstract" )); | 
| 221 |     qmlRegisterType<Qt3DRender::QTextureImage>(uri, versionMajor: 2, versionMinor: 0, qmlName: "TextureImage" ); | 
| 222 |     qmlRegisterType<Qt3DRender::QSharedGLTexture>(uri, versionMajor: 2, versionMinor: 13, qmlName: "SharedGLTexture" ); | 
| 223 |     qmlRegisterType<Qt3DRender::QShaderImage>(uri, versionMajor: 2, versionMinor: 14, qmlName: "ShaderImage" ); | 
| 224 |  | 
| 225 |     // Geometry | 
| 226 |     qmlRegisterType<Qt3DRender::QAttribute>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Attribute" ); | 
| 227 |     qmlRegisterType<Qt3DRender::QAttribute, 10>(uri, versionMajor: 2, versionMinor: 10, qmlName: "Attribute" ); | 
| 228 |     qmlRegisterType<Qt3DRender::QAttribute, 11>(uri, versionMajor: 2, versionMinor: 11, qmlName: "Attribute" ); | 
| 229 |     qmlRegisterUncreatableType<Qt3DRender::QBuffer>(uri, versionMajor: 2, versionMinor: 0, qmlName: "BufferBase" , QStringLiteral("Use Quick3DBuffer in QML" )); | 
| 230 |     qmlRegisterUncreatableType<Qt3DRender::QBuffer, 9>(uri, versionMajor: 2, versionMinor: 9, qmlName: "BufferBase" , QStringLiteral("Use Quick3DBuffer in QML" )); | 
| 231 |     qmlRegisterType<Qt3DRender::Render::Quick::Quick3DBuffer>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Buffer" ); | 
| 232 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QGeometry, Qt3DRender::Render::Quick::Quick3DGeometry>(className: "QGeometry" , quickName: "Qt3D.Render/Geometry" , uri, major: 2, minor: 0, name: "Geometry" ); | 
| 233 |     qmlRegisterType<Qt3DRender::QGeometryRenderer>(uri, versionMajor: 2, versionMinor: 0, qmlName: "GeometryRenderer" ); | 
| 234 |     qmlRegisterType<Qt3DRender::QLevelOfDetail>(uri, versionMajor: 2, versionMinor: 9, qmlName: "LevelOfDetail" ); | 
| 235 |     qmlRegisterType<Qt3DRender::QLevelOfDetailSwitch>(uri, versionMajor: 2, versionMinor: 9, qmlName: "LevelOfDetailSwitch" ); | 
| 236 |     qRegisterMetaType<Qt3DRender::QLevelOfDetailBoundingSphere>(typeName: "LevelOfDetailBoundingSphere" ); | 
| 237 |  | 
| 238 |     // Mesh | 
| 239 |     qmlRegisterType<Qt3DRender::QMesh>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Mesh" ); | 
| 240 |  | 
| 241 |     // Picking | 
| 242 |     qmlRegisterType<Qt3DRender::QObjectPicker>(uri, versionMajor: 2, versionMinor: 0, qmlName: "ObjectPicker" ); | 
| 243 |     qmlRegisterType<Qt3DRender::QObjectPicker, 9>(uri, versionMajor: 2, versionMinor: 9, qmlName: "ObjectPicker" ); | 
| 244 |     qmlRegisterType<Qt3DRender::QObjectPicker, 13>(uri, versionMajor: 2, versionMinor: 13, qmlName: "ObjectPicker" ); | 
| 245 |     qmlRegisterUncreatableType<Qt3DRender::QPickEvent>(uri, versionMajor: 2, versionMinor: 0, qmlName: "PickEvent" , QStringLiteral("Events cannot be created" )); | 
| 246 |     qmlRegisterUncreatableType<Qt3DRender::QPickEvent, 14>(uri, versionMajor: 2, versionMinor: 14, qmlName: "PickEvent" , QStringLiteral("Events cannot be created" )); | 
| 247 |     qmlRegisterType<Qt3DRender::Render::Quick::Quick3DRayCaster>(uri, versionMajor: 2, versionMinor: 11, qmlName: "RayCaster" ); | 
| 248 |     qmlRegisterType<Qt3DRender::Render::Quick::Quick3DScreenRayCaster>(uri, versionMajor: 2, versionMinor: 11, qmlName: "ScreenRayCaster" ); | 
| 249 |  | 
| 250 |         // Compute Job | 
| 251 |     qmlRegisterType<Qt3DRender::QComputeCommand>(uri, versionMajor: 2, versionMinor: 0, qmlName: "ComputeCommand" ); | 
| 252 |     qmlRegisterType<Qt3DRender::QComputeCommand, 13>(uri, versionMajor: 2, versionMinor: 13, qmlName: "ComputeCommand" ); | 
| 253 |  | 
| 254 |     // Layers | 
| 255 |     qmlRegisterType<Qt3DRender::QLayer>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Layer" ); | 
| 256 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QLayerFilter, Qt3DRender::Render::Quick::Quick3DLayerFilter>(className: "QLayerFilter" , quickName: "Qt3D.Render/LayerFilter" , uri, major: 2, minor: 0, name: "LayerFilter" ); | 
| 257 |  | 
| 258 |     // Lights | 
| 259 |     qmlRegisterUncreatableType<Qt3DRender::QAbstractLight>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Light" , QStringLiteral("Light is an abstract base class" )); | 
| 260 |     qmlRegisterType<Qt3DRender::QPointLight>(uri, versionMajor: 2, versionMinor: 0, qmlName: "PointLight" ); | 
| 261 |     qmlRegisterType<Qt3DRender::QDirectionalLight>(uri, versionMajor: 2, versionMinor: 0, qmlName: "DirectionalLight" ); | 
| 262 |     qmlRegisterType<Qt3DRender::QEnvironmentLight>(uri, versionMajor: 2, versionMinor: 9, qmlName: "EnvironmentLight" ); | 
| 263 |     qmlRegisterType<Qt3DRender::QSpotLight>(uri, versionMajor: 2, versionMinor: 0, qmlName: "SpotLight" ); | 
| 264 |  | 
| 265 |     // FrameGraph | 
| 266 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QCameraSelector, Qt3DCore::Quick::Quick3DNode>(className: "QCameraSelector" , quickName: "Qt3D.Render/CameraSelector" , uri, major: 2, minor: 0, name: "CameraSelector" ); | 
| 267 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QRenderPassFilter, Qt3DRender::Render::Quick::Quick3DRenderPassFilter>(className: "QRenderPassFilter" , quickName: "Qt3D.Render/RenderPassFilter" , uri, major: 2, minor: 0, name: "RenderPassFilter" ); | 
| 268 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QTechniqueFilter, Qt3DRender::Render::Quick::Quick3DTechniqueFilter>(className: "QTechniqueFilter" , quickName: "Qt3D.Render/TechniqueFilter" , uri, major: 2, minor: 0, name: "TechniqueFilter" ); | 
| 269 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QViewport, Qt3DRender::Render::Quick::Quick3DViewport>(className: "QViewport" , quickName: "Qt3D.Render/Viewport" , uri, major: 2, minor: 0, name: "Viewport" ); | 
| 270 |     qmlRegisterType<Qt3DRender::QViewport, 9>(uri, versionMajor: 2, versionMinor: 9, qmlName: "Viewport" ); | 
| 271 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QRenderTargetSelector, Qt3DRender::Render::Quick::Quick3DRenderTargetSelector>(className: "QRenderTargetSelector" , quickName: "Qt3D.Render/RenderTargetSelector" , uri, major: 2, minor: 0, name: "RenderTargetSelector" ); | 
| 272 |     qmlRegisterType<Qt3DRender::QClearBuffers>(uri, versionMajor: 2, versionMinor: 0, qmlName: "ClearBuffers" ); | 
| 273 |     qmlRegisterType<Qt3DRender::QFrameGraphNode>(uri, versionMajor: 2, versionMinor: 0, qmlName: "FrameGraphNode" ); | 
| 274 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QRenderStateSet, Qt3DRender::Render::Quick::Quick3DStateSet>(className: "QRenderStateSet" , quickName: "Qt3D.Render/RenderStateSet" , uri, major: 2, minor: 0, name: "RenderStateSet" ); | 
| 275 |     qmlRegisterType<Qt3DRender::QNoDraw>(uri, versionMajor: 2, versionMinor: 0, qmlName: "NoDraw" ); | 
| 276 |     qmlRegisterType<Qt3DRender::QFrustumCulling>(uri, versionMajor: 2, versionMinor: 0, qmlName: "FrustumCulling" ); | 
| 277 |     qmlRegisterType<Qt3DRender::QDispatchCompute>(uri, versionMajor: 2, versionMinor: 0, qmlName: "DispatchCompute" ); | 
| 278 |     qmlRegisterType<Qt3DRender::QRenderCapture>(uri, versionMajor: 2, versionMinor: 1, qmlName: "RenderCapture" ); | 
| 279 |     qmlRegisterType<Qt3DRender::QRenderCapture, 9>(uri, versionMajor: 2, versionMinor: 9, qmlName: "RenderCapture" ); | 
| 280 |     qmlRegisterUncreatableType<Qt3DRender::QRenderCaptureReply>(uri, versionMajor: 2, versionMinor: 1, qmlName: "RenderCaptureReply" , QStringLiteral("RenderCaptureReply is only instantiated by RenderCapture" )); | 
| 281 |     qmlRegisterType<Qt3DRender::QBufferCapture>(uri, versionMajor: 2, versionMinor: 9, qmlName: "BufferCapture" ); | 
| 282 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QMemoryBarrier, Qt3DRender::Render::Quick::Quick3DMemoryBarrier>(className: "QMemoryBarrier" , quickName: "Qt3D.Render/MemoryBarrier" , uri, major: 2, minor: 9, name: "MemoryBarrier" ); | 
| 283 |     qmlRegisterType<Qt3DRender::QProximityFilter>(uri, versionMajor: 2, versionMinor: 10, qmlName: "ProximityFilter" ); | 
| 284 |     qmlRegisterType<Qt3DRender::QBlitFramebuffer>(uri, versionMajor: 2, versionMinor: 10, qmlName: "BlitFramebuffer" ); | 
| 285 |     qmlRegisterType<Qt3DRender::QSetFence>(uri, versionMajor: 2, versionMinor: 13, qmlName: "SetFence" ); | 
| 286 |     qmlRegisterType<Qt3DRender::QWaitFence>(uri, versionMajor: 2, versionMinor: 13, qmlName: "WaitFence" ); | 
| 287 |     qmlRegisterType<Qt3DRender::QNoPicking>(uri, versionMajor: 2, versionMinor: 14, qmlName: "NoPicking" ); | 
| 288 |     qmlRegisterType<Qt3DRender::QSubtreeEnabler>(uri, versionMajor: 2, versionMinor: 14, qmlName: "SubtreeEnabler" ); | 
| 289 |  | 
| 290 |     // RenderTarget | 
| 291 |     qmlRegisterType<Qt3DRender::QRenderTargetOutput>(uri, versionMajor: 2, versionMinor: 0, qmlName: "RenderTargetOutput" ); | 
| 292 |     Qt3DRender::Quick::registerExtendedType<Qt3DRender::QRenderTarget, Qt3DRender::Render::Quick::Quick3DRenderTargetOutput>(className: "QRenderTarget" , quickName: "Qt3D.Render/RenderTarget" , uri, major: 2, minor: 0, name: "RenderTarget" ); | 
| 293 |  | 
| 294 |     // Render surface selector | 
| 295 |     qmlRegisterType<Qt3DRender::QRenderSurfaceSelector>(uri, versionMajor: 2, versionMinor: 0, qmlName: "RenderSurfaceSelector" ); | 
| 296 |  | 
| 297 |     // Sorting | 
| 298 |     qmlRegisterType<Qt3DRender::QSortPolicy>(uri, versionMajor: 2, versionMinor: 0, qmlName: "SortPolicy" ); | 
| 299 |  | 
| 300 |     // RenderStates | 
| 301 |     qmlRegisterUncreatableType<Qt3DRender::QRenderState>(uri, versionMajor: 2, versionMinor: 0, qmlName: "RenderState" , QStringLiteral("QRenderState is a base class" )); | 
| 302 |     qmlRegisterType<Qt3DRender::QBlendEquationArguments>(uri, versionMajor: 2, versionMinor: 0, qmlName: "BlendEquationArguments" ); | 
| 303 |     qmlRegisterType<Qt3DRender::QBlendEquation>(uri, versionMajor: 2, versionMinor: 0, qmlName: "BlendEquation" ); | 
| 304 |     qmlRegisterType<Qt3DRender::QAlphaTest>(uri, versionMajor: 2, versionMinor: 0, qmlName: "AlphaTest" ); | 
| 305 |     qmlRegisterType<Qt3DRender::QDepthRange>(uri, versionMajor: 2, versionMinor: 14, qmlName: "DepthRange" ); | 
| 306 |     qmlRegisterType<Qt3DRender::QDepthTest>(uri, versionMajor: 2, versionMinor: 0, qmlName: "DepthTest" ); | 
| 307 |     qmlRegisterType<Qt3DRender::QMultiSampleAntiAliasing>(uri, versionMajor: 2, versionMinor: 0, qmlName: "MultiSampleAntiAliasing" ); | 
| 308 |     qmlRegisterType<Qt3DRender::QNoDepthMask>(uri, versionMajor: 2, versionMinor: 0, qmlName: "NoDepthMask" ); | 
| 309 |     qmlRegisterType<Qt3DRender::QCullFace>(uri, versionMajor: 2, versionMinor: 0, qmlName: "CullFace" ); | 
| 310 |     qmlRegisterType<Qt3DRender::QFrontFace>(uri, versionMajor: 2, versionMinor: 0, qmlName: "FrontFace" ); | 
| 311 |     qmlRegisterUncreatableType<Qt3DRender::QStencilTestArguments>(uri, versionMajor: 2, versionMinor: 0, qmlName: "StencilTestArguments" , QStringLiteral("QStencilTestArguments cannot be instantiated on its own" )); | 
| 312 |     qmlRegisterType<Qt3DRender::QStencilTest>(uri, versionMajor: 2, versionMinor: 0, qmlName: "StencilTest" ); | 
| 313 |     qmlRegisterType<Qt3DRender::QScissorTest>(uri, versionMajor: 2, versionMinor: 0, qmlName: "ScissorTest" ); | 
| 314 |     qmlRegisterType<Qt3DRender::QDithering>(uri, versionMajor: 2, versionMinor: 0, qmlName: "Dithering" ); | 
| 315 |     qmlRegisterType<Qt3DRender::QAlphaCoverage>(uri, versionMajor: 2, versionMinor: 0, qmlName: "AlphaCoverage" ); | 
| 316 |     qmlRegisterType<Qt3DRender::QPointSize>(uri, versionMajor: 2, versionMinor: 0, qmlName: "PointSize" ); | 
| 317 |     qmlRegisterType<Qt3DRender::QPolygonOffset>(uri, versionMajor: 2, versionMinor: 0, qmlName: "PolygonOffset" ); | 
| 318 |     qmlRegisterType<Qt3DRender::QColorMask>(uri, versionMajor: 2, versionMinor: 0, qmlName: "ColorMask" ); | 
| 319 |     qmlRegisterType<Qt3DRender::QClipPlane>(uri, versionMajor: 2, versionMinor: 0, qmlName: "ClipPlane" ); | 
| 320 |     qmlRegisterUncreatableType<Qt3DRender::QStencilOperationArguments>(uri, versionMajor: 2, versionMinor: 0, qmlName: "StencilOperationArguments" , QStringLiteral("StencilOperationArguments cannot be instanciated on its own" )); | 
| 321 |     qmlRegisterType<Qt3DRender::QSeamlessCubemap>(uri, versionMajor: 2, versionMinor: 0, qmlName: "SeamlessCubemap" ); | 
| 322 |     qmlRegisterType<Qt3DRender::QStencilOperation>(uri, versionMajor: 2, versionMinor: 0, qmlName: "StencilOperation" ); | 
| 323 |     qmlRegisterType<Qt3DRender::QStencilMask>(uri, versionMajor: 2, versionMinor: 0, qmlName: "StencilMask" ); | 
| 324 |     qmlRegisterType<Qt3DRender::QLineWidth>(uri, versionMajor: 2, versionMinor: 10, qmlName: "LineWidth" ); | 
| 325 |     qmlRegisterType<Qt3DRender::QRasterMode>(uri, versionMajor: 2, versionMinor: 13, qmlName: "RasterMode" ); | 
| 326 |  | 
| 327 |     // Auto-increment the import to stay in sync with ALL future Qt minor versions | 
| 328 |     qmlRegisterModule(uri, versionMajor: 2, QT_VERSION_MINOR); | 
| 329 | } | 
| 330 |  | 
| 331 | QT_END_NAMESPACE | 
| 332 |  | 
| 333 |  | 
| 334 |  |