Replace the removed phong.frag with graph-based fragment shader.
Task-number: QTBUG-69751
Change-Id: I196be25aff656d6934d6179e4f082430b109b2a1
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Moved logic accessing the Scene3DItem from the render function into an
afterSynchronization call which has the main thread locked to prevent
the race condition.
Task-number: QTBUG-70747
Change-Id: I596d445512b5985c7dfb54d228fa0a5fcc596a27
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Was mistakenly using yAxis instead of zAxis input value.
Change-Id: Id91d04565c503ae5f286f6b433e246a1b94d6e12
Reviewed-by: Mike Krus <mike.krus@kdab.com>
The types will be listed on the "Obsolete QML Types" page that is
linked from the "All QML Types" page.
Task-number: QTBUG-69713
Change-Id: Ieff402d1cce426c0ce4b9191b8fe9b1dd02b4328
Reviewed-by: Mats Honkamaa <mats.honkamaa@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
GlyphRun stores a reference to glyphs and indirectly to a suitable TextureAtlas
based on the font needed by the glyphs.
Whenever we recompute the glyph because some property has changed we:
1) Store information about the glyph we need
2) Generate a Rendering Entity for the glyph we need
3) Dereference the glyphs we don't need anymore (the old glyph run)
Step 3) is performed last as whenever no more glyph reference a TextureAtlas,
it gets deleted. If we were to do that first, we could end up in cases where
we destroy the atlas and recreate it just after because the new GlyphRun actually
uses the same font.
TextureAtlases are tied to the lifetime of the scene's root node.
However if the scene changes, the previous glyph run wouldn't be released.
Since we don't keep a direct relationship between Glyphs and TextureAtlas
(we basically do a getOrCreateTextureAtlasForFont and lookup available atlases
in the scene), we could actually end up destroying a texture atlas we still need
the next time we update our glyph run:
When deferencing the old glyphs (whose texture atlas has been destroyed when the
scene has changed), we would instead be removing references to the new atlas
required by the new nodes (if they share the same font).
To fix that, whenever the scene changes, we now clear the glyph run as well.
Change-Id: Ibe62e2f6438c6655d2997681117c341302d64799
Task-number: QTBUG-70551
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
In some cases, a GLTexture will destroy its internal OpenGL texture
before recreating it (when it requires a new allocation due to some
property change).
When this happens, we need to ensure we also request our content data
to be uploaded after the new internal OpenGL texture is recreated.
Change-Id: Ifd3f8a1e40e5fad63d117417006c65fade5c2b39
Task-number: QTBUG-70551
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
The files got added in commit f49cabe35c. However, the original
sources from the linked url are in .tga format, so I assume they
got converted before importing. We should probably add a
'Modifications' entry to highlight such conversions in the future.
https://opengameart.org/content/miramar-skybox categorises the license
as CC-BY 3.0, but the upload was done not by the author.
Change-Id: I312a871716104507434eb6d12a547c3752da51af
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Which didn't handle indirect drawing, compute and tessellation
Since ES 3.1/3.2 don't provide API for glShaderStorageBlockBinding,
code was adjusted to use the default binding points and not require
that API.
Change-Id: Ie4dcd05f0a1d72e4a25f49b5fae138dc605ba5e3
Task-number: QTBUG-70660
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
qmlRegisterRevision was incorrectly used to actually expose the revision
to QML; anyhow, it is only meant to registering revisions of a base
class that the type depends upon.
Also remove one duplicated registration.
Change-Id: I0c743fc951954870f13a7e0e099fc16a4b7efa4f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
This is additional fix for QTBUG-67370.
And fix for Scene3D.
Task-number: QTBUG-67370
Change-Id: Id362e60ac4072b7935ee86ff2a44e23018adc381
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
...to avoid warnings (that can be treated as errors) with Mingw.
What we have seen in the CI is that including renderer_p.h from an
external module can lead to
error: inline function 'T Qt3DRender::Render::variant_value(const
QVariant&)' declared as dllimport: attribute ignored [-Werror=attributes]
Q_AUTOTEST_EXPORT inline T variant_value(const QVariant &v)
which is treated as an error if the external user happens to be a Qt
module with warning_clean enabled.
Not sure why this surfaced now, but removing the export should be the
correct thing to do regardless.
Change-Id: Ie8de120fa0e5c96fbcffc1632db57edeac87a95b
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
m_initialized is inherited from GraphicsContext, having another
m_initialized in SubmissionContext is wrong.
Change-Id: I431ba67c671b8854fafce769c8bfd90ba71e7441
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
The code was originally imported in commit 2a9a67d1b1, and then
updated in to upstream version 0.8 in commit 473bd13ed3.
LICENSE.md is from upstream repository.
Change-Id: I20f97d46125abc4f1c7d54c52b891acc50336ac5
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
By dividing code into function which make following the bigger picture
easier
Change-Id: I7c43178d5484b7d387f6ce7b9c36025d8e13c642
Reviewed-by: Mike Krus <mike.krus@kdab.com>
maximumLayers was renamed to layers in the 5.7 release
see commit 26d4260897
Change-Id: Ibe6e55bb5f6ad47181a4584a4eb32cdec3934034
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Which should be all Android builds since gcc has been deprecated
in favor of clang in the NDK.
Also disable building of tools when cross compiling
Change-Id: Idb3f88130bf211926f7dd4ce52ac6582d806570d
Task-number: QTBUG-65542
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Taking into account we have texture sharing in the backend,
we can only update frontend texture properties once we have
created the shared backend texture.
Code was adjusted to retrieve these properties when creating
the GLTexture. Such changes are stored and sent on the next
run loop from a job where they are distributed to all referenced
frontend Texture.
The status property handling has also been updated to send status
changes to all shared textures instead of just the texture whose
data generator is used to gather the data.
A manual test checking texture property updates, sharing and
remote url sharing has also been added.
Change-Id: I8ed2449fe57c9d7337580b0f7561f974cbd5006d
Task-number: QTBUG-65775
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
If the file contains a single animation use that clip. Otherwise we
then consider animationName and animationIndex with the index having
priority.
Change-Id: Id974b1d446d6067bbe4c5ecce9f20891cb1086b0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Can now specify source urls to QAnimationClipLoader with query
parameters for animationIndex or animationName.
Add a new manual test to demonstrate/test this by loading the 2nd
animation from the Rigged-Simple.gltf file.
Will followup with the same support for Qt 3D native json animation
files.
Change-Id: Icb66073f29b8471fe06e2e2e9c43720567dc9ee5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Change-Id: I8409969e743e993d19af0f94597a4e0d5d017721
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit ea18da8361)
Reviewed-by: Antti Kokko <antti.kokko@qt.io>
Change-Id: I8bbd918922e4d9aab0c9fa4b2751de21313fc09b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
(cherry picked from commit 096500140b)
Reviewed-by: Antti Kokko <antti.kokko@qt.io>
With Scene3D we can't assume that when we are rendering, resources haven't
been deleted in the meantime. Add checks to verify a resource is not null
before using it.
Change-Id: I918ae77c2d3efc6efc53c6c5b5b9c03729978cba
Task-number: QTBUG-69534
Reviewed-by: Mike Krus <mike.krus@kdab.com>
This behavior prevented using TextureImage not directly parented by the
Texture that uses them (assert would be triggered). In turn, this also
prevents sharing a TextureImage among several Texture instances which is
counter productive since this is where the data is actually stored.
This patch fixes this issue. It removes all direct coupling between Texture
and TextureImages. Now Texture only contains the list of TextureImage ids it
references. This allows to not make look-ups into the TextureImageManager to
retrieve handles, which could be an issue if TextureImages have not yet had
their backend created. TextureImage doesn't keep track of the referencing texture
that uses it anymore. Instead, we let the renderer do the job of checking if any of
the TextureImage referenced by a Texture has changed to trigger actual Texture
update.
Change-Id: I3c63379d0f4b314e9b53f225870eeaded0bb4aec
Task-number: QTBUG-69407
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Was setting the major version instead of minor version thus potentially
never allowing technique/pass filtering to ever succeed.
Update shaders/technique to target 3.3 as 3.0/3.1 might not work on mac.
Change-Id: I48c0ee54aac4a017cf8ac5ff3219b788a15bbcdd
Task-number: QTBUG-69522
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Since they are already destroyed, cleanup textured ids shouldn't be used to
look up backend textures but only to tell the GLTextureManager to abandon
referenced textures. The was an oversight that should have been handled in
d47c78e6.
Change-Id: Iafaee4bb6442c907f6e011c80b5e5347579efde5
Task-number: QTBUG-69379
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
_q_postConstrutorInit is called in a deferred invocation when constructing a
Node with a parent. If several nodes are created that way, the
_q_postConstructorInit call from the node which parents the other will
actually build the node creation changes for the whole subtree and incidently
prevent the _q_postConstructorInit invocation for the children to do anything
(including setting the scene). Therefore _q_postConstructorInit should set the
scene on all the Node it will be creating creation changes for.
Change-Id: I07d4e80675758b9701cc941881f1faaa1c89af4b
Task-number: QTBUG-69352
Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
We check that the animator can be played in the frontend. Each animator
subclass must implement their own canPlay method.
In the backend we correctly check the clipAnimator can be played
Task-number: QTBUG-69369
Change-Id: If8bca9b73321e2bfdb4d68ddc286df0109ee91f1
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
If we delay the cleanup of backend Texture instances, in the case of a texture
being reparented from an existing node with backend to a node with no
backend, the resulting node destroyed, node created changes delivered in the
same loop would result in the Texture still being marked for destruction and
eventually being destroyed even though it was recreated.
This patch now still marks textures that were destroyed (by storing their
ids), so that the GL Texture managers can update the resources
accordingly. However, we now cleanup Textures immediately. We also remove
textures ids marked for destruction in the GL texture managers if we detect a
Texture with the same id is readded.
Change-Id: I29092d7dff9f70bb9fb4b15f4e9419ee1791b6e2
Task-number: QTBUG-69379
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>