summaryrefslogtreecommitdiffstats
path: root/src/runtime/dragon/qdragonrenderaspect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/dragon/qdragonrenderaspect.cpp')
-rw-r--r--src/runtime/dragon/qdragonrenderaspect.cpp52
1 files changed, 28 insertions, 24 deletions
diff --git a/src/runtime/dragon/qdragonrenderaspect.cpp b/src/runtime/dragon/qdragonrenderaspect.cpp
index e6d57c0..2f53d16 100644
--- a/src/runtime/dragon/qdragonrenderaspect.cpp
+++ b/src/runtime/dragon/qdragonrenderaspect.cpp
@@ -216,60 +216,65 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType)
registerBackendType<Quick::QScene2D>(m_scene2ds);
// Custom functors
- registerBackendType<QRenderSettings>(QSharedPointer<RenderSettingsFunctor>::create(this));
+ registerBackendType<QRenderSettings>(QSharedPointer<RenderSettingsFunctor>::create(this, &m_nodeTree));
// Framegraph
registerBackendType<QFrameGraphNode>(
- NodeFunctorPtr<FrameGraphNode, FrameGraphNode>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, FrameGraphNode>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QCameraSelector>(
- NodeFunctorPtr<FrameGraphNode, CameraSelector>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, CameraSelector>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QClearBuffers>(
- NodeFunctorPtr<FrameGraphNode, ClearBuffers>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, ClearBuffers>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QDispatchCompute>(
- NodeFunctorPtr<FrameGraphNode, DispatchCompute>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, DispatchCompute>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QFrustumCulling>(
- NodeFunctorPtr<FrameGraphNode, FrustumCulling>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, FrustumCulling>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QLayerFilter>(
- NodeFunctorPtr<FrameGraphNode, LayerFilterNode>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, LayerFilterNode>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QNoDraw>(
- NodeFunctorPtr<FrameGraphNode, NoDraw>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, NoDraw>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QRenderPassFilter>(
- NodeFunctorPtr<FrameGraphNode, RenderPassFilter>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, RenderPassFilter>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QRenderStateSet>(
- NodeFunctorPtr<FrameGraphNode, StateSetNode>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, StateSetNode>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QRenderSurfaceSelector>(
- NodeFunctorPtr<FrameGraphNode, RenderSurfaceSelector>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, RenderSurfaceSelector>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QRenderTargetSelector>(
- NodeFunctorPtr<FrameGraphNode, RenderTargetSelector>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, RenderTargetSelector>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QSortPolicy>(
- NodeFunctorPtr<FrameGraphNode, SortPolicy>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, SortPolicy>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QTechniqueFilter>(
- NodeFunctorPtr<FrameGraphNode, TechniqueFilter>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, TechniqueFilter>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QViewport>(
- NodeFunctorPtr<FrameGraphNode, ViewportNode>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, ViewportNode>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QRenderCapture>(
- NodeFunctorPtr<FrameGraphNode, RenderCapture>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, RenderCapture>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QBufferCapture>(
- NodeFunctorPtr<FrameGraphNode, BufferCapture>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, BufferCapture>::create(&m_nodeTree, &m_frameGraphNodesContainer));
// TODO add this back when MemoryBarrier is expanded correctly on MinGW...
// registerBackendType<QMemoryBarrier>(
// NodeFunctorPtr<FrameGraphNode, MemoryBarrier>::create(&m_frameGraphNodesContainer));
registerBackendType<QProximityFilter>(
- NodeFunctorPtr<FrameGraphNode, ProximityFilter>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, ProximityFilter>::create(&m_nodeTree, &m_frameGraphNodesContainer));
registerBackendType<QBlitFramebuffer>(
- NodeFunctorPtr<FrameGraphNode, BlitFramebuffer>::create(&m_frameGraphNodesContainer));
+ NodeFunctorPtr<FrameGraphNode, BlitFramebuffer>::create(&m_nodeTree, &m_frameGraphNodesContainer));
+
+ // Catch-all for other nodes. Necessary to gather information about the hierarchy.
+ registerBackendType<Qt3DCore::QNode>(m_otherNodes);
// TODO could be done in header or initializer
// TODO syntax could be improved, consider adding a createEdge/setInput function
m_calculateWorldTransforms = TaskPtr<ValueContainer<Matrix4x4>>::create(
- calculateWorldTransforms, Self, m_entities, m_transforms, m_rootEntitySource);
+ calculateWorldTransforms, Self, &m_nodeTree, m_entities, m_transforms, m_rootEntitySource);
+
+ m_loadBuffers = TaskPtr<LoadedBuffers>::create(loadBuffers, Self, m_buffers);
m_calculateLocalBoundingVolumes = TaskPtr<LocalBoundingVolumes>::create(
calculateLocalBoundingVolumes, Self, m_entities, m_attributes,
- m_geometryRenderers, m_geometries, m_buffers);
+ m_geometryRenderers, m_geometries, m_loadBuffers);
m_calculateWorldBoundingVolumes = TaskPtr<WorldBoundingVolumes>::create(
calculateWorldBoundingVolumes, Self, m_calculateLocalBoundingVolumes,
@@ -293,13 +298,12 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType)
m_renderTargetOutputs,
m_shareContextSource);
- // TODO might as well upload them as well...
- m_loadBuffers = TaskPtr<LoadedBuffers>::create(loadBuffers, Self, m_buffers);
// m_loadShaders = TaskPtr<ValueContainer<GLShader>>::create(uploadShaders, Self, m_shaders);
- m_generateFrameGraph = TaskPtr<TreeInfo>::create(generateInheritanceTable<ValueContainer<FrameGraphNode>>,
+ m_generateFrameGraph = TaskPtr<TreeInfo>::create(generateInheritanceTable,
Self,
+ &m_nodeTree,
m_frameGraphNodes,
m_rootFrameGraphNodeSource);