Close URP stage planning authority
This commit is contained in:
@@ -5,62 +5,6 @@
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
|
||||
namespace {
|
||||
|
||||
bool UsesExplicitFullscreenSource(
|
||||
const FullscreenPassRenderRequest& request,
|
||||
CameraFrameColorSource source) {
|
||||
return source == CameraFrameColorSource::ExplicitSurface &&
|
||||
HasValidColorTarget(request.sourceSurface);
|
||||
}
|
||||
|
||||
void ConfigureLegacyFullscreenStageRequests(
|
||||
CameraFramePlan& plan) {
|
||||
const bool postProcessExplicitlyConfigured =
|
||||
plan.HasExplicitFullscreenStageConfiguration(
|
||||
CameraFrameStage::PostProcess);
|
||||
const bool finalOutputExplicitlyConfigured =
|
||||
plan.HasExplicitFullscreenStageConfiguration(
|
||||
CameraFrameStage::FinalOutput);
|
||||
const bool hasPostProcess =
|
||||
plan.postProcess.IsRequested();
|
||||
const bool hasFinalOutput =
|
||||
plan.finalOutput.IsRequested();
|
||||
|
||||
if (!postProcessExplicitlyConfigured &&
|
||||
hasPostProcess &&
|
||||
!UsesExplicitFullscreenSource(
|
||||
plan.postProcess,
|
||||
plan.ResolveStageColorSource(
|
||||
CameraFrameStage::PostProcess))) {
|
||||
plan.RequestFullscreenStage(
|
||||
CameraFrameStage::PostProcess,
|
||||
CameraFrameColorSource::MainSceneColor,
|
||||
hasFinalOutput);
|
||||
}
|
||||
|
||||
const bool canChainFromPostProcess =
|
||||
hasPostProcess &&
|
||||
!UsesExplicitFullscreenSource(
|
||||
plan.postProcess,
|
||||
plan.ResolveStageColorSource(
|
||||
CameraFrameStage::PostProcess));
|
||||
if (!finalOutputExplicitlyConfigured &&
|
||||
hasFinalOutput &&
|
||||
!UsesExplicitFullscreenSource(
|
||||
plan.finalOutput,
|
||||
plan.ResolveStageColorSource(
|
||||
CameraFrameStage::FinalOutput))) {
|
||||
plan.RequestFullscreenStage(
|
||||
CameraFrameStage::FinalOutput,
|
||||
canChainFromPostProcess
|
||||
? CameraFrameColorSource::PostProcessColor
|
||||
: CameraFrameColorSource::MainSceneColor);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
std::vector<CameraFramePlan> CameraFramePlanBuilder::BuildPlans(
|
||||
const std::vector<CameraRenderRequest>& requests,
|
||||
const RenderPipelineAsset* pipelineAsset) {
|
||||
@@ -89,8 +33,6 @@ void CameraFramePlanBuilder::ConfigurePlans(
|
||||
} else {
|
||||
ApplyDefaultRenderPipelineAssetCameraFramePlanPolicy(plan);
|
||||
}
|
||||
|
||||
ConfigureLegacyFullscreenStageRequests(plan);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,27 +53,20 @@ void PlanCameraFrameFullscreenStages(CameraFramePlan& plan) {
|
||||
if (hasPostProcess) {
|
||||
plan.SetOwnedPostProcessSequence(
|
||||
SharePassSequence(std::move(postProcessSequence)));
|
||||
plan.colorChain.usesGraphManagedSceneColor = true;
|
||||
plan.colorChain.postProcess.source = CameraFrameColorSource::MainSceneColor;
|
||||
plan.colorChain.postProcess.usesGraphManagedOutputColor = hasFinalOutput;
|
||||
if (!hasFinalOutput) {
|
||||
plan.postProcess.destinationSurface = plan.request.surface;
|
||||
}
|
||||
plan.RequestFullscreenStage(
|
||||
CameraFrameStage::PostProcess,
|
||||
CameraFrameColorSource::MainSceneColor,
|
||||
hasFinalOutput);
|
||||
}
|
||||
|
||||
if (hasFinalOutput) {
|
||||
plan.SetOwnedFinalOutputSequence(
|
||||
SharePassSequence(std::move(finalOutputSequence)));
|
||||
plan.colorChain.usesGraphManagedSceneColor = true;
|
||||
plan.colorChain.finalOutput.source =
|
||||
plan.RequestFullscreenStage(
|
||||
CameraFrameStage::FinalOutput,
|
||||
hasPostProcess
|
||||
? CameraFrameColorSource::PostProcessColor
|
||||
: CameraFrameColorSource::MainSceneColor;
|
||||
plan.finalOutput.destinationSurface = plan.request.surface;
|
||||
}
|
||||
|
||||
if (plan.UsesGraphManagedOutputColor(CameraFrameStage::MainScene)) {
|
||||
plan.ConfigureGraphManagedSceneSurface();
|
||||
: CameraFrameColorSource::MainSceneColor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user