refactor(rendering): move fullscreen stage source binding into contract
This commit is contained in:
@@ -19,6 +19,41 @@ CameraFrameRenderGraphSourceBinding BuildCameraFrameStageGraphSourceBinding(
|
||||
};
|
||||
}
|
||||
|
||||
CameraFrameRenderGraphSourceBinding ResolveCameraFrameFullscreenStageGraphSourceBinding(
|
||||
const CameraFramePlan& plan,
|
||||
CameraFrameStage stage,
|
||||
const RenderSurface& stageSurfaceTemplate,
|
||||
const RenderSurface* explicitSourceSurfaceTemplate,
|
||||
RHI::RHIResourceView* explicitSourceColorView,
|
||||
const RHI::ResourceStates explicitSourceColorState,
|
||||
const RenderGraphTextureHandle explicitSourceColor,
|
||||
const RenderGraphBlackboard* blackboard) {
|
||||
CameraFrameRenderGraphSourceBinding binding = {};
|
||||
binding.sourceSurfaceTemplate = explicitSourceSurfaceTemplate;
|
||||
binding.sourceColorView = explicitSourceColorView;
|
||||
binding.sourceColorState = explicitSourceColorState;
|
||||
binding.sourceColor = explicitSourceColor;
|
||||
|
||||
const CameraFrameColorSource graphManagedSource =
|
||||
ResolveCameraFrameStageGraphManagedColorSource(plan, stage);
|
||||
if (graphManagedSource != CameraFrameColorSource::ExplicitSurface) {
|
||||
binding.sourceSurfaceTemplate = &stageSurfaceTemplate;
|
||||
binding.sourceColorView = nullptr;
|
||||
binding.sourceColorState = RHI::ResourceStates::PixelShaderResource;
|
||||
binding.sourceColor =
|
||||
ResolveCameraFrameRenderGraphColorSource(
|
||||
blackboard,
|
||||
graphManagedSource);
|
||||
}
|
||||
|
||||
if (binding.sourceSurfaceTemplate == nullptr &&
|
||||
binding.sourceColor.IsValid()) {
|
||||
binding.sourceSurfaceTemplate = &stageSurfaceTemplate;
|
||||
}
|
||||
|
||||
return binding;
|
||||
}
|
||||
|
||||
RenderGraphRecordingContext BuildCameraFrameStageGraphRecordingContext(
|
||||
const CameraFrameRenderGraphStageContext& context,
|
||||
const CameraFrameStageGraphBuildState& stageState,
|
||||
|
||||
@@ -23,6 +23,16 @@ struct CameraFrameStageFallbackSurfaceResolution {
|
||||
CameraFrameRenderGraphSourceBinding BuildCameraFrameStageGraphSourceBinding(
|
||||
const CameraFrameStageGraphBuildState& stageState);
|
||||
|
||||
CameraFrameRenderGraphSourceBinding ResolveCameraFrameFullscreenStageGraphSourceBinding(
|
||||
const CameraFramePlan& plan,
|
||||
CameraFrameStage stage,
|
||||
const RenderSurface& stageSurfaceTemplate,
|
||||
const RenderSurface* explicitSourceSurfaceTemplate,
|
||||
RHI::RHIResourceView* explicitSourceColorView,
|
||||
RHI::ResourceStates explicitSourceColorState,
|
||||
RenderGraphTextureHandle explicitSourceColor,
|
||||
const RenderGraphBlackboard* blackboard);
|
||||
|
||||
RenderGraphRecordingContext BuildCameraFrameStageGraphRecordingContext(
|
||||
const CameraFrameRenderGraphStageContext& context,
|
||||
const CameraFrameStageGraphBuildState& stageState,
|
||||
|
||||
@@ -52,40 +52,5 @@ inline CameraFrameColorSource ResolveCameraFrameStageGraphManagedColorSource(
|
||||
return plan.ResolveStageColorSource(stage);
|
||||
}
|
||||
|
||||
inline CameraFrameRenderGraphSourceBinding ResolveCameraFrameFullscreenStageGraphSourceBinding(
|
||||
const CameraFramePlan& plan,
|
||||
CameraFrameStage stage,
|
||||
const RenderSurface& stageSurfaceTemplate,
|
||||
const RenderSurface* explicitSourceSurfaceTemplate,
|
||||
RHI::RHIResourceView* explicitSourceColorView,
|
||||
RHI::ResourceStates explicitSourceColorState,
|
||||
RenderGraphTextureHandle explicitSourceColor,
|
||||
const RenderGraphBlackboard* blackboard) {
|
||||
CameraFrameRenderGraphSourceBinding binding = {};
|
||||
binding.sourceSurfaceTemplate = explicitSourceSurfaceTemplate;
|
||||
binding.sourceColorView = explicitSourceColorView;
|
||||
binding.sourceColorState = explicitSourceColorState;
|
||||
binding.sourceColor = explicitSourceColor;
|
||||
|
||||
const CameraFrameColorSource graphManagedSource =
|
||||
ResolveCameraFrameStageGraphManagedColorSource(plan, stage);
|
||||
if (graphManagedSource != CameraFrameColorSource::ExplicitSurface) {
|
||||
binding.sourceSurfaceTemplate = &stageSurfaceTemplate;
|
||||
binding.sourceColorView = nullptr;
|
||||
binding.sourceColorState = RHI::ResourceStates::PixelShaderResource;
|
||||
binding.sourceColor =
|
||||
ResolveCameraFrameRenderGraphColorSource(
|
||||
blackboard,
|
||||
graphManagedSource);
|
||||
}
|
||||
|
||||
if (binding.sourceSurfaceTemplate == nullptr &&
|
||||
binding.sourceColor.IsValid()) {
|
||||
binding.sourceSurfaceTemplate = &stageSurfaceTemplate;
|
||||
}
|
||||
|
||||
return binding;
|
||||
}
|
||||
|
||||
} // namespace Rendering
|
||||
} // namespace XCEngine
|
||||
|
||||
Reference in New Issue
Block a user