refactor(rendering): unify fullscreen stage color-chain queries
This commit is contained in:
@@ -41,23 +41,23 @@ bool CameraFramePlan::UsesGraphManagedMainSceneColor() const {
|
||||
}
|
||||
|
||||
bool CameraFramePlan::UsesGraphManagedOutputColor(CameraFrameStage stage) const {
|
||||
switch (stage) {
|
||||
case CameraFrameStage::PostProcess:
|
||||
return colorChain.postProcess.usesGraphManagedOutputColor;
|
||||
default:
|
||||
return false;
|
||||
if (const CameraFrameFullscreenStagePlan* fullscreenStagePlan =
|
||||
GetFullscreenStagePlan(stage);
|
||||
fullscreenStagePlan != nullptr) {
|
||||
return fullscreenStagePlan->usesGraphManagedOutputColor;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
CameraFrameColorSource CameraFramePlan::ResolveStageColorSource(CameraFrameStage stage) const {
|
||||
switch (stage) {
|
||||
case CameraFrameStage::PostProcess:
|
||||
return colorChain.postProcess.source;
|
||||
case CameraFrameStage::FinalOutput:
|
||||
return colorChain.finalOutput.source;
|
||||
default:
|
||||
return CameraFrameColorSource::ExplicitSurface;
|
||||
if (const CameraFrameFullscreenStagePlan* fullscreenStagePlan =
|
||||
GetFullscreenStagePlan(stage);
|
||||
fullscreenStagePlan != nullptr) {
|
||||
return fullscreenStagePlan->source;
|
||||
}
|
||||
|
||||
return CameraFrameColorSource::ExplicitSurface;
|
||||
}
|
||||
|
||||
bool CameraFramePlan::IsPostProcessStageValid() const {
|
||||
@@ -161,6 +161,18 @@ const FullscreenPassRenderRequest* CameraFramePlan::GetFullscreenPassRequest(
|
||||
}
|
||||
}
|
||||
|
||||
const CameraFrameFullscreenStagePlan* CameraFramePlan::GetFullscreenStagePlan(
|
||||
CameraFrameStage stage) const {
|
||||
switch (stage) {
|
||||
case CameraFrameStage::PostProcess:
|
||||
return &colorChain.postProcess;
|
||||
case CameraFrameStage::FinalOutput:
|
||||
return &colorChain.finalOutput;
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
const ScenePassRenderRequest* CameraFramePlan::GetScenePassRequest(CameraFrameStage stage) const {
|
||||
switch (GetCameraFrameStageRequestKind(stage)) {
|
||||
case CameraFrameStageRequestKind::ShadowCaster:
|
||||
|
||||
@@ -314,20 +314,15 @@ RenderGraphTextureHandle ResolveStageOutputColorHandle(
|
||||
const RenderGraphImportedSurface& outputSurface,
|
||||
RenderGraphBuilder& graphBuilder) {
|
||||
if (UsesCameraFrameStageGraphManagedOutputColor(plan, stage)) {
|
||||
switch (stage) {
|
||||
case CameraFrameStage::MainScene:
|
||||
return graphBuilder.CreateTransientTexture(
|
||||
stageName + ".Color",
|
||||
BuildImportedTextureDesc(
|
||||
const RenderGraphTextureDesc outputDesc =
|
||||
IsCameraFrameFullscreenSequenceStage(stage)
|
||||
? BuildFullscreenTransientTextureDesc(stagePassContext.surface)
|
||||
: BuildImportedTextureDesc(
|
||||
stagePassContext.surface,
|
||||
kRenderGraphImportedColorFormat));
|
||||
case CameraFrameStage::PostProcess:
|
||||
return graphBuilder.CreateTransientTexture(
|
||||
stageName + ".Color",
|
||||
BuildFullscreenTransientTextureDesc(stagePassContext.surface));
|
||||
default:
|
||||
break;
|
||||
}
|
||||
kRenderGraphImportedColorFormat);
|
||||
return graphBuilder.CreateTransientTexture(
|
||||
stageName + ".Color",
|
||||
outputDesc);
|
||||
}
|
||||
|
||||
return GetPrimaryColorTexture(outputSurface);
|
||||
|
||||
Reference in New Issue
Block a user