refactor(rendering): move stage resource publication into contract

This commit is contained in:
2026-04-15 10:42:10 +08:00
parent e95bdb3149
commit ddfed4c37b
6 changed files with 139 additions and 25 deletions

View File

@@ -3,6 +3,7 @@
#include "Rendering/Execution/Internal/CameraFrameRenderGraphBuilderContext.h"
#include "Rendering/Execution/Internal/CameraFrameRenderGraphStagePassRuntime.h"
#include "Rendering/Execution/Internal/CameraFrameRenderGraphSurfaceUtils.h"
#include "Rendering/Execution/DirectionalShadowExecutionState.h"
#include "Rendering/Graph/RenderGraph.h"
#include <XCEngine/Rendering/RenderPassGraphContract.h>
#include <XCEngine/Rendering/Graph/RenderGraphRecordingContext.h>
@@ -35,6 +36,23 @@ CameraFrameRenderGraphSourceBinding BuildCameraFrameStageGraphSourceBinding(
};
}
void PublishCameraFrameStageGraphResources(
const CameraFrameStageGraphBuildState& stageState,
const CameraFrameRenderGraphStageContext& context) {
CameraFrameRenderGraphResources& frameResources = context.builder.frameData.resources;
WriteCameraFrameRenderGraphStageSurfaceResources(
frameResources,
stageState.stage,
stageState.outputColor,
stageState.outputSurface.depthTexture);
if (stageState.stage == CameraFrameStage::ShadowCaster &&
context.shadowState.HasShadowSampling() &&
stageState.outputSurface.depthTexture.IsValid()) {
frameResources.mainDirectionalShadow = stageState.outputSurface.depthTexture;
}
}
RenderPassContext BuildCameraFrameStageGraphPassContext(
const CameraFrameRenderGraphStageContext& context,
const CameraFrameStageGraphBuildState& stageState,

View File

@@ -23,6 +23,10 @@ struct CameraFrameStageFallbackSurfaceResolution {
CameraFrameRenderGraphSourceBinding BuildCameraFrameStageGraphSourceBinding(
const CameraFrameStageGraphBuildState& stageState);
void PublishCameraFrameStageGraphResources(
const CameraFrameStageGraphBuildState& stageState,
const CameraFrameRenderGraphStageContext& context);
RenderPassContext BuildCameraFrameStageGraphPassContext(
const CameraFrameRenderGraphStageContext& context,
const CameraFrameStageGraphBuildState& stageState,

View File

@@ -1,5 +1,6 @@
#include "Rendering/Execution/Internal/CameraFrameRenderGraphStageDispatch.h"
#include "Rendering/Execution/Internal/CameraFrameRenderGraphStageContract.h"
#include "Rendering/Execution/Internal/CameraFrameRenderGraphStagePassRecording.h"
#include "Rendering/Execution/Internal/CameraFrameRenderGraphStageSequenceRecording.h"
#include "Rendering/Execution/Internal/CameraFrameRenderGraphStageState.h"
@@ -31,7 +32,7 @@ bool RecordCameraFrameRenderGraphStage(
BuildCameraFrameStageGraphBuildState(
stage,
context);
PublishCameraFrameStageGraphBuildState(stageState, context);
PublishCameraFrameStageGraphResources(stageState, context);
for (CameraFrameStageRecordHandler handler : kCameraFrameStageRecordHandlers) {
bool stageHandled = false;

View File

@@ -1,10 +1,7 @@
#include "Rendering/Execution/Internal/CameraFrameRenderGraphStageState.h"
#include <XCEngine/Rendering/Execution/CameraFrameRenderGraphFrameData.h>
#include "Rendering/Execution/Internal/CameraFrameRenderGraphBuilderContext.h"
#include "Rendering/Execution/Internal/CameraFrameRenderGraphStagePolicy.h"
#include "Rendering/Execution/DirectionalShadowExecutionState.h"
#include "Rendering/Execution/Internal/CameraFrameStageSurfaceResolver.h"
namespace XCEngine {
@@ -59,22 +56,5 @@ CameraFrameStageGraphBuildState BuildCameraFrameStageGraphBuildState(
return stageState;
}
void PublishCameraFrameStageGraphBuildState(
const CameraFrameStageGraphBuildState& stageState,
const CameraFrameRenderGraphStageContext& context) {
CameraFrameRenderGraphResources& frameResources = context.builder.frameData.resources;
if (stageState.stage == CameraFrameStage::ShadowCaster &&
context.shadowState.HasShadowSampling() &&
stageState.outputSurface.depthTexture.IsValid()) {
frameResources.mainDirectionalShadow = stageState.outputSurface.depthTexture;
}
WriteCameraFrameRenderGraphStageSurfaceResources(
frameResources,
stageState.stage,
stageState.outputColor,
stageState.outputSurface.depthTexture);
}
} // namespace Rendering
} // namespace XCEngine

View File

@@ -27,9 +27,5 @@ CameraFrameStageGraphBuildState BuildCameraFrameStageGraphBuildState(
CameraFrameStage stage,
const CameraFrameRenderGraphStageContext& context);
void PublishCameraFrameStageGraphBuildState(
const CameraFrameStageGraphBuildState& stageState,
const CameraFrameRenderGraphStageContext& context);
} // namespace Rendering
} // namespace XCEngine