Graphics/ForwardFramePipeline: Optimize out merge pass when only one viewer renders to a target
This commit is contained in:
parent
97d5640967
commit
2ef9cd0128
|
|
@ -717,6 +717,9 @@ namespace Nz
|
||||||
{
|
{
|
||||||
const auto& targetViewers = renderTargetData.viewers;
|
const auto& targetViewers = renderTargetData.viewers;
|
||||||
|
|
||||||
|
if (targetViewers.size() > 1)
|
||||||
|
{
|
||||||
|
// Multiple viewers on the same targets, merge them
|
||||||
FramePass& mergePass = frameGraph.AddPass("Merge pass");
|
FramePass& mergePass = frameGraph.AddPass("Merge pass");
|
||||||
|
|
||||||
renderTargetData.finalAttachment = frameGraph.AddAttachment({
|
renderTargetData.finalAttachment = frameGraph.AddAttachment({
|
||||||
|
|
@ -759,6 +762,15 @@ namespace Nz
|
||||||
|
|
||||||
frameGraph.AddBackbufferOutput(renderTargetData.finalAttachment);
|
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();
|
return frameGraph.Bake();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue