Graphics/ForwardFramePipeline: Optimize out merge pass when only one viewer renders to a target

This commit is contained in:
SirLynix 2023-11-17 17:00:08 +01:00
parent 97d5640967
commit 2ef9cd0128
1 changed files with 44 additions and 32 deletions

View File

@ -717,6 +717,9 @@ namespace Nz
{
const auto& targetViewers = renderTargetData.viewers;
if (targetViewers.size() > 1)
{
// Multiple viewers on the same targets, merge them
FramePass& mergePass = frameGraph.AddPass("Merge pass");
renderTargetData.finalAttachment = frameGraph.AddAttachment({
@ -759,6 +762,15 @@ namespace Nz
frameGraph.AddBackbufferOutput(renderTargetData.finalAttachment);
}
else if (targetViewers.size() == 1)
{
// Single viewer on that target
const auto& viewer = *targetViewers.front();
frameGraph.AddBackbufferOutput(viewer.finalColorAttachment);
renderTargetData.finalAttachment = viewer.finalColorAttachment;
}
}
return frameGraph.Bake();
}