| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
- GraphicsContext is now a stateless wrapper around GL calls
- SubmissionContext is a GraphicsContext + caches and states used to render a
frame
Change-Id: I147b56dfd4c403911faadc0e9821fff9a892f71c
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|
|
|
|
|
|
| |
Change-Id: I89a3ee4b6d72565c1be91244c1bde39f1dd7101b
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
- test screen space ray casting
- fixed handling of filters
- fixed handling of ray length
- few tests for filter handling
Change-Id: Ifc24d8f9e73556669338b3936a41dfa2c674e306
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
| |
Change-Id: I59b817f9972d0a6866f7cc57a4bcd6fe2cd097c9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
Task-number: QTBUG-66498
Change-Id: Icb18a996c9384b3e41f296694d91b13677f054c4
Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
Add dependencies to ensure we won't allow the RenderThread to proceed if we
haven't completed the execution of the texture and buffer gatherer jobs.
Change-Id: Iaad67be893738b948bf26ca903f3bff7f16a1b88
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
By setting the proper dependency which ensures we are done looking for
dirtyShaders by the time updateGLResources in the RenderThread is executed.
Patch provided by svenn-arne.dragly@qt.io
Change-Id: I4515cbfc3a391f887a42178220e6f0814a707745
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
| |
In the case where we had two or more groups of RenderCommands where each group
shares a common shader, uniform minification wouldn't be applied to the second
command of each groups after the first one.
Change-Id: Ie73f559e3f44f0f22ddd79017fd413262cae6ab4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because of texture sharing, Qt3D compares functor before executing them.
Instead of blindly loading a TextureImage functor which could turn out to not
be used, Qt3D required 2 frames to fully update a texture. This behavior has
been removed, now when a texture image functor is updated, it updates the
texture in one frame. It is assumed that the user is responsible for declaring
only TextureImage that he is actually going to use.
Any scene that uses OnDemand rendering and frequently changes a texture image
functor can be used to test this. (ex-painted-cube is a good example for KDAB)
or paintedtexture-cpp in manual tests
Change-Id: I8c2f13876244a862633e10e472e2b49cbd6e126b
Task-number: QTBUG-63561
Reviewed-by: Sean Harmer <sean.harmer@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>
|
|
|
|
|
| |
Change-Id: I76933b23f27bc0fefcbc55342715b2ebd7f7716d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I5f8401e7a61924fbfe88fddf5b44fd77fa92099d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/render/backend/renderer.cpp
tests/auto/auto.pro
Change-Id: Idc5bb088ae7f591809f8795124a3e44410bf4cf9
|
| |
| |
| |
| |
| |
| |
| | |
Apparently this was a major security issue reported to security.qt-project.org
Change-Id: Id52f035134ca6111e24b5820eb1b64b99449e47f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I0a7334907e4b34df6955fb24832958b674d7b62b
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
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
src/render/backend/trianglesvisitor.cpp
src/render/backend/uniform.cpp
src/render/jobs/calcboundingvolumejob.cpp
src/render/jobs/pickboundingvolumejob.cpp
src/render/jobs/pickboundingvolumeutils.cpp
Change-Id: Ib8305011c51710a3538c0b29f7022388f5244a38
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This completes the fix for out of order event delivery related to
creation changes. We now ensure that QNodes used as values in singular
and list properties are fully constructed on the backend before they
are referenced in properties of other nodes.
Also added a check to not recurse into sending too many changes
when adding a child node.
Written with Svenn-Arne Dragly.
Task-number: Task-number: QTBUG-65956
Change-Id: I1470e0f685c81d1277ac04ad985ec1b76f1c27c0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This would have caught the breakage caused by changing how the camera
view matrix was computed
Change-Id: I521b7e6c700aeaa1c751cdf0aceb8b8ab66a6af9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This way a material with a broken shader will fail once (and won't be
retried unless the shader code gets changed), and the application will
continue gracefully, without asserting.
Task-number: QTBUG-65936
Change-Id: I7003e8c6f7d9094280d7757c1020b485f93e3b37
Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
All examples, even with packed data, set actual vertex size on
the attribute. However, convention is to pass 0 for packed data,
in which case GL will compute vertex size based on number of coordinates
and component data size.
Neither the buffer visitor nor the triangle visitor respected this
convention and relied on the real size to be set. Now computing the
actual stride if it's passed in as 0.
Change-Id: I9a65fd7d8d56f181e31faa93389e3fdd1a973c17
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Take the index attribute (and buffer) into account, when present.
Rely on QGeometryRenderer::vertexCount(), when set.
Initially done on dev as: 1d874d33da9174a82fccc266c66a22af006ac8ef
Task-number: QTBUG-65590
Change-Id: I98d1865e3581272471d6b93b9633da38dc77163d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When a component is added to an entity, two change
notifications were sent but they both were directed
to the entity.
This makes sure one message is sent to the entity
and one to the component, as was intended.
Same for remove notifications.
Fixed the unit tests which where incorrectly testing for the
subject id of the change notification.
Change-Id: Ic697c08e92e884abf28e675e4ae2b44a93ca45d5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This fixes issues with picking when having multiple viewports and/or
multiple windows.
Now check that the mouse event actually hits inside the viewport extents.
Also track the source of events and check that the surface matches the
source of the event.
Remaining issue is overlapping viewports within the same window
Task-number: QTBUG-59567
Change-Id: I76a4ee2bec7300d893fef6040d89bf81f2109795
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I19b3b2f8fcb06eb2bc600ebe370465dd15a8eabc
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-66407
Change-Id: Ic79851e94fcadee8f707cb2682938692db094aa7
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/render/backend/renderer.cpp
src/render/backend/renderer_p.h
tests/auto/render/renderer/tst_renderer.cpp
Done-with: Svenn-Arne Dragly <svenn-arne.dragly@qt.io>
Change-Id: I2ca9bac4777e51434579edf86030414734f533ac
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This completes the fix for out of order event delivery related to
creation changes. We now ensure that QNodes used as values in singular
and list properties are fully constructed on the backend before they
are referenced in properties of other nodes.
Also added a check to not recurse into sending too many changes
when adding a child node.
Written with Svenn-Arne Dragly.
Task-number: Task-number: QTBUG-65956
Change-Id: I1470e0f685c81d1277ac04ad985ec1b76f1c27c0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 8fa23602cff47de6d19d05a8428a8e753bf73d61)
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The OnDemand render policy has no effect because the ShadersDirty and
ComputeDirty flags are always set. This commit resets ShadersDirty so
that ShaderGathererJob is only run when needed. It also introduces the
TechniquesDirty flag so we know when to run
FilterCompatibleTechniqueJob and makes sure the job is only run if
the context has been initialized and the renderer is running.
Task-number: QTBUG-65965
Change-Id: Icbcc03ed2dc6b14c6580cc794267b5a88e5f4ca2
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
RayCaster and ScreenRayCaster can have a number of layers which are
used to control how entities with the matching layers are handled
for ray casting. Similar rules apply as for LayerFilter in the frame
graph.
Change-Id: I9f666563a686ac99d7f178da33a539ba9edef51b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I3b183bfe0231409facce40a7dacc3b923d65b73f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ic3b9676497086b228e467bae3eebeef5c5beb8ce
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Split common functionality into abstract base class. Both frontend
classes use the same backend implementation.
Split common pick functionality for the object picking and ray
casting jobs into abstract base class.
Change-Id: Ieb8bdcf65d81db12234841d72c6cb0160e145bf6
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Does the intersection calculations and sends hits back to
frontend object.
The entity pointer is updated in the front end before
emitting the signal. This is done using private friend
method to avoid detaching the hit object and causing a
copy.
Change-Id: If2fa0573f8f7120f2dcbb433c46efe1859f0eb5f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\| |
| | |
| | |
| | | |
Change-Id: I4728b29c349a16867951a781c9417054c798e04a
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I1b269bd33dd033d628d5bdb3fb014fec86277859
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
To unload the scene, we need to process the empty path in the backend to reset
the status and send a change to the frontend QSceneLoader that will take care
of deleting the previously created scene tree.
With the introduction of remote urls support, the case of the empty path was
not properly handled. It would end up being recognized as a remote path, a
download request would be made. Eventually it would silently fail. A warning
was added when a download request fails.
Change-Id: I60222453ccde63d69f6a107d33d7c842313d98ed
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Renamed to takePendingSceneLoaderJobs() as the name better indicates we are
resetting the vector of jobs internally.
Change-Id: I68a16139994552b7b26f1cf88a206a61a30950e0
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
- Fix overflow in tst_SegmentVisitor::testVisitLinesAdjacencyIndexed
- Blacklist tst_FilterCompatibleTechniqueJob, offscreen platform does
not support OpenGL context creation. Also the previously blacklisted
tests on Windows fail because of problems with OpenGL context
creation.
Task-number: QTBUG-63152
Change-Id: I826c732d4cc0b45b0bedd9a85a460b30b1dc2e2c
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I19c1907371d9d131295558eb19c297d544ebef7d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This makes it possible to seek the animation clip to a specific position
in the time-line. The index is a real value between 0 and 1, where 0.0 is
the start of the clip and 1.0 is at the end of the clip
Change-Id: Ic8c57d04e4f1e0a7628713e057b5b8a41a400c5a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Makes it easier to read and to re-use.
Change-Id: I74be7a623d0c2495ff2f6a42ac495ab469bb4d60
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\| |
| | |
| | |
| | | |
Change-Id: I2167d8d1d0050c7ca94180785a59f8753badaab4
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/render/frontend/qcamera.cpp
tests/auto/render/render.pro
Change-Id: I8f848a1f863d07eecb328965fbe27d74b8d442f1
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We used to store the viewMatrix as returned by QMatrix4x4::lookAt
in the transform component of the QCamera.
This was unfortunate for two reasons:
1) An arbitrary entity could not be used as a camera without changing
its transform to a viewMatrix, which breaks any other use of the
entity.
2) Adding entities as children to cameras lead to the wrong
transformation. This made it impossible to properly add objects
that should be attached to the camera, such as the hands of a
character in first-person view.
This commit computes the transform of the camera based on the
requested position, view center and up vector.
The view matrix is calculated when the matrices are updated in
the RenderView. This calculation assumes that the view direction
is along the entity's negative z-axis and that the up vector
is along the y-axis.
Change-Id: If22b29e3d38bf55fbf79e9f7baf0c922e0a48aeb
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/render/backend/renderer_p.h
src/render/geometry/geometryrenderer.cpp
src/render/geometry/qmesh.cpp
src/render/geometry/qmesh_p.h
tests/auto/render/commons/testrenderer.h
tests/auto/render/meshfunctors/tst_meshfunctors.cpp
tests/auto/render/qmesh/tst_qmesh.cpp
Change-Id: Ia078029e2faf23fe253c5ce385e393c094266e3b
|
| |\ \
| | | |
| | | |
| | | | |
refs/staging/5.10
|
| | |\|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/render/backend/renderer.cpp
Change-Id: I691f54cd6daef8a966df37d447164c94badce34c
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Ensure a backend node is always created before it is used in a
property of any other node. This avoids a race between sending
the creation, add child and property update changes and the
start of a new Qt 3D frame. The race is caused by the use of the
event loop to trigger the node created and child added changes.
Also be careful not to repeat the node creation.
Task-number: QTBUG-65829
Change-Id: I6ca5eb269ce657f8d42d855550fb4f898e3bd420
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Volker Krause <volker.krause@kdab.com>
|