summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/render/backend/jobs/renderviewjob.cpp3
-rw-r--r--src/render/backend/jobs/renderviewjobutils.cpp5
-rw-r--r--src/render/backend/renderview.cpp1
-rw-r--r--src/render/backend/renderview_p.h4
4 files changed, 12 insertions, 1 deletions
diff --git a/src/render/backend/jobs/renderviewjob.cpp b/src/render/backend/jobs/renderviewjob.cpp
index c263a66b8..53065245e 100644
--- a/src/render/backend/jobs/renderviewjob.cpp
+++ b/src/render/backend/jobs/renderviewjob.cpp
@@ -68,7 +68,8 @@ void RenderViewJob::run()
// Build RenderCommand should perform the culling as we have no way to determine
// if a child has a mesh in the view frustrum while its parent isn't contained in it.
- renderView->buildRenderCommands(m_renderer->renderSceneRoot());
+ if (!renderView->noDraw())
+ renderView->buildRenderCommands(m_renderer->renderSceneRoot());
// Sorts RenderCommand
renderView->sort();
diff --git a/src/render/backend/jobs/renderviewjobutils.cpp b/src/render/backend/jobs/renderviewjobutils.cpp
index f87d65d26..126231d05 100644
--- a/src/render/backend/jobs/renderviewjobutils.cpp
+++ b/src/render/backend/jobs/renderviewjobutils.cpp
@@ -172,6 +172,11 @@ void setRenderViewConfigFromFrameGraphLeafNode(RenderView *rv, const FrameGraphN
break;
}
+ case FrameGraphNode::NoDraw: {
+ rv->setNoDraw(true);
+ break;
+ }
+
default:
// Should never get here
qCWarning(Backend) << "Unhandled FrameGraphNode type";
diff --git a/src/render/backend/renderview.cpp b/src/render/backend/renderview.cpp
index 8f2be71b0..5370275b6 100644
--- a/src/render/backend/renderview.cpp
+++ b/src/render/backend/renderview.cpp
@@ -251,6 +251,7 @@ RenderView::RenderView()
, m_viewport(Q_NULLPTR)
, m_clearBuffer(QClearBuffer::None)
, m_stateSet(Q_NULLPTR)
+ , m_noDraw(false)
{
}
diff --git a/src/render/backend/renderview_p.h b/src/render/backend/renderview_p.h
index 8e671d1e9..029a11f62 100644
--- a/src/render/backend/renderview_p.h
+++ b/src/render/backend/renderview_p.h
@@ -129,6 +129,9 @@ public:
inline RenderStateSet *stateSet() const { return m_stateSet; }
void setStateSet(RenderStateSet *stateSet) { m_stateSet = stateSet; }
+ inline bool noDraw() const { return m_noDraw; }
+ void setNoDraw(bool noDraw) { m_noDraw = noDraw; }
+
// TODO: Get rid of this overly complex memory management by splitting out the
// InnerData as a RenderViewConfig struct. This can be created by setRenderViewConfigFromFrameGraphLeafNode
// and passed along with the RenderView to the functions that populate the renderview
@@ -225,6 +228,7 @@ private:
AttachmentPack m_attachmentPack;
QClearBuffer::BufferType m_clearBuffer;
RenderStateSet *m_stateSet;
+ bool m_noDraw;
int m_frameIndex;
// We do not use pointers to RenderNodes or Drawable's here so that the