summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Move GeometryRenderManager to its own filePaul Lemire2015-08-077-13/+135
| | | | | | | This is needed to add logic for geometry functors that needs to be loaded. Change-Id: I06e59447c41ea8e08cfdb77fc94084837afebeac Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderGeometryRenderer: copy functor from frontend nodePaul Lemire2015-08-073-0/+59
| | | | | Change-Id: I367e1f736d1a55e76fdd4633a9da34832db9bae7 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QGeometryRenderer: add a QGeometryFunctor memberPaul Lemire2015-08-074-0/+77
| | | | | Change-Id: I43219476a1d0a6d4fd9675a2875e0a091a131f5e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderMesh: remove unit testsPaul Lemire2015-08-073-189/+0
| | | | | | | RenderMesh is replaced by RenderGeometryRenderer which is also unit tested Change-Id: Ia123350ba881aadd4728d083e0ceb1b4b76fa684 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renderer: fix properly compute geometry draw countPaul Lemire2015-08-072-13/+14
| | | | | Change-Id: I77e0e319a45e91acb1312d1616b030285f215393 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* AssimpParser converted to use QGeometryRendererPaul Lemire2015-08-072-118/+51
| | | | | Change-Id: I17339cfc3b7c05ee915c7b2dae359bf844c15036 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QTorusMesh converted to QGeometryRenderer subclassPaul Lemire2015-08-072-198/+305
| | | | | Change-Id: I19ae5dc944de3eab3081eda4b4ad95863c182e4d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QCylinderMesh converted to QGeometryRenderer subclassPaul Lemire2015-08-072-228/+349
| | | | | Change-Id: I4ec30f6a4c497630132a546bfefc571df339c3ae Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QSphereMesh converted to QGeometryRendererPaul Lemire2015-08-072-191/+310
| | | | | Change-Id: I87c277b51f815599ae59cebcf6a13ebb9eeccbea Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QCuboidMesh converted to a QGeometryRendererPaul Lemire2015-08-074-358/+450
| | | | | Change-Id: Idb08f1008c6b566b2d381c4fc8e70c8b5894b146 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QPlaneMesh converted to be QGeometryRenderer subclassPaul Lemire2015-08-075-263/+303
| | | | | Change-Id: I746cd7bc2e2c6635bde0cc16571eebf91ced39ed Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Update RenderBuffer/QBuffer unit testsPaul Lemire2015-08-074-5/+101
| | | | | Change-Id: Iadb91977da8927544bd3b90ee512128367d70b84 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Rework Renderer to use BufferFunctorPaul Lemire2015-08-0714-135/+122
| | | | | | | | | | | | | | | Each buffer when it receives a new functor adds itself with the buffer manager. This then allows to build LoadBufferJob instances for each buffer to be loaded. The buffers can then be loaded before a frame is rendered. The GeometryRendererManager has been moved back with other managers and the BufferManager takes its place to handle the additional management of dirty buffers. Renderer updated accordingly. Change-Id: I5df839b56d18de077e1ff2921cb481ed8f613567 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QAbstractAttribute: Type abstracted with an enumPaul Lemire2015-08-0724-209/+388
| | | | | | | 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>
* QBuffer/RenderBuffer: add a functor propertyPaul Lemire2015-08-076-2/+40
| | | | | Change-Id: Ic896425284c69a4cd71365b592444ce7edbc2dc2 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renderer: keep VAO bound within command executionPaul Lemire2015-08-071-6/+0
| | | | | | | This avoids useless binding unbinding Change-Id: Ibe1d76db0d58cf385ab2e5884a56174938ae307d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QBufferFunctor: provides a way to load buffer data in jobsPaul Lemire2015-08-072-1/+67
| | | | | Change-Id: If3cb6c55ea80191c87470d8bed7a5a0c7b16d214 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAbstractBuffer/QBuffer cleanupPaul Lemire2015-08-073-49/+2
| | | | | | | | Remove method that aren't needed anymore since the backend takes care of creating and abstracting resources to be used with the Graphics Rendering API Change-Id: Ib862fed16a4a775abfe85b707e33294f53a5b1a1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renderer: render using GeometryRenderer and GeometryPaul Lemire2015-08-077-84/+233
| | | | | | | | Note: This breaks rendering with QMeshData. All the default meshes will be ported to QGeometryRenderer in follow up commits. Change-Id: I33f85c079c40fa675e06c5a49fdc9029507318e0 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QGeometryRenderer: add a primitiveCount propertyPaul Lemire2015-08-077-1/+65
| | | | | | | This will be used as the count to pass to the draw calls Change-Id: I2bccb35775cd6ba1132944d4d91aa5724ab00033 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add qgltf toolLaszlo Agocs2015-08-074-0/+2460
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This tool, integrated with qmake, converts anything assimp imports into glTF 0.8 that is then packed, together with all external resources, into compressed Qt resource files. This allows importing models, typically provided as .obj or .3ds or Collada, into applications, while ensuring fast load times even on slower embedded/mobile devices. When the prf rule is installed, applications can add the following in their .pro files: MODELS = model1.obj model2.dae model3.3ds load(qgltf) The result is three .qrb files that can be registered to the resource system and deployed alongside the application. These compressed external resource files contain all the glTF, mesh binary, extracted embedded textures, external textures, and shaders under a /models prefix. Deployment is also automated as the qrbs are added to INSTALLS and thus get deployed alongside the binary onto the target device. Parameters can be set in QGLTF_PARAMS before the load(). See qgltf --help. This is a host tool, suitable for cross-compiling environments. The downside is that it cannot use QtGui and thus some texture functionality relying on QImage is disabled for now. The technique and shaders are pre-defined and selected from a set of built-in shaders (color, diffuse-map, diffuse-specular-map, normal-diffuse-map, normal-diffuse-specular-map) based on the material parameters encountered. The texture and sampler parameters are fixed and should be good enough for most cases. Importing shaders or advanced type of materials is not an option since formats like .obj will not come with any detailed information on this. The output will always contain a single, dummy point light for now. Supported texture parameters: diffuse, specular, normal Supported color parameters: diffuse, specular, ambient Supported float parameters: shininess Other material parameters are ignored. Passing -g generates version 150 core shaders in addition to the GL(ES) 2 ones. These are referenced from a custom "uri_core" property under "shaders". Keyframed animations for the nodes' translate/rotate/scale properties are supported. Skeletal animations are not currently supported. Change-Id: I59a6e0a9759d002976b94a378be87ecf4004e6bf Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QGraphicsHelpers: take baseVertex and baseInstance argumentsPaul Lemire2015-08-077-26/+57
| | | | | | | | Note: this will only work with OpenGL 3 for base vertex and 4.2 for base instance. Change-Id: I8f13e1f315746f373560f2e84b4fd55558529b50 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QAttribute: Add default attribute names getterPaul Lemire2015-08-072-0/+31
| | | | | Change-Id: I4b5a45c4486cd9210f1a3f81683508c5c48b82ef Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QRenderAspect: request buffer jobsPaul Lemire2015-08-073-0/+38
| | | | | Change-Id: I52b659fef8bc3ebc1693b2dfe36eb9b998a30621 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Add LoadBufferJob classPaul Lemire2015-08-073-2/+152
| | | | | | | | One LoadBufferJob will be created per unique dirty buffer so that buffer data loading can be easily parallelized. Change-Id: Icb0e4fcb2f0262d9a5eb349a01d30788f5138c0b Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* GeometryRendererManager: contains list of dirty GeometryRendererPaul Lemire2015-08-073-0/+24
| | | | | | | | | Whenever a GeometryRenderer gets dirty, it add itself to the GeometryRendererManager so that it can be processed and updated by an aspect job. Change-Id: Idb19dfd20d4add8d5fe47c7a76534ff7b10153a7 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* RenderGeometryRenderer using dedicated functorPaul Lemire2015-08-073-2/+50
| | | | | | | | | Needed in order to make the RenderGeometryRenderer aware of its manager. This way it will be later able to add itself to the manager when set to dirty in order to be processed by some aspect jobs. Change-Id: Id7778e30286e9a0f14150e5b2c43a675b2372154 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QRendererAspect: register creator functor for buffer API nodesPaul Lemire2015-08-071-0/+12
| | | | | Change-Id: I3b7668f5e2c3fa74668e2bbbdea360a358d56aa4 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Fix Scene3D for 3.2+ core profilesLaszlo Agocs2015-08-071-17/+45
| | | | | Change-Id: I96b68488f4084085307f32829a2dd85777e4d750 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add a property to Scene3D to control multisamplingLaszlo Agocs2015-08-073-8/+70
| | | | | Change-Id: I94ad9870a819af165fbbeae3a51db05c043d40ca Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Move GeometryRenderManager to its own filePaul Lemire2015-08-076-13/+134
| | | | | | | | This will make it easier to add new properties such as a list of dirty GeometryRenderer to be updated... Change-Id: I30b07d72d373e70c0e2a96a4a47aff9cf63545a4 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderEntity: add convenience methodPaul Lemire2015-08-072-0/+24
| | | | | | | To retrieve RenderGeometryRenderer components Change-Id: Ic07fa30d45fef4510fbea0ec069cc7cb64d76cab Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* custom-mesh-cpp examplePaul Lemire2015-08-073-1/+265
| | | | | | | Demonstrate how to use the Buffer API to create a custom tetrahedron mesh. Change-Id: Ie30458c8a6dc3e2d8b1c6aef4a95a57f4cc63de9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renderer: add managers for the new buffer API nodesPaul Lemire2015-08-072-0/+16
| | | | | | | | | | * BufferManager * AttributeManager * GeometryManager * GeometryRendererManager Change-Id: I4c8336576492a204e86ed0f65a08ddbe359db911 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QResourceManager for RenderGeometryRenderer objectsPaul Lemire2015-08-072-0/+13
| | | | | Change-Id: I9d56ca143cc772fe8e4627c872453b38e0c6fce2 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QResourceManager for RenderGeometry objectsPaul Lemire2015-08-072-0/+13
| | | | | Change-Id: I848cb20d20e59d3fa18c6336d3649e7ad810494d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QResourceManager for RenderAttribute objectsPaul Lemire2015-08-072-0/+13
| | | | | Change-Id: I65a2dbd1491356ef9b5f33024b973031cd5be4d1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QResourceManager for RenderBuffer objectsPaul Lemire2015-08-072-0/+13
| | | | | Change-Id: Id8f2f2c5a155ac8f1d59751a8fc19f363de9c4f0 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Unit tests for RenderGeometryRendererPaul Lemire2015-08-073-1/+248
| | | | | Change-Id: I219eb25be01650f81c9529c3ba1613eb012e2f48 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderGeometryRenderer backend node for QGeometryRendererPaul Lemire2015-08-073-2/+242
| | | | | | | | Once this set of changes is complete, the RenderMesh class might propably get removed. Change-Id: If814974cf90005e261a8a0328c4e47c56752ca4c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Unit tests for RenderGeometryPaul Lemire2015-08-073-1/+155
| | | | | | Change-Id: Ife9e6572349ffbb14c95e75b12d35f8800612f32 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderGeometry backend node for QGeometryPaul Lemire2015-08-073-2/+190
| | | | | | Change-Id: I4586e26e9785b29e2128e3c4d40895122306346e Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Unit tests for RenderAttributePaul Lemire2015-08-073-1/+271
| | | | | | Change-Id: I42de9da48c9f29a30e20e8be61114e2c7d824855 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderAttribute: backend class for QAttributePaul Lemire2015-08-073-2/+249
| | | | | | Change-Id: I7761533652933f1f11b808ce735b4be4687846ce Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Unit tests for RenderBufferPaul Lemire2015-08-073-1/+159
| | | | | | Change-Id: I68966daa5d4d4e103336d57945137b15655ebee1 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderBuffer: backend node of QBufferPaul Lemire2015-08-073-2/+188
| | | | | | Change-Id: Iffbb600e4af04d37d693c53b4236febf8112f4a0 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QGeometryRenderer unit testsPaul Lemire2015-08-073-1/+329
| | | | | | Change-Id: I416ba10e80ef9d81d5c5430abf676a5a68322ab8 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QGeometry unit testsPaul Lemire2015-08-073-1/+252
| | | | | | Change-Id: I400ff797244d7e3493b145ab63f99b6e806f907b Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QBuffer unit testsPaul Lemire2015-08-073-1/+233
| | | | | | Change-Id: I6fe878ac5eea05e80f59acbaafb6f5c7400145a7 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAttribute unit testsPaul Lemire2015-08-073-1/+345
| | | | | | Change-Id: Ic1e2d358ebb692624aae2db2b66c1f67720a0733 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>