| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
Like QGeometryRenderer but not for rendering. A renderer can now be
given a view to render. Further down the line, picking and bounding
volume will be able to be given a view (could use a simplified
non-renderered proxy to calculate the bounding volume).
Change-Id: Ibe18b6e1d7c973e572bb3f2199c0776a4fc6c0e7
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
| |
Move QBuffer, QAttribute, QGeometry to Qt3DCore.
Change-Id: I59dfd091eefadcada93350b3aba955f40b304385
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Now private for QTextureGenerator and QGeometryFactory updates.
QTextureImageDataGenerator remains for now as it was not previously
deprecated and, mainly, it's the only API to get data into an image.
Consequently, QAbstractFunctor has been un-deprecated.
Change-Id: Ie6691bc402ad603d63abcf1ec9fc3513091f5740
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
| |
Mostly old messaging API
Change-Id: I17eb2206b2ede56d2f7d36375d5e711d6149019f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
| |
Will then be set to Ready or Error once the job runs
Change-Id: I542fdce9aea08e6e49fdaec645216132a56e7474
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: Id744de2f10e7744ad5a9d4f425ae534153ed7446
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|
|
|
|
|
|
|
|
| |
Remove include statements for classes that are no longer used. Makes
it easier to find remaining use cases that need addressed before
complete removal in Qt 6.
Change-Id: I60529ba1929ad64b162d3847d5df47cde2a60dad
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: Ie7bf8f248d38a98860fb84d7053d75f3383a5bbd
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 46319648436814afb5a77755dde6681e304befaf.
We want to be able to render one set of RenderViews for frame n while
concurrently building RenderViews for frame n + 1. The reverted commit removed
that behavior which reduced the CPU time available to prepare a frame.
This would cause on some scenes a failure to meet the ~10ms budget we have to
prepare a frame. This is therefore a regression. The root cause behind this
regression is that a job cannot be executed until all the jobs which have been
previously launched have completed.
The proposed solution would be to instead add an OpenGL command thread that
can be used to load graphics resources required for the RenderViews directly
when required. This would in turn allow to cache RenderViews and keep the
concurrent behavior of RenderView submission and creation.
With that goal in mind, the following patches will be rebased and updated
https://codereview.qt-project.org/#/c/189309/
https://codereview.qt-project.org/#/c/189310/
Change-Id: I4879047c45986a0e615e3aef7b7352f82a04a9da
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/animation/doc/src/qt3danimation-module.qdoc
src/render/backend/abstractrenderer_p.h
src/render/backend/buffervisitor_p.h
src/render/backend/renderer.cpp
src/render/backend/renderer_p.h
src/render/backend/triangleboundingvolume_p.h
src/render/backend/trianglesextractor_p.h
src/render/frontend/sphere_p.h
src/render/jobs/calcboundingvolumejob.cpp
src/render/jobs/job_common_p.h
src/render/jobs/pickboundingvolumejob.cpp
src/render/jobs/pickboundingvolumejob_p.h
src/render/jobs/pickboundingvolumeutils.cpp
src/render/jobs/renderviewjobutils_p.h
tests/auto/render/boundingsphere/tst_boundingsphere.cpp
tests/auto/render/commons/testrenderer.h
tests/auto/render/raycasting/tst_raycasting.cpp
tests/auto/render/render.pro
tests/auto/render/renderer/tst_renderer.cpp
Change-Id: I76633bc5a5a065e5f9ea62cc16563377e5c693a3
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This makes sure that jobs that depend on a specific state of the
renderer (such as context being initialized) never run before this
is the case. This reduces the number of possible race conditions
and checks we need to do to ensure the jobs and the renderer are in
the correct state.
This way we no longer swap buffers when nothing has been rendered,
which in turn makes sure that we only draw one frame when the
render policy is OnDemand and there are no changes.
This change also adds a number of assertions on pointers to
resources to make it easier to detect missing job dependencies.
Finally, this change overhauls the job dependencies in
Renderer and RenderViewBuilder.
Task-number: QTBUG-66024
Change-Id: I3e4e9dd0dd53b5c88f5c1b17d68df42f28eae794
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- This would prevent QMesh created without parent/scene to have a proper
geometry factory.
- This avoid passing the engine around
Change-Id: I5091970f96e87ab8b129475a1113ef84ce170388
Task-number: QTBUG-65506
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: Id4b73655ee30c3c225ee804f1e9244cc2b16aebf
Task-number: QTBUG-60927
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|/
|
|
|
|
|
|
|
|
|
| |
- This would prevent QMesh created without parent/scene to have a proper
geometry factory.
- This avoid passing the engine around
Change-Id: I5091970f96e87ab8b129475a1113ef84ce170388
Task-number: QTBUG-65506
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|
|
|
|
|
|
|
| |
Otherwise we if we blindly set the same functor we are repeating the
work it does for absolutely no reason.
Change-Id: Icc05a82bcb893f83c9ddcf09c1c3d1e8a2c34708
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I9c164409e3ced5d78182542ae060692e0f65d3ac
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Add property to QGeometryRender to set a byte-offset into the index
buffer. The property will only be valid when the geometry has an index
buffer attribute.
Task-number: QTBUG-60027
Change-Id: I87409b89766e622fd9a4ab8233f0bc0578f15852
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
| |
This allows to launch the boundings volumes and transform related jobs
only when transforms or geometry have changed.
This will be extended in the following commits to Materials, FrameGraph...
Change-Id: I71bc61471639ead32de71c9e78952fb0741ef185
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|
|
|
|
| |
Change-Id: I998507edff792cfbdcdf2e36e29792fab3c734cf
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Main usage to namespace QBoundingVolume, QBoundingSphere
for future use.
Renamed QBoundingSphere to BoundingSphere to avoid
clashes in file names.
Change-Id: I0adcb3c3a5f1b8134653773a8e21490ecf61bae4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Idf1430fbbe4fc71ae1f3946aa5d6ffc44bda5a9a
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
|
|
|
|
|
| |
Change-Id: Ic0fc25a9aacf47863d0ac058d3be687415b2cbdd
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
Not needed as we can just use delivery flags on QPropertyUpdatedChange.
Task-number: QTBUG-51494
Change-Id: I53b52ac7a1b226dd30756bcebcdd62bffd3a6fd5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
| |
Task-number: QTBUG-51494
Change-Id: I1c7f1c680bc18c6201b790e96dc4023564837122
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
| |
Task-number: QTBUG-51494
Change-Id: I7f59bad66eb086e2249c580be2fd9f4bad159eb3
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
| |
Task-number: QTBUG-51494
Change-Id: Ic326499f80b5a91b2d19c09770de926f220cc805
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These are not just for adding/removing QNodes. They are more general
in purpose and are used for adding/removing values to/from collection
based properties e.g. QVector<MyValue>. The addition/removal of QNode
pointers (which we translate to QNodeIds) is just the most common case.
If Q_PROPERTY/QObject gains support for properties of collections and
the typical operations on them, then we will be able to catch and
handle most uses of these change types in QNodePrivate just like we do
for setting a Q_PROPERTY.
Task-number: QTBUG-51494
Change-Id: I707de1647554a61accf81dc79bfe58b289dbff7b
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
This more correctly reflects the semantic meaning.
Task-number: QTBUG-51494
Change-Id: I3a230e959ea007f1d19808eae73b5d95b6f06514
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
To support glDrawArraysInstancedBaseInstance
Task-number: QTBUG-51515
Change-Id: I0c95b351ff7a3668f17256d0d875c3c36537fd01
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added code path avoiding cloning for setting the geometry on the QMesh
which is a QGeopmetryRenderer. This is actually much easier without
cloning. We simply create the QGeometry on the backend, move it to the
main thread, then send it over in a change. In the frontend
QGeometryRenderer, we just extract the pointer to the QGeometry and set
it on the geometry property.
Change-Id: I06db5cba52d783323141a7b1d72b326e319b4960
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
| |
Now uses subjectId() instead.
Change-Id: Ib307e2a008559bfa5ea7c93a1e5806cbe1b1cb5c
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Implemented a few missing initializeFromPeer() implementations along
with the corresponding frontend node creation change creation functions.
Adapted unit tests.
Change-Id: I571e53a7b68a5544bd0e308df0baf7e52533306e
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
from QBackendNodeMapper and subclasses. No longer needed now we have
disabled cloning.
Change-Id: I261fa7bccfa9a4019d479079e2ff7c19154e5e72
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
| |
Task-number: QTBUG-52736
Change-Id: I58f9cbcdf018e7b672d33dd865067485412b79fe
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
| |
I think it may be possible to avoid this for single value QNode*
properties and just rely upon the automatic notifications done by
QNodePrivate. Needs investigating and testing.
Change-Id: Id978e8501dc229ba4eb73a5be3b3480b967562b0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I875537e511b93d9bfd002fa9fa2a368999f7e75a
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
Now inherits from QNodePropertyChangeBase and sets change flag so
user's don't have to.
Change-Id: I47892d73b63627664c6fa57c8b0c7ef5c4bdd3c8
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
| |
Trying to unify naming of change types.
Change-Id: I0bfca0b7ba5adeaaa6145f75ddb41731f76adc09
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
| |
Unit test updated accordingly
Change-Id: I3a0e01250f0b4d56f13f0a5038b5699ee369cce0
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that we also have QNodeCreatedChange/QNodeDestroyedChange we need
to protect against casting to incorrect types.
It may well make sense to have a helper on QBackendNode that calls a
specific virtual for the different change types. This would be
analogous to QObject::event() calling e.g. resizeEvent() with an
argument properly cast to the right type.
Change-Id: I5313ba43c39b6e47f3fdf1f8f26f3e6d57a5677c
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: Ifc9f1fa29d2bd8b6092b7795ea896b2eb3b886c0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: Id30c16104f8121506755482327e9c732566f23f6
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
- primitiveCount -> vertexCount
- baseInstance -> firstInstance
- restartIndex -> restartIndexValue
- primitiveRestart -> primitiveRestartEnabled
- baseVertex -> indexOffset
Task-number: QTBUG-51515
Change-Id: I95e1e04e08b6441fcf8721db382f8f0c457f6faa
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
| |
Task-number: QTBUG-51475
Change-Id: I4d679b1001df2e8a4d57f0aa5511b3c49812cfa0
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I6f86164eff9f0709f400c4404cf1d104e7632be5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I72471d0b22d16bbbee33610e30a06daadffedbd9
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Bindings are now entirely deduced from shader introspection
* Modified the BackendNodeDirtyFlags to remove the class at this
prevents the operator~() to be called
* Make the Renderer loop check for the ComputeDirty flag and
don't unset it if set
Note: uses a hack to reset m_changeSet in performCompute as right know
we are sometimes missing the markDirty(ComputeDirty) set by the ComputeJob nodes.
Will be sorted out later.
Change-Id: Ic4fa71ecf01b625e885a58a66278387bf5b36339
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Each sceneChangeEvent marks a dirty bit in the AbstractRenderer.
If no changes were accumulated during one frame, the renderer decides
not to render the frame, by returning false from shouldRender().
We still need to go through each backend node and see what flags
to set exactly, and to make sure we also react on backend-initiated
changes.
Change-Id: I80588bc5c4ebeb5d57b45ddfbd4d79ec268968b1
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
Modified all node functors to pass QRenderAspect's renderer instance
to all newly created backend nodes
Change-Id: Iffa4941bff53f6acf87f46789219c7ae2f123615
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
| |
Render aspect Backend nodes now subclass from QRenderBackendNode,
which is a subclass of QBackendNode. We may want to store aspect-
related data in each backend node
Change-Id: I4f00de09c8cc31d2347d919151d359ad44cf03a9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|