refactor(srp): require explicit managed renderer stage planning
This commit is contained in:
@@ -419,6 +419,84 @@ namespace Gameplay
|
||||
renderer.EnqueuePass(renderPass);
|
||||
}
|
||||
}
|
||||
|
||||
public override void ConfigureCameraFramePlan(
|
||||
ScriptableRenderPipelinePlanningContext context)
|
||||
{
|
||||
if (context == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
bool hasPostProcessPass = false;
|
||||
bool hasFinalOutputPass = false;
|
||||
for (int i = 0; i < m_passes.Length; ++i)
|
||||
{
|
||||
ScriptableRenderPass renderPass = m_passes[i];
|
||||
if (renderPass == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (renderPass.SupportsStage(
|
||||
CameraFrameStage.PostProcess))
|
||||
{
|
||||
hasPostProcessPass = true;
|
||||
}
|
||||
|
||||
if (renderPass.SupportsStage(
|
||||
CameraFrameStage.FinalOutput))
|
||||
{
|
||||
hasFinalOutputPass = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool needsGraphManagedPostProcessOutput =
|
||||
context.HasFinalColorProcessing() ||
|
||||
context.IsStageRequested(
|
||||
CameraFrameStage.FinalOutput) ||
|
||||
hasFinalOutputPass;
|
||||
|
||||
if (hasPostProcessPass)
|
||||
{
|
||||
if (!context.IsStageRequested(
|
||||
CameraFrameStage.PostProcess))
|
||||
{
|
||||
context.RequestFullscreenStage(
|
||||
CameraFrameStage.PostProcess,
|
||||
CameraFrameColorSource.MainSceneColor,
|
||||
needsGraphManagedPostProcessOutput);
|
||||
}
|
||||
else if (needsGraphManagedPostProcessOutput &&
|
||||
context.GetStageColorSource(
|
||||
CameraFrameStage.PostProcess) !=
|
||||
CameraFrameColorSource.ExplicitSurface &&
|
||||
!context.UsesGraphManagedOutputColor(
|
||||
CameraFrameStage.PostProcess))
|
||||
{
|
||||
CameraFrameColorSource source =
|
||||
context.GetStageColorSource(
|
||||
CameraFrameStage.PostProcess);
|
||||
context.ClearFullscreenStage(
|
||||
CameraFrameStage.PostProcess);
|
||||
context.RequestFullscreenStage(
|
||||
CameraFrameStage.PostProcess,
|
||||
source,
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
if (hasFinalOutputPass &&
|
||||
!context.IsStageRequested(
|
||||
CameraFrameStage.FinalOutput))
|
||||
{
|
||||
context.RequestFullscreenStage(
|
||||
CameraFrameStage.FinalOutput,
|
||||
hasPostProcessPass
|
||||
? CameraFrameColorSource.PostProcessColor
|
||||
: CameraFrameColorSource.MainSceneColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal class ProbeSceneRenderer : ScriptableRenderer
|
||||
|
||||
Reference in New Issue
Block a user