summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
* Create proper plugin infrastructure for sceneloadersAndy Nichols2015-11-0413-27/+152
| | | | | | | | Now Qt3D sceneloaders plugins follow the same pattern as the rest of Qt. This also makes the loading much more standard and less error prone. Change-Id: Ibb5aae0a16d9d197a9c34fe2885dd5435e68d7eb Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* assimp: Fix warnings about FileSize() const Q_DECL_OVERRIDEAndy Nichols2015-11-041-1/+1
| | | | | Change-Id: I1d7241ba8177c664b5d4df4ec50afd2a7c830ff2 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Rename QOpenGLFilter to QGraphicsApiFilterAndy Nichols2015-11-031-13/+13
| | | | | | | | | | | | | | | | | | | | | | This API change is part of an effort to remove anything specific to one graphics API (in this case OpenGL) from the public APIs. In addition to the name of the class being changed, the QGraphicsApiFilter::Api has been refactored to reference the Graphics API, rather than an OpenGL API. Now this list includes OpenGL, and OpenGLES, but could also include Vulkan, DirectX, or any other graphics rendering API we wish to support in the future. Right now the properties in this class are still reflective of the OpenGL APIs, and may need to be extended with other properties in the future for other rendering technologies. The QGraphicsApiFilter::Profile enum has also been changed to be more more clear. So for now there are enums NoProfile, CoreProfile, and CompatibilityProfile. Task-number:QTBUG-49078 Change-Id: Ib5f9c3b7adee5badec6bce8a12b23683eb43b4cb Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* d-pointer classes, private/public changesTomi Korpipää2015-10-301-3/+3
| | | | | | Change-Id: I4ca133aebad0c088296ab293f95f0a6d76d18395 Task-number: QTBUG-39946 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Rename Renderer -> Render throughoutSean Harmer2015-10-196-40/+40
| | | | | | | | This is for consistency between the C++ namespaces and QML imports and with the other aspects. Change-Id: I73392f138b4e519b12888f52530123e3d0ba445e Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Move Qt3DCore into Qt3DCore namespaceSean Harmer2015-10-134-26/+26
| | | | | | | Update other aspects, tests and examples accordingly. Change-Id: Ib1bcf0bdf4f5aec4422dc0c80bfc32b27fb1a317 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Add "We mean it" warnings to private headersSean Harmer2015-10-133-0/+33
| | | | | Change-Id: Ic4a69123255c33990765ea3601e01914c2d8cb70 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Move Render aspect into the Qt3DRender namespaceSean Harmer2015-10-136-44/+54
| | | | | | | Updated examples and tests accordingly. Change-Id: I8848a88472de2302aa072fa11f21ea934672b7e6 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Support uint in glTF parserv5.6.0-alpha1Laszlo Agocs2015-09-011-0/+2
| | | | | | | | Index data will be int when short is not sufficient. Change-Id: Ic166cf2d073c99cf6c9e269e0cc1e0dac5e835fc Reviewed-by: Pasi Keränen <pasi.keranen@digia.com> Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Cleanup: remove QAbstractMesh/QMeshData/MeshDataManagerPaul Lemire2015-08-113-6/+2
| | | | | Change-Id: I1f13cea4cf864dcf985d1f487e195509de9006e7 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* glTF: Support generating and using Core profile and GL2 shadersAndy Nichols2015-08-082-12/+73
| | | | | | | | | | | | | | | | | | | | This change effects both the qgltf tool and the gltfparser. For the qgltf tool I change the way core profile shaders are defined. Rather than adding an additional property to the shader object, I create the necessary shaders, programs, and techniques, as well as add an additional two properties to the Material so that that multiple techniques can be used. By default the shaders support OpenGL ES2 and is compatible with the glTF 0.8 standard. For the gltfparser, I now create additional QTechniques from the two new properties attached to the material object when they exist. This allows for the use of OpenGLFilters to choose which technique to use under certain situations. So now it is possible to render modules processed with qgltf in the OpenGL Core profile senario. Change-Id: Iae10f93a03c29a7bb6fe0a3dfd0d568ba0043f12 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* glTF Parser: Support loading binary json scene dataAndy Nichols2015-08-081-1/+6
| | | | | | | | We support generating gltf files using binary json rather than plain text with our qgltf tool. This reduces metadata file sizes and load times. Change-Id: I99a4c270aa4b0b828cddfbdcce02dce206606708 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add support for loading scenes from glTF 0.8 filesAndy Nichols2015-08-084-0/+1553
| | | | | | | | | | | | | | | This patch includes a new scene parser plugin which enables the loading of glTF files (using the 0.8 spec) into Qt3D scenes. The gltf example has been updated to work with the current APIs and the asset files it used have been updated to match the glTF 0.8 spec requrements. Previously an unused copy of the GLTF scene parser was located in render/io. It was being built, but not used as only plugin based sceneloaders were loaded by the renderer. Now it should be usable and always available. Change-Id: Ic2e31e2b63a871559aad9bad90ec2820988a1571 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* AssimpParser converted to use QGeometryRendererPaul Lemire2015-08-072-118/+51
| | | | | Change-Id: I17339cfc3b7c05ee915c7b2dae359bf844c15036 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAbstractAttribute: Type abstracted with an enumPaul Lemire2015-08-071-9/+9
| | | | | | | Also added a dataSize property to know the number of components per vertice (1 - 4) Change-Id: Iaa7cee2a53958ed2ec2f603f3ffc7971c027991d Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* New Buffer API Frontend ClassesGiuseppe D'Angelo2015-08-071-30/+30
| | | | | | | | | | | | | | | - Switch QAbstractAttribute and QAbstractBuffer to QNode subclasses - Get rid of all shared pointer when dealing with these (needed to expose to QML and use the QObject ownership) - Introduce QGeometryRender, QGeometry, QAttributeProvider, QAttributeAggregator. A QMesh component now is: a QGeometryRenderer which specifies its QGeometry. The QGeometry refererences n attributes. Each attribute references a QAbstractBuffer. Change-Id: I49a10c11a605e5fe7c180af86a404f622e763f48 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Re-add libassimp 3.1.1 to 3rd partyAndy Nichols2015-08-022-7/+10
| | | | | | | | | | | | | | | | | Previously the assimp library was a dependency that was always built, but it is possible to use an external system version if one is available. It is however non- trivial to provide the dependency on platforms other than Linux, so now we provide a copy of libassimp for use when it is not already available. This commit is a combination of reverting commit 672b3e47299f6ba0034f73b252d0436b55fb3085 which removed assimp and introduced the scene parser, and adding the logic to use the system version when available. Change-Id: Ia05f9a92b8d82f19a0db3588b2bbeafe71404386 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Functors: remove dynamic_castPaul Lemire2015-07-281-13/+19
| | | | | | | | | | | | | | | Introduce a QAbstractFunctor class which QAbstractMeshFunctor and QTextureDataFunctor subclass Make all QAbstractFunctor subclasses implement an id() function (using QT3D_FUNCTOR(Class)). Use this id to compare to other QAbstractMeshFunctor and eventually static_cast into right type if possible using the functor_cast member function. Change-Id: Iface956e6cd818cbef204d8fa7bf2bc23c6ffa3f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNode parent changesPaul Lemire2015-06-111-0/+6
| | | | | | | | | | | | | | | - introduce QNode::setParent(QNode *) - QNode created with explicit parent now invoke QNodePrivate::_q_addChild - QNode::cleanup introduces, need to be added to the dtor of every QT3D_CLONABLE QNode subclass. Handles proper destruction. - QNode::cleanup added to all classes that should have it. - Updated unit tests of Nodes, Entity, Scene Change-Id: Id2c2784122a78edaae5580fe5976d88be5a1921c Task-number: QTBUG-45947 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add semicolon to Q_UNUSED expressionsMarc Mutz2015-06-111-5/+5
| | | | | | | | It compiles without, apparently, but it throws off QtCreator's parser, at least. Change-Id: I69939cdb3c28f39458488190b1169c152a339ccf Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Link assimp scene plugin on hosts with a system Qt5 installedSean Harmer2015-06-061-3/+1
| | | | | | | | | | | | | | Using PKGCONFIG_PRIVATE results in the -L/usr/lib -lassimp being placed at the end of the linker command line rather than the start as with PKGCONFIG. The latter breaks the build if there is an installed system Qt5 of an older version in the same directory as found by the assimp pkgconfig file. The breakage is caused by undefined symbols in the older version of Qt in the system directory. Change-Id: I691b437eadc8b6fec385374d0910344ed194933b Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* [AssimpParser] Optimize aiString to QString conversionKonstantin Ritt2015-05-201-8/+16
| | | | | | | Respect aiString::length to avoid strlen(). Change-Id: I284d061da1dd62de0dda4b72da417cfbc1e99d85 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* AssimpParser: create most appropriate texture materialPaul Lemire2015-05-102-39/+95
| | | | | | | | | | Also fixed material loading issue (was using wrong material index) Note: the flag aiProcess_FlipUVs was required to have textures displayed correctly. Change-Id: I3f5b436fad20d6bf50c8e5ddca56f78948b44fec Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Doc: Fix multiple C++ documentation issuesTopi Reinio2015-04-142-29/+30
| | | | | | | | | | | | | | | | | | | - Remove multiple \namespace commands for namespace Qt3D. QDoc in 5.5 is now able to collate namespace members from multiple modules. - Mark 'Q...Private' classes and functions taking private arguments as \internal - Use correct \qtvariable for Qt 3D Core and Render - Add src/plugins directory to Qt 3D Core documentation build to correctly generate Assimp-related documentation. - Ensure documentation for C++ properties is visible by using the \property command instead of documenting the setter/getter functions. - Add export and logging macros to qdoc ignore directives - Remove unnecessary use of \fn command - Language and styling fixes Change-Id: I2481fa30ad2f6869b85c038c20ff1730b8522d46 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* [Assimp scene loader] Fix loaded camera orientationKonstantin Ritt2015-03-161-12/+8
| | | | | | | | | | | There were several bugs in a single place: - aiCamera::GetCameraMatrix() produces a viewing matrix flipped around Y - additional QMatrix4x4::lookAt() transformation has been applied - and moreover, QMatrix4x4::lookAt(.., .., QVector3D(0, 0, 0)) produces an invalid matrix at all. Change-Id: Ie2a80810d76df0f0c39c3ae53adfdf52b06aafc1 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* [.*SceneParser] Minor clean-upKonstantin Ritt2015-03-162-21/+13
| | | | | Change-Id: I171a3e44383f2f5160b24113de6d92725ed19fe9 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Make scene parsers operate on URLs instead of raw filenamesLaszlo Agocs2015-02-132-4/+7
| | | | | | | | This way they are compatible with how mesh and texture source URLs are handled. Change-Id: Ifeee504fd3f5957d23f5cade92a73663488bdaf9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Avoid polluting the filesystem with AssimpLog.txt filesLaszlo Agocs2015-02-101-2/+0
| | | | | | | | | | Every time the assimp plugin is loaded, that file gets created. Avoid the create and kill calls since all that achieves is to install a null logger. According to the assimp docs a null logger is the default anyhow, so simply remove the two lines. Change-Id: I12dd50827218dcb07d7d5889398e9daf31789953 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Copyright header change.Mika Salmela2015-02-094-76/+56
| | | | | | | | As for preparation for Qt5.5 release the copyright header is updated to correspond the current license requirements. Change-Id: I36632918b66f455539453b42c369689fb11298ec Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Assimparser updated to use new Texture APIPaul Lemire2015-02-081-21/+75
| | | | | Change-Id: I4c030458ecf15d9620d071573f911052fb5a6973 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Texture API refactoringPaul Lemire2015-02-081-1/+1
| | | | | | | | | | * Added LoadTextureDataJob * QAbstractTextureProvider: maximum layers property * Automatic QAbstractTextureProvider::TextureFormat added * material-qml should work perfectly with that patch. Change-Id: I3f92f13b783155798772086304a30126a4fc687d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Make ctor of QAbstractTextureProvider protectedPaul Lemire2015-02-081-2/+2
| | | | | | | That enforces to use one of the subclasses. Change-Id: Idba7300ed322954ba6866c4a262ad4ee74c024e5 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QTexture renamed to QAbstractTextureProviderPaul Lemire2015-02-082-5/+5
| | | | | | | | | | This is done prior to the whole texture API refactoring. Doc was also added, might need improvement later on but a base is present at least. Change-Id: I75589f14dfbfba7bc4250b2e0960670e020ed38a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Minor improvements to Qt-Assimp briging codeKonstantin Ritt2015-01-282-25/+25
| | | | | Change-Id: I3301a3615443bfd361de97de79b587e22517cf66 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* AssimpParser: use QPhongMaterial to provode default coloringPaul Lemire2014-12-311-6/+7
| | | | | | | | | | The following examples now have coloring: cpp-example multiviewport assimp Change-Id: Ib068ea1f169e5eb924f3b363edd9c4f7f4ef854e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Stop qmake thinking a plugin is a module tooSean Harmer2014-12-211-1/+0
| | | | | Change-Id: I7cf85692cf86bc0c5a4aceaa3af01f9e0ef3f5ce Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* renderlogging.h -> renderlogging_p.hSean Harmer2014-11-191-1/+1
| | | | | Change-Id: I985366c47d2a1f721761c64b1870850071ace885 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QTransform refactoredPaul Lemire2014-10-301-3/+2
| | | | | | Change-Id: I9c05c37b7f9576b81169c30686de96c9267e4854 Task-number: QTBUG-41542 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QTexture refactoringPaul Lemire2014-10-301-2/+2
| | | | | | | | | | | | | | Target is now set in the ctor from C++. On the QML side, there's a QTexture subclass for each target. WrapMode on s, t, r for texture, accessible as a grouped property in QML. Note: I left out the static fromImage as I didn't really understand their purpose. Please let me know what I'm missing. Change-Id: I16f75283ae459cbd8ab2d1ec53584b3022bc965b Task-number: QTBUG-41537 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QMeshData: enum for primitivesPaul Lemire2014-10-221-1/+1
| | | | | | | | | | Each value in the enums maps directly to the correct GLint for a given primitive patch. This allows to still return an int to be used directly by the renderer. This should also fix compilation error of ES2. Change-Id: I7ec54dcb2cbb02b67fa6225bb80fb7e691687e2c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAbstractMeshData merged with QMeshData and moved to RendererPaul Lemire2014-10-222-9/+9
| | | | | | | That implied moving QAbstractMesh to Renderer as well. Change-Id: I9013bf0458b849f7805d214a70580a80e86d8c84 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAbstractMesh: setDirty -> updatePaul Lemire2014-10-201-1/+1
| | | | | | Change-Id: I8e4094d69446ec8290fa34e4875f5e1cf822054c Task-number: QTBUG-41522 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Hide doClone implementations behind a macroKevin Ottens2014-10-151-8/+1
| | | | | | | | | This way we will avoid inconsistencies. It also means making some of the copy() implementations more clever. Change-Id: Ic79c9ec7c9c32f8951d5d9f5184592880bf8d5fd Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNode refactoringPaul Lemire2014-10-031-7/+7
| | | | | | | | | | | | | | | | Move almost everything to private classes. Assimp loading restored. All examples working. QNode hierachy is now handled through QObject::setParent, addChild, removeChild are part of the private api. Note: commented QChangeArbiter unit tests as they can no longer work with this patch and will restore them when QChangeArbiter will have been made private. Task-number: QTBUG-41470 Task-number: QTBUG-41523 Change-Id: I4430974b3aa7f3744c38714b451b122e0cb4d0c9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* AssimParser slightly refactoredPaul Lemire2014-09-302-90/+105
| | | | | | | | | | | | | | It turns out that Assimp doesn't export the dtor of aiScene. We used Importer::GetOrphanedScene to manage ourselved the lifetime of aiScene. However as the dtor is not exported, changes had to be made to let Assimp manage the lifetime of aiScene. It was probably working before because I had a local build of Assimp but, the issue appears with distro packages. Change-Id: I14f2b5c7bae1555961bc47fa335d54c2f0bc969a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Improved/Refactored cloning and doClone off all subclassesPaul Lemire2014-09-301-17/+21
| | | | | | | | Note: As we are using QScene during cloning, it is important that node hierarchy be created and added in the proper order (parent then child). Change-Id: I8fd53f7ca696ec9aca19cc70dc116ccba4154911 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Comparison operator for QAbstractMeshFunctor subclassesPaul Lemire2014-09-301-0/+6
| | | | | Change-Id: I18f0c46631615787a5505f7591514bfd33ac6bd0 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QParameter new overloaded ctorsPaul Lemire2014-09-291-15/+15
| | | | | Change-Id: Ia6e3c3285884265b303485176109a4d2c80ccabe Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Assimp external dependencyPaul Lemire2014-08-197-0/+1365
| | | | | | | | The AssimpParser is now a SceneParser plugin that is build if config tests for assimp succeed. Change-Id: I0e3f6a6ce2a43298b71b0261084f6c79521f214d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Deprecate the plugin architecture for asset loading.Sergey Dubitskiy2012-05-0337-3795/+0
| | | | | | | Task-number: QTBUG-25478 Task-number: QTBUG-24409 Change-Id: If781dc949e3cd7f9b1f83fd7f9e778833d6fe595 Reviewed-by: Sergey Dubitskiy <sergey.dubitskiy@nokia.com>