| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
| |
Change-Id: Id79399535aae8b8e0f14e9edf40e05375803a64f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: If1ddbeec353d7ccea58e1a83975744c545785b7b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Ia9bce8fa9e77651a0d78f4e9bed281ac946fb233
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Each QAbstractMesh class now has to implement a QAbstractMeshFunctor class.
When a mesh is set to dirty, the functor is sent through a QChangeArbiter
notification to the backend. The backend, using the functor can then rebuild
the mesh. There should be no issue if the frontend mesh is deleted while the
backend is creating the mesh as the functor has no direct reference to the
frontend element and contains all the data needed for a complete creation of
the mesh.
Change-Id: I4984f03a612e74c688bfb6cc2f19d9241b517457
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I7a9fd824f1975791ee7448023d089e06c34de69d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I8a37bd9d2f24d77c4f4a3aec41028df0b292d7c6
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I3436d48f08f5eb29fd821538d9d88e12a48a305a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I1377b93ca06a838a625d38db8b77ebcee438b203
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
| |
QAbstractMeshData has a set of static methods returning default names for
vertex position, color, normal, textcoord and tangent so that mesh loaders can
use those when building their MeshData.
As with uniforms, a ParameterMapper can be used to map additional/custom named
attributes.
Change-Id: I8ad116a1cccabc981c2ce196e920fbe88834be06
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the shader contains a uniform with a standard uniform name,
it will automatically be set. If a custom name is used within a shader for a
standard uniform variable, the user can add a ParameterMapper with
parameterName set to the Qt3D standardUniform name and shaderVariableName to
the custom name.
For user specified uniform parameters, if the parameter name is the same as
the shader uniform name, the binding is done automatically. Otherwise, a
ParameterMapper can be used.
At the moment automatic binding for Attributes still has to be sorted out as
default attribute names are dependent on a given MeshData.
Change-Id: If244b26e5c2b01c8b319ba78c57fb1e131736dcb
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
QAbstractTransform also has a d-pointer.
Change-Id: I577dc48d21545f4f5cd1320529951612cbef0739
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: Ic7ee353afbc8872f5f5a85662acc190ccae4d178
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I16b3d967e1244e3d47bffd36f6284a0e9ef0a89f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I0a0ebde1c107db8831b596eab1e512a2062979f7
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Backend now monitors QAbstractMesh elements instead of QMesh.
QAbstractMesh subclasses have to implement a load method.
For QMesh it uses the ObjLoader to create MeshData from a source file
while QAbstractShapeMesh loads MeshData created by code.
Each scene parser can then implement its own QAbstractMesh subclass.
The loadmeshdatajobs has been corrected and works with QAbstractMesh.
Change-Id: I5caae63a153f18eaae3b2f1bdbfa8995c63a2d23
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
They are now subclasses of the abstracts defined in the previous path.
QAbstractMesh's source property was transferred to QMesh, this will allow to
have ShapeMeshes subclass QAbstractMesh directly and not have a useless source
property.
MeshData, Buffer and Attribute moved to their own files and properly d-pointered.
Change-Id: I6d09b00a17045826e16503f5fb2d8f8eb0f2abf2
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I78951aa516a0001342d6abd326c9ec1e42de6d8f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I73a7f64491392eb24d8f2c8eb5ad4c0590e572ce
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Ia54e752c77cdf6f2b45bc616dc57cd6a0d84166e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I70aa9c61f6670a01d328c390d4bc1698fc1d1901
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I6a3a980411a31ab26dd17a8bc2aa65f67a5209ea
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Ic6a6a67814a992bef4c88b3409b140b011509668
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I481ce63235d1e7955c781831d4da0f9e71afa471
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
Specifying the type is now optional. The type enum is kept for the time being as it may
have a use later on.
Change-Id: I01a934bd3d38f790c21cc2ec488843232795685e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I7b278d4d7c4c463f5daeb167fc5ff41337c293ba
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Added Q_PROPERTY to be able to set all values from QML.
Couldn't register QOpenGLTexture enums directly as QOpenGLTexture is not a
QObject so enums values where copied to Texture. A static_cast allows to
convert directly a Texture enum to a QOpenGLTexture enum.
Corrected Quick3DTexture and registered it as an extended type.
Change-Id: I1a99a2dd549722cd647cc53f60e720e0c4039df9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
| |
A Parameter is now used only for user specified uniforms. For StandardUniforms
and Attributes we could rely on the ParameterBinder. In case a mesh attribute
or standard uniform doesn't have the default name used by Qt3D shaders (that
will have to be specified somewhere), a ParameterBinder could be added to
solve that issue. Will see how that goes in a follow up patch.
Change-Id: I41bd0d4ef2ac731c109f87fca5b28571074bfba5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
| |
This was causing an issue on Windows.
Change-Id: Ia6be4d7e97a463f27bcebf62809e0f416591b70a
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Removed most of the methods that were needed by the hacked Renderer.
The default technique has also been modified to use ParameterBinder.
The Renderer now has a simpler submission pass.
Note: This restores rendering of all examples as the default material is used
if none is provided. On the other hand this should trigger warnings in the
console.
Change-Id: I20955bdc96b2844b2b33e46202c3e0e20634cc64
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: I5c3dc490e6b324733713b791dcfa61305378d904
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Material now contains a list of Parameters.
Quick3DMaterial has a list of Parameter instead of generic Tags.
Changes the ways parameters were set in the default technique and in the the
scene loaders.
Change-Id: I53d968d0c94374b8b5000c1e7b3c582807e1ff5a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This offers a way not to have to include any related OpenGL header at that
point. That way we can, depending on the enum's value and the types available
when rendering determine the correct GL types.
Note: It seems the GLTF as evolved or that the parser isn't correct as it expects
raw GL values instead of String for types which contradicts the current
specifications.
Change-Id: I78a1a70d1dac429ab6bad23aacdac48a16cd1025
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
Corrected includes accordingly.
Change-Id: Ic060314a976061a62c42a3006a7a93090202bf83
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Entity and EntityNode are back to being the same class. This is ground work
needed to have a QML API based on extending C++ types rather than having two
distincts API subclassing common interfaces.
Note: this patch won't properly compile alone. It should be staged with
follow-up patches.
Change-Id: Icd98c6c687ca06f18056ebd7a2d6555a7ba7ffa3
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Buffer::data() returns a QByteArray by value, that means
constData() returns a pointer to a QByteArray which gets destroyed
at the end of the statement. Then, using that pointer becomes
extremely dangerous (dangling). Fix it by storing the QByteArray locally.
Change-Id: Iaed2bd344061bec8bff713c2c1fd81773864c7a5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
| |
Change-Id: I9f50b8d04bc74838850a6516f430ed4f177ebbd8
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
| |
Separated Texture from TextureData. Quick3DTexture is a sublcass of
Quick3DNode and Texture. This is part of a serie of patches aimed at specifying
how Uniforms and Textures are going to be defined from QML.
Change-Id: Ia1a9acfc4d9b07299a103bdbbffcc34aa4b79177
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
Avoids allocating two buffers when one is enough.
Change-Id: I751191af922243725dac772574b27d39bf8a9bcf
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Examples updated to work with those new nodes. Quick3DScene and SceneNode
subclass Quick3DEntity, Scene and EntityNode, Scene respectively. This will
later ease the process of exposing Cameras loaded from a scene file to be used
by a CameraSelector in the FrameGraph. Also it allows to add children Node to
the scene on the Qml side.
Change-Id: I6843efd0aff60e51a9bd16c63ce19011afd5a8e5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Effect has been transformed to a non QObject abstract. EffectNode and
Quick3DEffect subclass Effect. This was needed so that Quick3DEffect can have
node children such as ShaderProgram.
Few changes to the backend and renderer to accommodate that a Material's effect
is now returned as a Node instead of an Effect as an Effect cannot be
registered as qml types as it has no QObject base.
Change-Id: Ief40f1d784151a085f244c35b3ed09a93dcc153e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because Node no longer holds QQmlListProperties, Entity which inherited Node
could'nt be used to have nested children in Qml because there was no longer a
data DefaultProperty.
To solve that issue Entity has become an abstract class encapsulating most
what an Entity used to contain. EntityNode is a class bound to be used by
the C++ API and it subclasses Node and Entity. Regarding the Qml API,
Quick3DEntity subclasses Quick3DNode and Entity.
RenderSceneBuilder and NodeVisitor have been slightly modified to work with
those changes but the backend is pretty much the same. The big change is that
Entity is no longer a QObject and no logner inherits Node. That means Node and
Entity have to be used along side on the backend. On the frontend or other
Aspects subclassing EntityNode or Quick3DEntity should be pretty much the same
as subclassing Entity prior this change.
Component classes have not been touched so they cannot contain nested QtQuick2
elements in QML. As Entity and Nodes can hold QtQuick2 Components this isn't a
big issue. Also as the DefaultProperty of each Component subclasses may
differ, keeping them as they are at the moment could make sense.
Note: This patch restored rendering. The code is a bit messy at the
moment but necessary to keep commits small. Follow up patches will clean
things up a bit and move the Qml and C++ API in distinct subprojects.
Change-Id: Ia048812f51bbbd43ec2ee754b5120b7ec3174436
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Transform monitor changes of each of its AbstractTransform objects.
On a change, it notifies the QChangeArbiter. The QChangeArbiter tells
the associated RenderNode about the change. The RenderNode updates its
localTransform matrix.
Small typo correction appendTransform instead of appendTransfrom.
Change-Id: I8613cda1b3c7b7211722f78585ac75736528f86a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Assimp scene loadet hooked up.
Required a few changes to VAOManager and MeshDataManager.
MeshData aren't indexed by their sources any longer as a Mesh can set
its data either by having a source (obj scene file) or by a raw MeshData
(case of scene loaders). MeshData are now indexed by their frontend
Mesh's uuid.
The LoadMeshDataJobs and RenderSceneBuilder have been slightly modified
to incorporate those changes as well.
Note : VAOManager has to be a QArrayResourcesManager instead of a
QListResourcesManager.
Change-Id: Ia874e58871ab221636e0c5701d8a566642e663d2
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Logging categories in Renderer :
-Backend
-Frontend
-Framegraph
-Io
-Jobs
Also cleaned up things here and there while going
over various classes.
Change-Id: I8bf1da0769c764621236dc45e954d193c768e2af
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
Updated mesh objloader and loadmeshdatajob to work with handles.
Change-Id: Id85d1d796c9851a992d39469e13348c75904ab79
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
| |
Change-Id: Ib9cf181a766f5ee31485c61e8cd6ae08185720af
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
| |
Change-Id: Ie39e3f171293a5c4877077b99302352025ad68e3
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
| |
Change-Id: I15a4a472f5283c56c8185b05699e33368c45ddb0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
| |
Camera is now a subclass of Entity containing 2 componets :
- A Transform with a LookAtTransform
- A CameraLens
Change-Id: I43f18f8919d640ebf28d3118498b680f71ad5388
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Moved transforms out of Entity. That way it will be possible to properly
separate camera optics and transformations as well as having Entity
without a list of transfmortations.
Note : This commits breaks matrices computations as matrix is removed
from entity. Matrices computations will be restored when the framegraph
is implemented.
Change-Id: Ibdd0f23a49a8666385b086ecc551c8fad3b9a420
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|