summaryrefslogtreecommitdiffstats
path: root/src/render/jobs
Commit message (Collapse)AuthorAgeFilesLines
* Unify license header usageAntti Kokko2016-01-2626-288/+366
| | | | | | | Update old header.LGPL3 to header.LGPL Change-Id: I8eac0cd6bbc276a56df487249cc459c0d4fab165 Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
* Refactor picking to use one thread per entityMike Krus2016-01-253-223/+232
| | | | | | | | | | | | | | Added triangle visitor by refactor the triangle volume extractor Added ability to do a ray intersection with a single volume without using a thread Added entity collector Use one thread for each entity Ignore entities that don’t have a pick object Removed list of triangle volumes stored on each entity Use triangle visitor to test each triangle by creating a single volume on the stack Added triangle and 3 vertex index to the pick event Change-Id: Id3fd53549bf3ea07805426ef868df174f30e176b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Expose picking details to front endMike Krus2016-01-252-41/+50
| | | | | | | | Intersection (world and local) and distance added to pick event Modified test so that it includes the event Change-Id: I8631d626e5108d2e044374ee3425625f5588c38c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAspectEngine/QAbstractAspects: get rid of setDataPaul Lemire2016-01-221-17/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | Getting rid of set data and the refactoring on setting the surface implies that: - Given the FrameGraph configuration, there may be several RenderViews each having a different RenderSurfaceSelector/Window - This means that the Renderer/QRenderAspect can't know about the surface before reading the scene - This means that the Renderer may be dealing with more than 1 window - This means that initialization, render and shutdown procedures will have to be updated accordingly Therefore the Renderer was refactored to: - Be initialized without knowing about a surface - For each RenderView, check the surface and if different from the previous one: * Make the context current with it * Create the appropriate glHelpers (as Surfaces may have != formats) TO DO: - Fix picking - Fix windows exposition - Fix shutdown / detection of all windows beging closed Change-Id: I49d070b05f46be4b26cfb57e494feba145d1da9c Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Updated picking-qml examplePaul Lemire2016-01-213-8/+12
| | | | | | | handle device pixel ratio and none full-window Scene3D Change-Id: Iadc504a00816d9363847bf9ec1e09d4b7c631666 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Port FrameGraphManager away from QResourceManagerTobias Koenig2016-01-201-1/+1
| | | | | Change-Id: I7399008adb0f612c78738f58f168fa38cf6ae845 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Store the surface to use in the RenderViewSean Harmer2016-01-171-0/+11
| | | | | Change-Id: I4dbdfe9315dc3b0bb89119372301d24a292520d9 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Support for DDS texturesMauro Persano2016-01-161-28/+59
| | | | | | | | | | | This commit adds support for DDS textures. It also adds QTextureLoader, a generic texture provider without a texture target. The actual texture target will be based on the properties of the texture loaded from its "source" property. Change-Id: If89cce7a55b3d82355f2da35588a091b7188f36c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderViewJobUtils: fix technique filter wasn't setPaul Lemire2016-01-131-1/+1
| | | | | Change-Id: Iaf54b8c2e201b728b7f1313ba98d9a8e93a107e8 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* RenderView Compute handlingPaul Lemire2016-01-131-0/+10
| | | | | Change-Id: Ifbe93173010bf058f198990c62d5e93fea967a74 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* The Renderer depends only on the QServiceLocatorKevin Ottens2015-12-181-3/+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 services() and jobManager() to the pimplKevin Ottens2015-12-171-2/+5
| | | | | | | This way we avoid leaking private types through public API. Change-Id: Ifb30d7e57d8b995bba8cf9a95ae77f8d7818d79a 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-30/+30
| | | | | Change-Id: I871cbc57166493f30ea307305d8664e2f8a8873f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Make QFrameAllocator privateKevin Ottens2015-12-081-1/+1
| | | | | Change-Id: Id69a161da691322184d8ec5ed7a1b375cf2038ed Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Temporarily disable triangle based pickingSean Harmer2015-12-041-1/+2
| | | | | | | | Until such time as we can only perform it upon request rather than every time the mouse moves. Change-Id: Idcc940360cc2bf8133cd02ac2b108996a19b4901 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Move core/io content to render/geometry and ioKevin Ottens2015-12-021-2/+2
| | | | | Change-Id: I79e0b0d62e07a269ebfce99edff56d30da28494c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAxisAlignedBoundingBox is used only in ObjLoaderKevin Ottens2015-12-021-1/+0
| | | | | Change-Id: Iee0c2b50985d6c87f196877544f501eab33f6d37 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix the leaking of Bounding VolumesAndy Nichols2015-11-261-0/+5
| | | | | | Change-Id: Ifaf8ff275923120f99a8cb008a7d501b88594f8f Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add a framegraph node for lightingLaszlo Agocs2015-11-261-0/+5
| | | | | | | Empty for now. Change-Id: I4edcdae58230e53c266c214052522d3ab54b1c6c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Lights phase 1: infrastructureLaszlo Agocs2015-11-263-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Fix CalcGeometryTriangleVolumes header defineAndy Nichols2015-11-251-1/+1
| | | | | Change-Id: I422c7fad4e82c3becdba240d848c2a55e4bb97a5 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Change to qCDebug in LoadBufferJobLaszlo Agocs2015-11-241-1/+1
| | | | | Change-Id: I6799c069b3a65572d6ee351e972d4fafbc6ea559 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* RenderView: use FrameGraph to decide when frustum culling should be donePaul Lemire2015-11-241-0/+5
| | | | | Change-Id: I366876f68040dd571524d9d7137a2f7916a5b757 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* RenderView: frustum cullingPaul Lemire2015-11-242-2/+15
| | | | | Change-Id: Iacfcfce5d4a339acd29bcaacffb38ce339220ad2 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* QRenderAspect/Renderer: refactored to use the AbstractRenderer interfacePaul Lemire2015-11-246-19/+32
| | | | | Change-Id: I662577e6dd337b1f056f73b4a11262e902d4dde2 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* PickBoundingVolumeJob: use triangle volumes stored in GeometryRendererPaul Lemire2015-11-241-5/+7
| | | | | Change-Id: I756cdb04c72a7a41787e1fcac8ae3da659ad8555 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* CalcGeometryTriangleVolumes: retrieve triangles from a GeometryRendererPaul Lemire2015-11-243-2/+153
| | | | | Change-Id: I074aa540e88a5772542a08263266429fc6be9ae4 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* FramePreparationJob: check geometryrenderer to compute triangle dataPaul Lemire2015-11-242-7/+36
| | | | | | | | 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>
* Basic Triangle Picking implementedPaul Lemire2015-11-242-24/+103
| | | | | | | Will be further improved in the following patches Change-Id: Iff1aa982d65d51eb33546a1f05b8d0e3752d105d Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* QRayCastingService improvementsPaul Lemire2015-11-242-29/+64
| | | | | Change-Id: Id8072015f153bebf3e44b9d0a6ad9e2e9254aa83 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* jobs benchmarksPaul Lemire2015-11-245-5/+10
| | | | | Change-Id: I0585281d2ba3e109b8ab8e45762e5101f7ea2163 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Updated CalcBoundingVolumeJob: to compute BV only when neededPaul Lemire2015-11-161-23/+50
| | | | | Change-Id: I864423c8262a7c90fe6cf04b0bcfd5baa1bacef8 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* UpdateBoundingVolumeJob: slightly updatedPaul Lemire2015-11-161-6/+5
| | | | | Change-Id: Id327e4eb6bd78618a62bc75ef0cdabc8b2111aa7 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* FramePreparationJob fix: traverse childrenPaul Lemire2015-11-161-0/+4
| | | | | Change-Id: I970ee03f10a4d65e2629d9f0abe50a4317414093 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Export updateboundingvolumejob for unit testsPaul Lemire2015-11-161-1/+1
| | | | | Change-Id: I0ddc39adecd4d567997002a48705724803276bc1 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Export renderviejob for unit testsPaul Lemire2015-11-161-1/+1
| | | | | Change-Id: I06bf69f49bcbc63fb1e78954d5845401796d031f Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Export framepreparationjob for unit testsPaul Lemire2015-11-161-1/+1
| | | | | Change-Id: I74cdc4988dfda2137af4165582a82fef684c8b43 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Export framecleanupjob for unit testsPaul Lemire2015-11-161-1/+1
| | | | | Change-Id: I45a458e302642122037f1b46eaca4f5fbd180af0 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Renderer: use NodeManagersPaul Lemire2015-11-1614-68/+80
| | | | | Change-Id: I8d505034b24c3ec00b93ace02e5a4fe450939478 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* CalcBoundingVolume: don't go through the BBox intermediate stepPaul Lemire2015-11-161-9/+1
| | | | | Change-Id: I9a929e776151f81b91fbbaf6631938fca03c7e1f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Use the FrameCleanupJob to update the QBoundingVolumesDebugPaul Lemire2015-11-162-0/+23
| | | | | Change-Id: Ib3419e78abd4b1848cfabf05efb8871c2ff87560 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* PickBoundingVolumeJob: few fixesPaul Lemire2015-11-162-16/+32
| | | | | | | | | | - properly handle click events - fix hover events when using multiple viewports - handle picking on parent Entities that have no geometry Change-Id: Ie44cc4278a4dacf36f2ad6e4f77aea0eb2977d51 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Update bounding volume job to actually compute somethingPaul Lemire2015-11-161-36/+10
| | | | | Change-Id: Ie30ff21112f6fbaf6bb990a8662c24375d237c96 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* CalcBoundingBolumeJob: check attribute is not nullPaul Lemire2015-11-161-1/+3
| | | | | Change-Id: If9ccd4ab537a1d99d2f5b34b170cc247e6891e17 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Update jobs to use bounding volume specifier instead of the object pickerPaul Lemire2015-11-162-58/+59
| | | | | | Change-Id: I9be81febfa3549af5914cce25ce15afa395815d8 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Fix a postion -> position typoLaszlo Agocs2015-11-131-3/+3
| | | | | Change-Id: I766ca1bd84db43a6805f4bf20083dc6dbdc150e5 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Create proper plugin infrastructure for sceneloadersAndy Nichols2015-11-041-2/+2
| | | | | | | | 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>
* Rename QOpenGLFilter to QGraphicsApiFilterAndy Nichols2015-11-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | 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>