Graphics/ForwardFramePipeline: Fix render size mixup
This commit is contained in:
parent
6268acbf04
commit
a018701251
|
|
@ -161,6 +161,7 @@ namespace Nz
|
||||||
std::unordered_map<const RenderTarget*, RenderTargetData> m_renderTargets;
|
std::unordered_map<const RenderTarget*, RenderTargetData> m_renderTargets;
|
||||||
std::unordered_map<MaterialInstance*, MaterialInstanceData> m_materialInstances;
|
std::unordered_map<MaterialInstance*, MaterialInstanceData> m_materialInstances;
|
||||||
mutable std::vector<FramePipelinePass::VisibleRenderable> m_visibleRenderables;
|
mutable std::vector<FramePipelinePass::VisibleRenderable> m_visibleRenderables;
|
||||||
|
std::vector<ViewerData*> m_orderedViewers;
|
||||||
robin_hood::unordered_set<TransferInterface*> m_transferSet;
|
robin_hood::unordered_set<TransferInterface*> m_transferSet;
|
||||||
BakedFrameGraph m_bakedFrameGraph;
|
BakedFrameGraph m_bakedFrameGraph;
|
||||||
Bitset<UInt64> m_activeLights;
|
Bitset<UInt64> m_activeLights;
|
||||||
|
|
|
||||||
|
|
@ -369,26 +369,22 @@ namespace Nz
|
||||||
}
|
}
|
||||||
m_removedWorldInstances.Clear();
|
m_removedWorldInstances.Clear();
|
||||||
|
|
||||||
StackVector<Vector2ui> viewerSizes = NazaraStackVector(Vector2ui, m_viewerPool.size());
|
bool frameGraphInvalidated = false;
|
||||||
for (auto& viewerData : m_viewerPool)
|
|
||||||
{
|
|
||||||
if (viewerData.pendingDestruction)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Recti viewport = viewerData.viewer->GetViewport();
|
|
||||||
viewerSizes.emplace_back(Vector2i(viewport.width, viewport.height));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool frameGraphInvalidated;
|
|
||||||
if (m_rebuildFrameGraph)
|
if (m_rebuildFrameGraph)
|
||||||
{
|
{
|
||||||
renderFrame.PushForRelease(std::move(m_bakedFrameGraph));
|
renderFrame.PushForRelease(std::move(m_bakedFrameGraph));
|
||||||
m_bakedFrameGraph = BuildFrameGraph();
|
m_bakedFrameGraph = BuildFrameGraph();
|
||||||
m_bakedFrameGraph.Resize(renderFrame, viewerSizes);
|
|
||||||
frameGraphInvalidated = true;
|
frameGraphInvalidated = true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
frameGraphInvalidated = m_bakedFrameGraph.Resize(renderFrame, viewerSizes);
|
StackVector<Vector2ui> viewerSizes = NazaraStackVector(Vector2ui, m_orderedViewers.size());
|
||||||
|
for (ViewerData* viewerData : m_orderedViewers)
|
||||||
|
{
|
||||||
|
Recti viewport = viewerData->viewer->GetViewport();
|
||||||
|
viewerSizes.emplace_back(Vector2i(viewport.width, viewport.height));
|
||||||
|
}
|
||||||
|
|
||||||
|
frameGraphInvalidated |= m_bakedFrameGraph.Resize(renderFrame, viewerSizes);
|
||||||
|
|
||||||
// Find active lights (i.e. visible in any frustum)
|
// Find active lights (i.e. visible in any frustum)
|
||||||
m_activeLights.Clear();
|
m_activeLights.Clear();
|
||||||
|
|
@ -691,6 +687,7 @@ namespace Nz
|
||||||
|
|
||||||
StackVector<std::size_t> dependenciesColorAttachments = NazaraStackVector(std::size_t, viewers.size());
|
StackVector<std::size_t> dependenciesColorAttachments = NazaraStackVector(std::size_t, viewers.size());
|
||||||
|
|
||||||
|
m_orderedViewers.clear();
|
||||||
m_renderTargets.clear();
|
m_renderTargets.clear();
|
||||||
unsigned int viewerIndex = 0;
|
unsigned int viewerIndex = 0;
|
||||||
for (auto it = viewers.begin(), prevIt = it; it != viewers.end(); ++it)
|
for (auto it = viewers.begin(), prevIt = it; it != viewers.end(); ++it)
|
||||||
|
|
@ -747,6 +744,7 @@ namespace Nz
|
||||||
// Group viewers by render targets
|
// Group viewers by render targets
|
||||||
auto& renderTargetData = m_renderTargets[renderTarget];
|
auto& renderTargetData = m_renderTargets[renderTarget];
|
||||||
renderTargetData.viewers.push_back(viewerData);
|
renderTargetData.viewers.push_back(viewerData);
|
||||||
|
m_orderedViewers.push_back(viewerData);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto&& [renderTarget, renderTargetData] : m_renderTargets)
|
for (auto&& [renderTarget, renderTargetData] : m_renderTargets)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue