| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fixed Ritter algorithm implementation
- Added notation of invalid bounding sphere (radius == -1.0)
- Handle merging of invalid bounding sphere with valid ones
- Added test cases and adjusted tests boundingsphere and
proximityfilter
- This is necessary to ensure the correct working for viewAll and
viewEntity
Task-number: QTBUG-78313
Change-Id: I1dc6d227cf9009f6fbd3230093c7a7a94fb05ae3
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\
| |
| |
| | |
Change-Id: I7d7274866129a3c8a3ed3788680a46368120d20d
|
| |
| |
| |
| |
| |
| | |
Change-Id: I4584d2c879a72eccbaf273d0e84b3b6f6bb55295
Task-number: QTBUG-77675
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I359b15d87622515ee4f05db1f01d4b476027378e
|
| |
| |
| |
| |
| | |
Change-Id: Id7f37b014dec7f395bbf3d2c6c22ea59283257ec
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I2a66e9344b72524431885bdf5f59fcaedb94c718
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When merging states, make sure we don't add several states of the same types
with possibly different values. We should only add states with type we don't
already have.
Since the FG traversal is done from leaf to root, we know that the states we
already contain should override any state that may have been specified higher
up in the FG branch.
Change-Id: I9bd1eadd37e8addf740a4b85b2318f9be269fedb
Task-number: QTBUG-76766
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I0f68ab1277617c32b1c31f29d8793d23d9909208
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It can be created with a non normalized dir vector but we should
always perform the computations with a normalized dir vector for
correct results.
Change-Id: Ie9108de7ed2092f6b979a70ad9391267fe6c4696
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I903f92a7b910eee165a2dd708a2d5fb25192ab14
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Automatic removal of components when they are destroyed is based on
connecting to the destroyed() signal. This however means that by the
time removeComponent() is called, the pointer is no longer a valid
QComponent (just a QNode). While accessing member data of derived
classes such as nodeId is fine, emitting signals from derived class
does nothing, and in some cases asserts.
Fix this by:
- doing the QComponent clean up from it's destructor
- implementing a separate method on QEntity to simply clear the now
partly invalid pointer from the list.
Change-Id: Id7632ee2ceaff6548c44c7a43ae40a0372febde9
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| | |
Parameters defined on an effect have priority over those defined in a Technique.
Change-Id: I49558a065b613d7ea9d1cbf0a64f6d5aad941cd3
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I9e9214906c5cda56d0bcc98678c77be69189699d
|
| |
| |
| |
| |
| | |
Change-Id: I1ddad305359586481021e85f6e4a470d3a6521b0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Used to traverse scene graph (using EntityVisitor) and collect list of
entity matching a predicate. By default, collects all entities, but can
also collect those that have a certain type of component, or use a
custom predicate
Change-Id: I9da877d629fe146c1307f5afead7502c440aca9f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Used to traverse the scene graph without having to create numerous
(and mostly empty) QVector<Entity *> for children, which leads to
a lot of memory allocation.
Change-Id: I023b2314d75249d0e3009010fd36dcbe2088c7db
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Resolving list of handles as list of node pointers introduces
extra heap memory allocation (via QVector) which can cause locking with
high number of threads.
Added Entity::traverse() methods to apply a functor to all entitied
in a sub-tree.
Change-Id: I239ab30ac8ac53ba83666a147015d58465d76eb2
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
tests/auto/render/shaderbuilder/tst_shaderbuilder.cpp
Change-Id: I27de9b83fa6ef6bb319e4b11c932f91f9ff92dc3
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It was otherwise sending a QString property as well as the
const char *propertyName. Given only propertyName is actually used,
remove QString property from the backend to avoid useless confusion
and stop sending the notification change.
Change-Id: Ie26771e320e26d44d7fce3e0a864bad1d4df558f
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: I2a3a013078a71610cd5c61cf988f6bfa8d6159ac
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: Ia047e79bcb2ecb7da3438c4cb4980377dc20744e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I42affdd02bddb5205b9f2455f0c5e5efbd414dd8
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Framegraph suffers from the same problem as Entities. When they are created
they pass their parent FrameGraph node, and not their parent QNode. When
reparenting them we need to make sure the same thing happens otherwise
you get backend FrameGraph nodes parented to non-framegraph nodes and
they are just dropped from backend.
Change-Id: I1b9cab2c9e869c690c4c43208e62a1044b3359a4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
This avoids running these jobs when lights / renderables have
not changed in a frame
Change-Id: I604180fe3442ab67648c4ba5d9effb8639c68ef7
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| |
| |
| | |
To allow Qt base QShaderGenerator changes to be merged
Change-Id: I0036215bc5f841246cc109f21c87a07563ec0f11
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-74602
Change-Id: If9cf0795e887a0b3cdfed0a6f5e7798116ef137d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Backend nodes should always be created from the top-most parent down
ensuring that every parent is created before its children. The original
way of creating backend nodes by calling _q_postConstructorInit
in a deferred manner from the QNode constructor breaks this because
backend node creation happens in the order that the nodes on the
front-end were created. This was often incorrect when reparenting
newly created nodes.
Fix by creating a queue of nodes needing a _q_postConstructorInit call
and only adding nodes to the queue if one of their ancestors is not
already in the queue. This ensures that _q_postConstructorInit is only
called for the top-most node in any subtree. This behavior exactly
matches the creation behavior when building a subtree and reparenting
it to a node with a backend.
Doing silly things like creating a node with a parent that has a backend
then immediately reparenting is now safe. After this patch, it should
be safe to assume that backend nodes can always find their backend
parent.
Adding only the top-most nodes to the queue and processing the entire
queue at one time also ensures that all creation events get sent in
the same batch. This fixes the problem of having backend nodes referring
to other backend nodes that haven't been created yet.
Task-number: QTBUG-74106
Task-number: QTBUG-73905
Change-Id: Idcf38d6c3164f6be4394a3b25554547414061059
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When the initial Entity backend node hierarchy is created it skips over
any non-entity nodes to ensure that Entities are only parented to
other Entities. Calling QNode::setParent breaks this when reparenting
Entities to non-entity nodes.
Fix by sending a new "parentEntityUpdated" property update that backend
Entity nodes listen for. They keep the id of their new parent and flag
the need to rebuild the entity hierarchy. This triggers a new job to
clear the children and parents of every backend Entity, then rebuilds
the hierarchy using the stored parent ID in each Entity. This is much
more forgiving of creation/parenting ordering issues and shouldn't be
less performant because any Entity reparent was previously marking
everything dirty anyway.
Add a new test from QTBUG-73905 that creates 4 cylinders and manipulates
the parents in different ways.
Add a new test to tst_nodes to reparent a QEntity to a QNode and ensure
the entity finds it's correct QEntity parent.
Add a new test to tst_entity to ensure backend nodes correctly handle
the new parenting events.
Task-number: QTBUG-73905
Change-Id: Iab0203947d89bbed2868b3629fbde879675fe568
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For that we know determine the expected number of channel components for a
given property in the frontend where we have access to both the type and the
value rather than in the backend using the type only.
Change-Id: I75aca20d43dd1b3db316c303af041acd557c07e4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
To allow Qt base QShaderGenerator changes to be merged
Change-Id: I26088ccf55b510b5eb845c583c0551ccfd817eb7
Task-number: QTBUG-75384
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I292b8b373e0f34dfc51f2a77f082fda920893e64
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: James Turner <james.turner@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: If17511da64dd666a536408aa3cb3178ef6db0403
|
| |
| |
| |
| |
| |
| |
| | |
Cherry-picked from da7e453d001715f9b0fc9eaf29dd245058e23dab
Change-Id: I9cf18df56d501c7ea49727bc2d1da20371308d4a
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Share the code for this between QShaderBuilder and QShaderProgram. As a
side effect QShaderProgram gains support for absolute paths.
Change-Id: I71dbe0bff702806f0655992008c54bbaa9c4f2c9
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I5293ff8d16c511de79c4583783b238154af32f61
Task-number: QTBUG-69373
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |\
| | |
| | |
| | | |
Change-Id: Idc824e1b8191e5fa624966e619075b1ec8c850c6
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In addition, the parent of the component and all further ancestors need
to be registered on the backend. We do this by calling
QNodePrivate::_q_postConstructorInit on all these nodes.
Also add autotest that triggers the case referenced in QTBUG-72236 to
avoid regressions.
Change-Id: Ibf8f43654d145ea8b8082b2f30123ea65e42ff55
Fixes: QTBUG-72236
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: James Turner <james.turner@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This test makes sure that the order of events is correct when a
parentless component is added to an entity that does not yet have a
backend node because it was created with a parent and thus has not yet
called _q_postConstructorInit.
Change-Id: I6d15003549cc9d327c5c2de84723e5f8897e4dcf
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Otherwise, child nodes may be constructed before their parents and their
node creation changes will arrive at the backend out-of-order.
This could result in a child node referencing a parent that we have not
yet received a creation change for.
Also add a unit test to take this case into account.
Change-Id: I26b29e63863d1686e7b9239c63297c7e6c341f4e
Task-number: QTBUG-73986
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This test triggers the case referenced in QTBUG-72236 and is added to
avoid regressions.
Task-number: QTBUG-72236
Change-Id: I797015dfe25a084e75183c02e07dddb224fbc738
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The entry is added unconditionally and in a scope
qtConfig(qt3d-input). Remove the first entry, fixing:
Makefile:3343: warning: overriding recipe for target 'sub-scene2d-qmake_all'
Makefile:2918: warning: ignoring old recipe for target 'sub-scene2d-qmake_all'
Makefile:3347: warning: overriding recipe for target 'sub-scene2d'
Makefile:2922: warning: ignoring old recipe for target 'sub-scene2d'
Makefile:3350: warning: overriding recipe for target 'sub-scene2d-make_first'
Change-Id: I6e702cdea2e31eb0de64c7efb7d39b56265fa6ef
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |/
| |
| |
| |
| | |
Change-Id: Ic6aa6fd1c1a1e7757dba9466b59d20834b56e246
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This could otherwise result in black screens when the FrameGraph
tree is updated and no other change is sent. Screen would remain
black until some other element with dirty changes triggers a cache
rebuild.
Change-Id: Iac43965f06d1d644de14e6a6c8768e035bed69a6
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Remove the calls as 6158b4ae7cc88848b03d5d592a671de7113c4faf
states that it no longer has any effect, fixing:
gltfgeometryloader.cpp:333:18: warning: 'void Qt3DRender::QBuffer::setType(Qt3DRender::QBuffer::BufferType)' is deprecated [-Wdeprecated-declarations]
gltfgeometryloader.cpp:371:54: warning: 'Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)' is deprecated [-Wdeprecated-declarations]
basegeometryloader.cpp:155:39: warning: 'void Qt3DRender::QBuffer::setType(Qt3DRender::QBuffer::BufferType)' is deprecated [-Wdeprecated-declarations]
basegeometryloader.cpp:202:46: warning: 'void Qt3DRender::QBuffer::setType(Qt3DRender::QBuffer::BufferType)' is deprecated [-Wdeprecated-declarations]
instancebuffer.cpp:61:39: warning: 'Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)' is dep
tst_qbuffer.cpp:79:96: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
tst_qbuffer.cpp:85:100: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
tst_qbuffer.cpp:128:109: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
tst_qbuffer.cpp:132:57: warning: ‘void Qt3DRender::QBuffer::setType(Qt3DRender::QBuffer::BufferType)’ is deprecated [-Wdeprecated-declarations]
tst_attribute.cpp:56:68: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
tst_attribute.cpp:108:68: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
tst_buffer.cpp:74:68: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
tst_buffer.cpp:271:68: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
tst_buffer.cpp:297:68: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:519:95: warning: 'Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:574:95: warning: 'Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:967:83: warning: 'Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:969:82: warning: 'Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)' is deprecated [-Wdeprecated-declarations]
tst_trianglesextractor.cpp:56:118: warning: 'Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)' is deprecated [-Wdeprecated-declarations]
tst_trianglesextractor.cpp:57:116: warning: 'Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)' is deprecated [-Wdeprecated-declarations]
tst_trianglesextractor.cpp:199:118: warning: 'Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)' is deprecated [-Wdeprecated-declarations]
Change-Id: I6835598a1771a0ec3a0b080911fa4cada210a01a
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Replace by new API, fixing:
tst_gltfplugins.cpp:590:67: warning: 'void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:591:39: warning: 'void Qt3DRender::QAttribute::setDataSize(uint)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:623:60: warning: 'void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:624:32: warning: 'void Qt3DRender::QAttribute::setDataSize(uint)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:639:70: warning: 'void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:640:34: warning: 'void Qt3DRender::QAttribute::setDataSize(uint)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:654:62: warning: 'void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)' is deprecated [-Wdeprecated-declarations]
tst_gltfplugins.cpp:655:34: warning: 'void Qt3DRender::QAttribute::setDataSize(uint)' is deprecated [-Wdeprecated-declarations]
Change-Id: Ie5e379db148edf1853d1a7a2661e328612b35bae
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: Ie8a4bf768bffba61dca9e315151c035be7b48723
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Right now the bounding volumes would be computed only when a geometry
is marked dirty, which essentially means only when the geometry is
first loaded. However, if a geometry buffer were to change, we need
to recompute the bounding volume.
Change-Id: Ie3fb83d1cc11a3bbfbe2b9828e9f8d7c302d175b
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The viewport rect is computed in GL coordinates. Therefore we need
to check if the mouse is contained with the position in GL coordinates.
The error is not noticeable unless you are using non full height viewport.
Change-Id: I1c39ff91da4a3649288826b939071a298c83c723
Task-number: QTBUG-72856
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a QRenderCapture is deleted its destructor runs, then the
QFrameGraphNode destructor, then the QNode destructor and finally the
QObject destructor. The QObject destructor deletes its QObjectPrivate
member, which destructs QRenderCapturePrivate. At that point the
QRenderCapturePrivate tries to disconnect on an invalid pointer to the
QRenderCapture (which was already deleted).
Change-Id: Ib5835e3f86a282b963220b0dab656258111a61ab
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
To allow computing a bounding box for a given QGeometry while waiting
for a proper bounding volume aspect.
Change-Id: If1ecf2f9236beaf569c650e5f8b05a6151ca6381
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|