| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| | |
Change-Id: I34f1dac63a31aadfeb893aca17b15d80184a24e4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I27ff0470d3447ce6fab28f21e8f32286e3a66ac1
|
| |
| |
| |
| |
| | |
Change-Id: I91a41154ad4acb0f1f7497a2616d219770640ca6
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We no longer need to have a special job to rebuild the entity
hierarchy as parent nodes can now always be resolved on the
backend either at creation time or while reparenting.
The NodePostConstructorInit ensure that all backend nodes are
created from the top down so a node can always find it's
parent.
Change-Id: I9dcfb64b62e2e02b89b1ae59efb41f25dfc09eae
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use loadRelaxed(), storeRelaxed(), fixing warnings like:
renderers/opengl/renderer/renderer.cpp:451:22: warning: ‘void QBasicAtomicInteger<T>::store(T) [with T = int]’ is deprecated: Use storeRelaxed [-Wdeprecated-declarations]
qt3d/src/render/renderers/opengl/renderer/renderer_p.h:188:61: warning: ‘T QBasicAtomicInteger<T>::load() const [with T = int]’ is deprecated: Use loadRelaxed [-Wdeprecated-declarations]
Change-Id: Ica946808969e7f311c98e30d1a61c1b4fa22f66a
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I4e73060c1941773efcc568f010f5b073ebb10d4a
|
| |\
| | |
| | |
| | | |
Change-Id: Iae9a2903afd5da09cfd9288ff6cf74d7f069c83b
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Allow more than one instance of BlendEquationArgumentsMask and
ClipPlaneMask render states.
Task-number: QTBUG-77735
Change-Id: I9d2bdc82843e2eaf0f8a781208e4ca10e3a777c7
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
(wasn't really needed before)
Change-Id: I213da50ec995015e7a70f2ea1e5c5557f038be0e
Reviewed-by: Jim Albamont <jim.albamont@kdab.com>
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|\ \ \ |
|
| |\ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This replicates the effects of the fast-forward merge that should have
been pushed on 2019-08-27 as the final down-merge from dev to 5.14.
Task-number: QTBUG-78019
Change-Id: I32e5320c8eb97005838f1982d1fa7953f1312548
|
| | |\| |
| | | | |
| | | | |
| | | | | |
Change-Id: I53aa6c3f61b1f624ec553079a9332c96486abf3f
|
| | | |\|
| | | | |
| | | | |
| | | | | |
Change-Id: I359b15d87622515ee4f05db1f01d4b476027378e
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
So try to avoid performing these calls on such texture
Change-Id: I051fd6a0150d07656687a1f84756d8a3d506ec24
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Converting it to int would cause the viewport not to take the whole expected
size as the interger conversion would essentially floor the value.
Change-Id: Ic608b0e1a0910aadb8b98c3225f999cba6326535
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
Change-Id: I7c367b2f754bbfcb3e32a617b0edcfc7e06608d7
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If the node type supports syncing, use that rather than the creation
message. The message is still needed since that is passed to the
instantiation functor (none of qt3d's classes appear to use anything
but the node id, but can't be sure no other classes do, and can't add
other virtual method without breaking BC).
Change-Id: Id99f448070b8722a7809b968798772c9eb3c8397
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|\ \ \ \
| |/ / /
|/| | |
| | | | |
Change-Id: Id73bbecd18edaf46ba481aa018e837a336860223
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Needed for cases where Scene3D is used as an Underlay
Change-Id: I13889efc146d278a6331000f886b8fcb33448f65
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This now makes Scene3D rendering fully synchronous and blocking:
- All Qt3D jobs have to be executed before we can render the GL
commands
This makes the blocking mode that could be activated with
SCENE3D_BLOCKING_RENDERMODE the default behavior now and therefore
we could remove references to it in the code.
This now means that Qt3D and QtQuick will be rendering at the same
refresh rate, which in most cases won't be noticeable and will ensure
that content from Qt3D scenes matches content from QtQuick scenes.
The only downside is if the Qt3D rendering takes longer than the time
expected by QtQuick, the whole QtQuick rendering will be slowed down.
Previously the QtQuick rendering might have still run at 60fps while
the Qt3D rendering at a lower fps. Now the QtQuick fps would be the
same as the Qt3D fps. That being said, the old behavior also meant
that if Qt3D didn't catch up, the delay between QtQuick and Qt3D
would only increase frame after frame.
This change allow to simplify the internals by making Scene3D and regular Qt3D
use the same code paths internally.
Please note that Scene3D relies on QQuickWindow::afterAnimating being called
each frame. When using a QQuickRenderControl this means you might have to call
it manually as part of your rendering code.
Task-number: QTBUG-72385
Change-Id: I887daf6df632e296a892b844e738a67e973fee7f
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
SubtreeEnabler allows easy enabling and disabling of
frame graph subtrees.
[ChangeLog] Added SubtreeEnabler to allow easing enabling
and disabling of frame graph subtrees.
Change-Id: Ibd4dd305c41b2985225311a0cc49675e60a3727f
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
tests/manual/manual.pro
Change-Id: I15d497da84d3fe684c3a598831171d6aed7534ca
|
| |\|
| | |
| | |
| | | |
Change-Id: I2a66e9344b72524431885bdf5f59fcaedb94c718
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We were instead checking against the last surface used (which could be null)
instead of the last known good surface to reset the render states. This could
result in not resetting the render states and keeping dangling pointers around.
To know if we can render, we check find the first non null surface in the list
of RV. In most cases we can safelly assume that if first RV has a surface, all
following ones will likely use the same surface.
If we have no good surface we skip the rendering. However in the case you have
a FG where the first RV has a surface but not the last one (which wouldn't
really make sense but can happen if you mess up), we could end up in the above
case where surface is nullptr though we have partially rendered something for
the RV which had valid surfaces.
Change-Id: I902b8c7a943ad2ca7e2f487873f73990cf8db433
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
State and parameter handling are the same between the two branches
Change-Id: Ic8394a969184daead33253c9303c20ecf1a97484
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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: I942a33e63084b346702577e28c70f2111e40a4d5
|
| |\|
| | |
| | |
| | | |
Change-Id: I903f92a7b910eee165a2dd708a2d5fb25192ab14
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Parameters defined on an effect have priority over those defined in a Technique.
Change-Id: I49558a065b613d7ea9d1cbf0a64f6d5aad941cd3
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\ \ \ |
|
| |\| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/render/renderers/opengl/renderer/renderer.cpp
tests/auto/render/textures/tst_textures.cpp
Change-Id: I4da0eafe7ddd4dd822c3dcb5f5fa826653a335b4
|
| | |\|
| | | |
| | | |
| | | | |
Change-Id: I9e9214906c5cda56d0bcc98678c77be69189699d
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: I1ddad305359586481021e85f6e4a470d3a6521b0
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>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: I5b2764f0ae5184c2097d6da5e7a6e24b5c6a5d1b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: I94adc182a0f744b022fb13f4e2dbd16e47e2ba71
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | | |
Since GL 4.2 and ES 3.1
Change-Id: I3feaaa6e34b3031121771017763d51ac6ef07687
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Before, the Scene3DRenderer marked the sg-node dirty in render, which
would then already mark it dirty for the next frame. This only works as
long as we always render, which is undesireble in some cases.
fa12f14b2 changed rendering to not always happen anymore. Thus, that
commit broke rendering under certain circumstances.
Now, Scene3DRenderer listens on a signal from the QChangeArbiter about
new pending changes. In reaction to this signal, we set an internal
dirty-flag in Scene3DRenderer. Only if this flag is set, synchronization
and rendering will happen on the Qt3D side.
Change-Id: I3b33faa5d60c270bd9b903b0e34c8fa24e2e29fd
Task-number: QTBUG-69985
Task-number: QTBUG-72923
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The only noteworth change is where a loop around spy.events modified
the container using takeFirst(). There was no reason to do so, so it
was changed to use the loop variable instead of the result of taking.
Change-Id: I02c62a7c2efc5d042c6e669fe5daddd7da7e85d2
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\| |
| | |
| | |
| | | |
Change-Id: I830139030c589f9f9354223dc9a73dbe3e137532
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
tests/auto/render/shaderbuilder/tst_shaderbuilder.cpp
Change-Id: I27de9b83fa6ef6bb319e4b11c932f91f9ff92dc3
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When an environment map is in use, no extra light is added and
the count should be 0.
Change-Id: Ieb14c48dd9627530b7b7b0682a20096237635d4d
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/render/backend/abstractrenderer_p.h
src/render/renderers/opengl/renderer/renderer.cpp
tests/auto/render/renderer/tst_renderer.cpp
Change-Id: Ib6da858f10bec57bdb1002bd8fa4172304d118f2
|
| |\|
| | |
| | |
| | | |
Change-Id: I42affdd02bddb5205b9f2455f0c5e5efbd414dd8
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
|\| |
| | |
| | |
| | | |
Change-Id: Ib5c04e9941aeea1a4cd27519b94b9a53e8349ea3
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Qt expects the export macros to have Q_ prefixes, otherwise the symbol
versioning script won't find them and mark them.
Also remove non-exising QT3DLOGIC_PRIVATE_EXPORT macro from
src/doc/qt3d.qdocconf
Task-number: QTBUG-74752
Change-Id: I71b9e85ff09c002fb283824aa51a5a8f50e937f4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |\|
| | |
| | |
| | | |
Change-Id: If17511da64dd666a536408aa3cb3178ef6db0403
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Resetting texture to unit assignment at every frame seems to trigger
constant shader recompilation on macOS. Maybe GL driver is implemented
on top of Metal which has more restrictions.
Not resetting the assignment means the same texture units are used
for consecutive frames and fixes excessive recompilation.
Refactored the code to move the texture handling to separate class.
Change-Id: I480f76e7e7b0ea669c6acb039cc3d079937ff97f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|