refactor(rendering): move stage resource publication into contract
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -27,9 +27,5 @@ CameraFrameStageGraphBuildState BuildCameraFrameStageGraphBuildState(
|
||||
CameraFrameStage stage,
|
||||
const CameraFrameRenderGraphStageContext& context);
|
||||
|
||||
void PublishCameraFrameStageGraphBuildState(
|
||||
const CameraFrameStageGraphBuildState& stageState,
|
||||
const CameraFrameRenderGraphStageContext& context);
|
||||
|
||||
} // namespace Rendering
|
||||
} // namespace XCEngine
|
||||
|
||||
Reference in New Issue
Block a user