summaryrefslogtreecommitdiffstats
path: root/src/render/frontend
Commit message (Collapse)AuthorAgeFilesLines
* Doc: Exclude private header files from the documentation buildTopi Reinio2016-01-254-16/+0
| | | | | | | | | | | | In the documentation configuration, exclude all '_p.h' files from the documentation build. This prevents QDoc from generating documentation for private classes, and also allows removal of documentation that explicitly set the private classes \internal. Change-Id: I8fcf5c99a2a0b75e9ee5dcd928fa4a2b4b8cf34f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Avoid unnecessary detaching.Volker Krause2016-01-071-1/+1
| | | | | Change-Id: Ied910d38c400b34a38f6eaea9683107b079513ec Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix slow down seen with long running applicationSean Harmer2015-12-221-1/+7
| | | | | | | | | | | | | | | | When Qt3D applications are left running for extended periods a gradual slow down was noticed. This turned out to be caused by spending a long time sorting the job dependencies in the thread pooler caused by an ever increasing number of dependencies. This in turn is caused by the render aspect not properly clearing out old dependencies between one frame and the next. This change fixes this kind of mistake in two places. Qt3D applications now no longer slow down over time. Change-Id: I32c258009c98120b38c8c8fa47641dcf336e9588 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* The Renderer depends only on the QServiceLocatorKevin Ottens2015-12-181-1/+1
| | | | | | | | | This way the only thing Renderer knows about QRenderAspect is the enum controlling the render more (threaded or synchronous). We properly decoupled both now. Change-Id: I0023efec541d40f7b499da4355d5cd8b796d2194 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Move the time property to the rendererKevin Ottens2015-12-183-11/+1
| | | | | Change-Id: I60adff0ece408bb4ee21b9cbd329e21da2c1f95c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Pass the QBackendNodeFactory to setSceneRootKevin Ottens2015-12-181-1/+1
| | | | | | | This helps to reduce the dependencies from the Renderer to the QRenderAspect. Change-Id: Id54e38642061f787649ba3794cafb8b8bbbde3f1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Destroy allocators in aspect not the rendererKevin Ottens2015-12-181-0/+2
| | | | | | | | | Otherwise it was creating a weird confusion of responsibility. The aspect asked for the creation of the allocators while the renderer itself was asking for their destruction. Change-Id: Ib06a315b39dc654d5a9bb97d4d2153884c457443 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Move services() and jobManager() to the pimplKevin Ottens2015-12-171-4/+4
| | | | | | | This way we avoid leaking private types through public API. Change-Id: Ifb30d7e57d8b995bba8cf9a95ae77f8d7818d79a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Remove QAbstractAspect::setRootEntityKevin Ottens2015-12-172-5/+3
| | | | | | | We switch to a more resilient private virtual instead. Change-Id: I90710c7873571ca0a40f7cc939282344b20a59f0 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Remove useless reimplementationsKevin Ottens2015-12-162-10/+0
| | | | | Change-Id: I0b19646de41014274674c75650028980076b8349 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Change the idiom to clear null job dependenciesKevin Ottens2015-12-161-1/+1
| | | | | | | | | | The "clearNull" method is kind of surprising so make QAspectJob API more usual. Also the "clearNull" method was only used twice so change the idiom to go through removeDependency if that one receives a null pointer. Change-Id: Ib74e1054ba52754b1a19d6c3e9268fa9ff14edaf Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Remove initialize/shutdown from APIv5.6.0-beta1Kevin Ottens2015-12-141-1/+0
| | | | | | | | Hiding them in QAspectEnginePrivate and calling them when needed from setRootEntity. Change-Id: I4c3dfb19d84ae90cc15bbff29a4abd0705bb61dc Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Turn all services private for nowKevin Ottens2015-12-121-1/+1
| | | | | Change-Id: I9da605c77c5489b9bef4f07079e05f8babb9559f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Move all raycasting code as private in Qt3DRenderKevin Ottens2015-12-102-3/+3
| | | | | Change-Id: I871cbc57166493f30ea307305d8664e2f8a8873f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Added parameters to signals and made setters Q_SLOTSTomi Korpipää2015-12-096-27/+28
| | | | | | Change-Id: Icec2f9f207221e35ffdeeb594bb9b4dc6ef890f1 Task-number: QTBUG-49797 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QRenderAspect: register ComputeDispatch backend nodePaul Lemire2015-12-071-0/+3
| | | | | Change-Id: I1e84bc9dd02ae2c0b4f7c180f0043b4a734d78fd Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Factor out in QAbstractAspect common behaviorKevin Ottens2015-12-032-32/+2
| | | | | | | | There was code involving the node visitor duplicated in several aspect, move that logic back into their common base class: QAbstractAspect. Change-Id: I47320e93691edb43e3cccdd81753423816ad955d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Move core/io content to render/geometry and ioKevin Ottens2015-12-021-1/+1
| | | | | Change-Id: I79e0b0d62e07a269ebfce99edff56d30da28494c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Turns out QAbstractFunctor is specific to Qt3DRenderKevin Ottens2015-12-023-0/+144
| | | | | Change-Id: Ida4d78d7ccd3c64eeedd38a3cba40ca099a2ecab Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Move the QT3D_REGISTER_*_ASPECT macros to QAbstractAspectKevin Ottens2015-12-011-1/+0
| | | | | | | First step toward turning QAspectFactory into a private class. Change-Id: Ia62aae820fde1ab3cee0c5852d10981c6b9f4970 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Add a framegraph node for lightingLaszlo Agocs2015-11-261-0/+4
| | | | | | | Empty for now. Change-Id: I4edcdae58230e53c266c214052522d3ab54b1c6c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Lights phase 1: infrastructureLaszlo Agocs2015-11-261-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QAbstractLight becomes QLight and gets its own backend node. This way we can easily gather all lights for the scene and filter them when building render commands. Both the frontend and backend remain a subclass of (Q)ShaderData but will not be part of the ordinary ShaderData component list. This prevents mixing up ShaderDatas and Lights but allows reusing the same underlying infrastructure so that properties can automatically be transformed for example. It is worth noting that the position property for lights is now removed: the position is determined by the entity's (to which the light component belongs) position. A number of changes are made to ShaderData itself as backend subclassing with different managers is not straightforward. For now the distance between the rendered entity and the entity with the light component is calculated and lights will be chosen based on this distance. A framegraph node for controlling this will be added in future patches. No uniform setting or shader changes are included here. Task-number: QTBUG-48834 Change-Id: I43a6c5f9420d4254d798c558bd58680b2b09eceb Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QRenderAspect: register QFrustumCulling/FrustumCulling creator functorPaul Lemire2015-11-241-0/+3
| | | | | Change-Id: I375e808da644525f2943bee68d75f7d932d8dd5b Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* QRenderAspect/Renderer: refactored to use the AbstractRenderer interfacePaul Lemire2015-11-243-65/+141
| | | | | Change-Id: I662577e6dd337b1f056f73b4a11262e902d4dde2 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* QRenderAspect: use CalcGeometryTriangleVolumesPaul Lemire2015-11-241-2/+15
| | | | | Change-Id: Ifedd202820c9420d166b3f5a75f5c5358207a8bc Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* FramePreparationJob: check geometryrenderer to compute triangle dataPaul Lemire2015-11-241-1/+1
| | | | | | | | This will allow to keep the triangle volumes on the GeometryRenderer and have them updated only when the attributes or buffer change Change-Id: Ia616189f7f1e68bd25a850f5b12198eac3a030ec Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* jobs benchmarksPaul Lemire2015-11-242-4/+4
| | | | | Change-Id: I0585281d2ba3e109b8ab8e45762e5101f7ea2163 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Doc: Fix QDoc warnings and do further cleanupTopi Reinio2015-11-231-5/+5
| | | | | | | | | Fix the documentation issues that still remained broken after renaming the namespaces/QML modules. Do further cleanup and minor doc editing. Change-Id: Iff38c8c1b99e7f712dc3f9ad07ecd37a747b3a26 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
* Remove aspect enumsMike Krus2015-11-211-1/+0
| | | | | | Change-Id: I5cd1c2ddb54d32a7d650e2a44f48d9f67f9821a2 Task-Id: QTBUG-49001 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Sphere: make transformed constPaul Lemire2015-11-212-2/+2
| | | | | Change-Id: I398f327d7767a13dd8fe37c92b13a2a874b92708 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Avoid double->float conversion warning with MSVCLaszlo Agocs2015-11-201-1/+1
| | | | | Change-Id: I2115d69de3ac0480be08b4e4bb6d39a37bc1f6d7 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Remove transforms property of QTransformSean Harmer2015-11-171-13/+4
| | | | | | | | Compound transformations are now built up using QMatrix4x4 in both QML and C++. Updating examples accordingly. Change-Id: I03c9abf1f6cdd1b56226dc0e16a7ad5ce84516dd Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* CalculateBoundingVolumeJob: clear previous dependenciesPaul Lemire2015-11-161-0/+2
| | | | | Change-Id: I82c230fb51f6243b2d37cfd7b353a97adfdeb365 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* QRenderAspect: proper job dependencies and commentsPaul Lemire2015-11-161-1/+10
| | | | | | | | The dependency will allow us to check if a buffer is dirty to know if a bounding volumes needs to be recomputed Change-Id: I8cf6d6d501cde1e3b55e020bc53ffeb6e3b67b2d Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Renderer: use NodeManagersPaul Lemire2015-11-161-54/+65
| | | | | Change-Id: I8d505034b24c3ec00b93ace02e5a4fe450939478 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* QRenderAspect: registe QBoundingVolumeDebug creation functorPaul Lemire2015-11-161-0/+3
| | | | | | Change-Id: I4d9dfa12032429579ae0510329ca06f36851502c Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Add QBoundingVolumeDebug componentPaul Lemire2015-11-163-2/+274
| | | | | | Change-Id: Id37ab84a89403c9dc0f3728639e4d85b9db1a1a1 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Sphere fix: expandToContain now properly sets the radiusPaul Lemire2015-11-161-0/+1
| | | | | | Change-Id: Ic77a535c6e6b3ebe67efe59ae925c155a5b27f42 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Fix some syncqt warningsLaszlo Agocs2015-11-131-0/+11
| | | | | Change-Id: Id02b9c0664054bfbdef2a0c52e2d51383c4e5bfc Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Qt3DRender::QLayerPrivate: Remove unnecessary exportAndy Nichols2015-10-301-2/+1
| | | | | Change-Id: I4925b7f4e3d182cc13d9f06ab6e2835bffe26c81 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QAspectManager: Explicitly mark as private APIAndy Nichols2015-10-301-1/+0
| | | | | | | Also remove some unnecessary includes. Change-Id: I35539566e530f7800bbbe7884be65a93a7ee91eb Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Doc: Updated the docs for the namespace changesVenugopal Shivashankar2015-10-272-2/+2
| | | | | | | | | | | | | | | | Each of the submodules now have there own namespace so the following changes are required to adapt: - Added \namespace docs for the new namespaces. - Updated all the \class and \instantiates entries to use the appropriate namespace qualifier. - Changed the \module and \qmlmodule names for Qt 3D Core and Qt 3D Render modules. - Added the missing \module and \qmlmodule pages for the Qt 3D Collision module. Change-Id: Ibc5bf30e4f50aecb6a3b24bc8536f17ed19d681d Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* Move picking into its own directorySean Harmer2015-10-255-584/+1
| | | | | Change-Id: I4982f08d18c855a57f621af28b13cc876f20eb16 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Make aspects use the QEventFilterServicePaul Lemire2015-10-241-5/+1
| | | | | Change-Id: Ieb1d985b919b50844a236959250e1a2e80972aa1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* BoundingVolume: recomputed when buffer changesPaul Lemire2015-10-241-1/+1
| | | | | | | | | | - Use the framepreparation job to detect if a buffer of the pickAttribute of an ObjectPicker is dirty, in which case the ObjectPicker is marked as dirty so that it will be recomputed - Remove checks for pickAttribute dirtiness in calcboundingvolumejob Change-Id: Ied21d7af1446c70d3f6e04a3f0690dc4ed4d024e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Sphere moved into Render namespace and made privatePaul Lemire2015-10-243-14/+22
| | | | | Change-Id: I940a8ea898a338f20bb9abbebcc1fcef9830a118 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QRenderAspect: create and use a PickBoundingVolumeJobPaul Lemire2015-10-242-11/+15
| | | | | | | | Note: also made it so that we set the dependency on jobs once instead of every frame when they aren't changing Change-Id: I2b4885ed2fd4c72493e17863c1c9c253ac30ec49 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QObjectPicker: handle backend notificationsPaul Lemire2015-10-242-4/+117
| | | | | | | | The backend notification will trigger the pick signals and propagation if not accepted Change-Id: Id234973f559267d0244a92e6b195e6aaf86725c6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QPickEvent class addedPaul Lemire2015-10-243-2/+158
| | | | | | | | Contains only an accepted property that will be used to propage events to parent QObjectPicker instances if set to false Change-Id: I3a898194c7382e07d9818ddd25e9affd54de2cc6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Entity: create bounding sphere with the Entity idPaul Lemire2015-10-241-1/+1
| | | | | | | | Will be needed to retrive Entity from hits reported by the RayCasting service. Change-Id: I91f1f3c2277d468c2ec60509a04095138a5eafcb Reviewed-by: Sean Harmer <sean.harmer@kdab.com>