summaryrefslogtreecommitdiffstats
path: root/src/render/io
Commit message (Collapse)AuthorAgeFilesLines
...
* GLTFParserMesh implements doClone and copy methodsPaul Lemire2014-08-132-31/+48
| | | | | Change-Id: Id79399535aae8b8e0f14e9edf40e05375803a64f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* AssimpMesh implements doClone and copy methodsPaul Lemire2014-08-132-26/+45
| | | | | Change-Id: If1ddbeec353d7ccea58e1a83975744c545785b7b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Small fix to be able to compile on ES2 platformsPaul Lemire2014-07-251-81/+0
| | | | | Change-Id: Ia9bce8fa9e77651a0d78f4e9bed281ac946fb233 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAbstractMeshFunctorPaul Lemire2014-07-194-11/+62
| | | | | | | | | | | | | Each QAbstractMesh class now has to implement a QAbstractMeshFunctor class. When a mesh is set to dirty, the functor is sent through a QChangeArbiter notification to the backend. The backend, using the functor can then rebuild the mesh. There should be no issue if the frontend mesh is deleted while the backend is creating the mesh as the functor has no direct reference to the frontend element and contains all the data needed for a complete creation of the mesh. Change-Id: I4984f03a612e74c688bfb6cc2f19d9241b517457 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renamed ShaderProgram to QShaderProgramPaul Lemire2014-07-093-5/+5
| | | | | Change-Id: I7a9fd824f1975791ee7448023d089e06c34de69d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renamed Camera to QCameraPaul Lemire2014-07-093-4/+4
| | | | | Change-Id: I8a37bd9d2f24d77c4f4a3aec41028df0b292d7c6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renamed CameraLens to QCameraLensPaul Lemire2014-07-093-8/+8
| | | | | Change-Id: I3436d48f08f5eb29fd821538d9d88e12a48a305a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renamed Parameter to QParameterPaul Lemire2014-07-093-62/+62
| | | | | Change-Id: I1377b93ca06a838a625d38db8b77ebcee438b203 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Automatic Binding for AttributesPaul Lemire2014-07-092-10/+27
| | | | | | | | | | | QAbstractMeshData has a set of static methods returning default names for vertex position, color, normal, textcoord and tangent so that mesh loaders can use those when building their MeshData. As with uniforms, a ParameterMapper can be used to map additional/custom named attributes. Change-Id: I8ad116a1cccabc981c2ce196e920fbe88834be06 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Automatic uniform bindingPaul Lemire2014-07-071-26/+26
| | | | | | | | | | | | | | | | | | If the shader contains a uniform with a standard uniform name, it will automatically be set. If a custom name is used within a shader for a standard uniform variable, the user can add a ParameterMapper with parameterName set to the Qt3D standardUniform name and shaderVariableName to the custom name. For user specified uniform parameters, if the parameter name is the same as the shader uniform name, the binding is done automatically. Otherwise, a ParameterMapper can be used. At the moment automatic binding for Attributes still has to be sorted out as default attribute names are dependent on a given MeshData. Change-Id: If244b26e5c2b01c8b319ba78c57fb1e131736dcb Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Prefixed Q to transformsPaul Lemire2014-07-062-3/+3
| | | | | | | QAbstractTransform also has a d-pointer. Change-Id: I577dc48d21545f4f5cd1320529951612cbef0739 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Renamed Transform to QTransformPaul Lemire2014-07-052-5/+5
| | | | | Change-Id: Ic7ee353afbc8872f5f5a85662acc190ccae4d178 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renamed Entity to QEntityPaul Lemire2014-07-055-28/+28
| | | | | Change-Id: I16b3d967e1244e3d47bffd36f6284a0e9ef0a89f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renamed Node to QNodePaul Lemire2014-07-054-4/+4
| | | | | Change-Id: I0a0ebde1c107db8831b596eab1e512a2062979f7 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Refactored QAbstractMesh, QMesh and QAbstractShapeMeshPaul Lemire2014-07-054-7/+61
| | | | | | | | | | | | The Backend now monitors QAbstractMesh elements instead of QMesh. QAbstractMesh subclasses have to implement a load method. For QMesh it uses the ObjLoader to create MeshData from a source file while QAbstractShapeMesh loads MeshData created by code. Each scene parser can then implement its own QAbstractMesh subclass. The loadmeshdatajobs has been corrected and works with QAbstractMesh. Change-Id: I5caae63a153f18eaae3b2f1bdbfa8995c63a2d23 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Refactoring of MeshData, Buffer, Mesh and AttributePaul Lemire2014-07-0514-496/+843
| | | | | | | | | | | | They are now subclasses of the abstracts defined in the previous path. QAbstractMesh's source property was transferred to QMesh, this will allow to have ShapeMeshes subclass QAbstractMesh directly and not have a useless source property. MeshData, Buffer and Attribute moved to their own files and properly d-pointered. Change-Id: I6d09b00a17045826e16503f5fb2d8f8eb0f2abf2 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Abstract IO classes for MeshData, Attribute and BufferPaul Lemire2014-07-051-4/+0
| | | | | Change-Id: I78951aa516a0001342d6abd326c9ec1e42de6d8f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QRenderPass renamed and d-pointeredPaul Lemire2014-07-051-1/+1
| | | | | Change-Id: I73a7f64491392eb24d8f2c8eb5ad4c0590e572ce Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renamed Technique to QTechniquePaul Lemire2014-07-052-5/+5
| | | | | Change-Id: Ia54e752c77cdf6f2b45bc616dc57cd6a0d84166e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Rename Effect to QEffectPaul Lemire2014-07-053-6/+6
| | | | | Change-Id: I70aa9c61f6670a01d328c390d4bc1698fc1d1901 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renamed Material to QMaterialPaul Lemire2014-07-054-25/+25
| | | | | Change-Id: I6a3a980411a31ab26dd17a8bc2aa65f67a5209ea Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renamed Mesh to QMeshPaul Lemire2014-07-054-12/+11
| | | | | Change-Id: Ic6a6a67814a992bef4c88b3409b140b011509668 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* AssimpParser: use Parameters to set texturesPaul Lemire2014-06-282-7/+41
| | | | | Change-Id: I481ce63235d1e7955c781831d4da0f9e71afa471 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Parameter : new ctor taking name and value.Paul Lemire2014-06-281-13/+13
| | | | | | | | Specifying the type is now optional. The type enum is kept for the time being as it may have a use later on. Change-Id: I01a934bd3d38f790c21cc2ec488843232795685e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* TextureData pass parameters by const ref instead of valuePaul Lemire2014-06-282-5/+4
| | | | | Change-Id: I7b278d4d7c4c463f5daeb167fc5ff41337c293ba Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Texture updatedPaul Lemire2014-06-271-5/+5
| | | | | | | | | | | Added Q_PROPERTY to be able to set all values from QML. Couldn't register QOpenGLTexture enums directly as QOpenGLTexture is not a QObject so enums values where copied to Texture. A static_cast allows to convert directly a Texture enum to a QOpenGLTexture enum. Corrected Quick3DTexture and registered it as an extended type. Change-Id: I1a99a2dd549722cd647cc53f60e720e0c4039df9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Cleanup of ParameterPaul Lemire2014-06-271-8/+8
| | | | | | | | | | | A Parameter is now used only for user specified uniforms. For StandardUniforms and Attributes we could rely on the ParameterBinder. In case a mesh attribute or standard uniform doesn't have the default name used by Qt3D shaders (that will have to be specified somewhere), a ParameterBinder could be added to solve that issue. Will see how that goes in a follow up patch. Change-Id: I41bd0d4ef2ac731c109f87fca5b28571074bfba5 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Replaced default QStringLiteral value by QStringPaul Lemire2014-06-171-1/+1
| | | | | | | | This was causing an issue on Windows. Change-Id: Ia6be4d7e97a463f27bcebf62809e0f416591b70a Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Refactoring of Renderer, RenderMaterial and RenderTechniquePaul Lemire2014-06-141-17/+18
| | | | | | | | | | | | | Removed most of the methods that were needed by the hacked Renderer. The default technique has also been modified to use ParameterBinder. The Renderer now has a simpler submission pass. Note: This restores rendering of all examples as the default material is used if none is provided. On the other hand this should trigger warnings in the console. Change-Id: I20955bdc96b2844b2b33e46202c3e0e20634cc64 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Compile again on OS XSean Harmer2014-06-123-10/+10
| | | | | Change-Id: I5c3dc490e6b324733713b791dcfa61305378d904 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Refactoring of Parameter and MaterialPaul Lemire2014-06-072-21/+22
| | | | | | | | | | Material now contains a list of Parameters. Quick3DMaterial has a list of Parameter instead of generic Tags. Changes the ways parameters were set in the default technique and in the the scene loaders. Change-Id: I53d968d0c94374b8b5000c1e7b3c582807e1ff5a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Use enum for OpenGL Types in ParameterPaul Lemire2014-06-071-3/+41
| | | | | | | | | | | | | This offers a way not to have to include any related OpenGL header at that point. That way we can, depending on the enum's value and the types available when rendering determine the correct GL types. Note: It seems the GLTF as evolved or that the parser isn't correct as it expects raw GL values instead of String for types which contradicts the current specifications. Change-Id: I78a1a70d1dac429ab6bad23aacdac48a16cd1025 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Move Parameter to its own filePaul Lemire2014-06-071-0/+1
| | | | | | | Corrected includes accordingly. Change-Id: Ic060314a976061a62c42a3006a7a93090202bf83 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Removed EntityNodePaul Lemire2014-06-025-29/+28
| | | | | | | | | | | | Entity and EntityNode are back to being the same class. This is ground work needed to have a QML API based on extending C++ types rather than having two distincts API subclassing common interfaces. Note: this patch won't properly compile alone. It should be staged with follow-up patches. Change-Id: Icd98c6c687ca06f18056ebd7a2d6555a7ba7ffa3 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix a dangling pointerGiuseppe D'Angelo2014-06-021-1/+2
| | | | | | | | | | Buffer::data() returns a QByteArray by value, that means constData() returns a pointer to a QByteArray which gets destroyed at the end of the statement. Then, using that pointer becomes extremely dangerous (dangling). Fix it by storing the QByteArray locally. Change-Id: Iaed2bd344061bec8bff713c2c1fd81773864c7a5 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Renamed EffectNode to EffectPaul Lemire2014-05-312-4/+4
| | | | | Change-Id: I9f50b8d04bc74838850a6516f430ed4f177ebbd8 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Replaced QmlTexture by Quick3DTexturePaul Lemire2014-05-305-164/+5
| | | | | | | | | Separated Texture from TextureData. Quick3DTexture is a sublcass of Quick3DNode and Texture. This is part of a serie of patches aimed at specifying how Uniforms and Textures are going to be defined from QML. Change-Id: Ia1a9acfc4d9b07299a103bdbbffcc34aa4b79177 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* AssimpParser : buffer allocation fix.Paul Lemire2014-05-291-3/+4
| | | | | | | Avoids allocating two buffers when one is enough. Change-Id: I751191af922243725dac772574b27d39bf8a9bcf Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Quick3DScene and SceneNodePaul Lemire2014-05-251-1/+1
| | | | | | | | | | | Examples updated to work with those new nodes. Quick3DScene and SceneNode subclass Quick3DEntity, Scene and EntityNode, Scene respectively. This will later ease the process of exposing Cameras loaded from a scene file to be used by a CameraSelector in the FrameGraph. Also it allows to add children Node to the scene on the Qml side. Change-Id: I6843efd0aff60e51a9bd16c63ce19011afd5a8e5 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Quick3DEffect and EffectNodePaul Lemire2014-05-252-4/+4
| | | | | | | | | | | | | Effect has been transformed to a non QObject abstract. EffectNode and Quick3DEffect subclass Effect. This was needed so that Quick3DEffect can have node children such as ShaderProgram. Few changes to the backend and renderer to accommodate that a Material's effect is now returned as a Node instead of an Effect as an Effect cannot be registered as qml types as it has no QObject base. Change-Id: Ief40f1d784151a085f244c35b3ed09a93dcc153e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Abstract Entity, EntityNode and Quick3DEntityPaul Lemire2014-05-245-27/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because Node no longer holds QQmlListProperties, Entity which inherited Node could'nt be used to have nested children in Qml because there was no longer a data DefaultProperty. To solve that issue Entity has become an abstract class encapsulating most what an Entity used to contain. EntityNode is a class bound to be used by the C++ API and it subclasses Node and Entity. Regarding the Qml API, Quick3DEntity subclasses Quick3DNode and Entity. RenderSceneBuilder and NodeVisitor have been slightly modified to work with those changes but the backend is pretty much the same. The big change is that Entity is no longer a QObject and no logner inherits Node. That means Node and Entity have to be used along side on the backend. On the frontend or other Aspects subclassing EntityNode or Quick3DEntity should be pretty much the same as subclassing Entity prior this change. Component classes have not been touched so they cannot contain nested QtQuick2 elements in QML. As Entity and Nodes can hold QtQuick2 Components this isn't a big issue. Also as the DefaultProperty of each Component subclasses may differ, keeping them as they are at the moment could make sense. Note: This patch restored rendering. The code is a bit messy at the moment but necessary to keep commits small. Follow up patches will clean things up a bit and move the Qml and C++ API in distinct subprojects. Change-Id: Ia048812f51bbbd43ec2ee754b5120b7ec3174436 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Transform updates synched with QChangeArbiterPaul Lemire2014-04-301-1/+1
| | | | | | | | | | | | Transform monitor changes of each of its AbstractTransform objects. On a change, it notifies the QChangeArbiter. The QChangeArbiter tells the associated RenderNode about the change. The RenderNode updates its localTransform matrix. Small typo correction appendTransform instead of appendTransfrom. Change-Id: I8613cda1b3c7b7211722f78585ac75736528f86a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Hookup Assimp scene loaderPaul Lemire2014-04-302-7/+6
| | | | | | | | | | | | | | | | | Assimp scene loadet hooked up. Required a few changes to VAOManager and MeshDataManager. MeshData aren't indexed by their sources any longer as a Mesh can set its data either by having a source (obj scene file) or by a raw MeshData (case of scene loaders). MeshData are now indexed by their frontend Mesh's uuid. The LoadMeshDataJobs and RenderSceneBuilder have been slightly modified to incorporate those changes as well. Note : VAOManager has to be a QArrayResourcesManager instead of a QListResourcesManager. Change-Id: Ia874e58871ab221636e0c5701d8a566642e663d2 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Categorized logging in RendererPaul Lemire2014-04-225-46/+48
| | | | | | | | | | | | | | | Logging categories in Renderer : -Backend -Frontend -Framegraph -Io -Jobs Also cleaned up things here and there while going over various classes. Change-Id: I8bf1da0769c764621236dc45e954d193c768e2af Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* MeshManager using QArrayResourcesManagerPaul Lemire2014-04-152-3/+3
| | | | | | | Updated mesh objloader and loadmeshdatajob to work with handles. Change-Id: Id85d1d796c9851a992d39469e13348c75904ab79 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fixed syncqt warningsPaul Lemire2014-04-045-17/+17
| | | | | Change-Id: Ib9cf181a766f5ee31485c61e8cd6ae08185720af Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* signals: -> Q_SIGNALS:Sean Harmer2014-04-041-1/+1
| | | | | | Change-Id: Ie39e3f171293a5c4877077b99302352025ad68e3 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix builds with namespaced QtSean Harmer2014-04-0214-25/+64
| | | | | | Change-Id: I15a4a472f5283c56c8185b05699e33368c45ddb0 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Camera is replaced by CameraLensPaul Lemire2014-03-304-37/+37
| | | | | | | | | Camera is now a subclass of Entity containing 2 componets : - A Transform with a LookAtTransform - A CameraLens Change-Id: I43f18f8919d640ebf28d3118498b680f71ad5388 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Transform componentPaul Lemire2014-03-302-5/+16
| | | | | | | | | | | | | Moved transforms out of Entity. That way it will be possible to properly separate camera optics and transformations as well as having Entity without a list of transfmortations. Note : This commits breaks matrices computations as matrix is removed from entity. Matrices computations will be restored when the framegraph is implemented. Change-Id: Ibdd0f23a49a8666385b086ecc551c8fad3b9a420 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>