refactor(rendering): formalize native graph recording helpers
This commit is contained in:
@@ -425,19 +425,26 @@ RenderGraphRecordingContext BuildCameraFrameStageGraphRecordingContext(
|
||||
const CameraFrameRenderGraphSourceBinding& sourceBinding,
|
||||
std::vector<RenderGraphTextureHandle> colorTargets,
|
||||
RenderGraphTextureHandle depthTarget) {
|
||||
RenderGraphRecordingContextOverrides overrides = {};
|
||||
overrides.passName = &passName;
|
||||
overrides.overrideColorTargets = true;
|
||||
overrides.colorTargets = std::move(colorTargets);
|
||||
overrides.overrideDepthTarget = true;
|
||||
overrides.depthTarget = depthTarget;
|
||||
return CloneRenderGraphRecordingContext(
|
||||
RenderGraphRecordingContextBuildParams recordingParams = {};
|
||||
recordingParams.passName = &passName;
|
||||
recordingParams.overrideSourceBinding = true;
|
||||
recordingParams.sourceBinding =
|
||||
MakeRenderGraphRecordingSourceBinding(
|
||||
sourceBinding.sourceSurfaceTemplate,
|
||||
sourceBinding.sourceColorView,
|
||||
sourceBinding.sourceColorState,
|
||||
sourceBinding.sourceColor);
|
||||
recordingParams.overrideColorTargets = true;
|
||||
recordingParams.colorTargets = std::move(colorTargets);
|
||||
recordingParams.overrideDepthTarget = true;
|
||||
recordingParams.depthTarget = depthTarget;
|
||||
return BuildRenderGraphRecordingContext(
|
||||
BuildCameraFrameStageGraphRecordingContext(
|
||||
context,
|
||||
stageState,
|
||||
sceneData,
|
||||
sourceBinding),
|
||||
overrides);
|
||||
std::move(recordingParams));
|
||||
}
|
||||
|
||||
RenderGraphRecordingContext BuildCameraFrameStageGraphRecordingContext(
|
||||
|
||||
@@ -17,12 +17,6 @@ namespace Internal {
|
||||
|
||||
namespace {
|
||||
|
||||
RenderSurface BuildGraphManagedForwardSceneSurface(const RenderSurface& templateSurface) {
|
||||
RenderSurface surface = templateSurface;
|
||||
surface.SetAutoTransitionEnabled(false);
|
||||
return surface;
|
||||
}
|
||||
|
||||
struct ForwardSceneGraphExecutionState {
|
||||
bool initialized = false;
|
||||
};
|
||||
@@ -38,18 +32,18 @@ bool BuiltinForwardStageGraphBuilder::Record(
|
||||
BuiltinForwardPipeline& pipeline,
|
||||
const RenderPipelineStageRenderGraphContext& context) {
|
||||
const RenderSurface graphManagedSurface =
|
||||
BuildGraphManagedForwardSceneSurface(context.surfaceTemplate);
|
||||
const bool hasSourceSurface = context.sourceSurface != nullptr;
|
||||
const RenderSurface sourceSurface =
|
||||
hasSourceSurface ? *context.sourceSurface : RenderSurface();
|
||||
RenderGraphRecordingContextOverrides overrides = {};
|
||||
overrides.surface = &graphManagedSurface;
|
||||
overrides.overrideSourceSurface = true;
|
||||
overrides.sourceSurface = hasSourceSurface ? &sourceSurface : nullptr;
|
||||
BuildRenderGraphManagedSurfaceTemplate(context.surfaceTemplate);
|
||||
const RenderGraphRecordingContext baseRecordingContext =
|
||||
BuildRenderGraphRecordingContext(context);
|
||||
RenderGraphRecordingContextBuildParams recordingParams = {};
|
||||
recordingParams.surface = &graphManagedSurface;
|
||||
recordingParams.overrideSourceBinding = true;
|
||||
recordingParams.sourceBinding =
|
||||
BuildRenderGraphRecordingSourceBinding(baseRecordingContext);
|
||||
RenderGraphRecordingContext recordingContext =
|
||||
CloneRenderGraphRecordingContext(
|
||||
BuildRenderGraphRecordingContext(context),
|
||||
overrides);
|
||||
BuildRenderGraphRecordingContext(
|
||||
baseRecordingContext,
|
||||
std::move(recordingParams));
|
||||
|
||||
const CameraFrameRenderGraphResources* const frameResources =
|
||||
TryGetCameraFrameRenderGraphResources(recordingContext.blackboard);
|
||||
|
||||
@@ -48,13 +48,17 @@ bool RecordRenderPipelineStagePhasePass(
|
||||
RenderPassGraphBeginCallback beginPassCallback,
|
||||
RenderPassGraphEndCallback endPassCallback,
|
||||
std::vector<RenderGraphTextureHandle> additionalReadTextures) {
|
||||
const Containers::String phasePassName =
|
||||
BuildRenderPipelineStagePhasePassName(
|
||||
context.passName,
|
||||
scenePhase);
|
||||
RenderGraphRecordingContextBuildParams recordingParams = {};
|
||||
recordingParams.passName = &phasePassName;
|
||||
const RenderPassRenderGraphContext passContext =
|
||||
BuildRenderPassRenderGraphContext(
|
||||
CloneRenderGraphRecordingContext(
|
||||
BuildRenderGraphRecordingContext(
|
||||
BuildRenderGraphRecordingContext(context),
|
||||
BuildRenderPipelineStagePhasePassName(
|
||||
context.passName,
|
||||
scenePhase)),
|
||||
std::move(recordingParams)),
|
||||
beginPassCallback,
|
||||
endPassCallback);
|
||||
return RecordColorDepthCallbackRasterPass(
|
||||
|
||||
@@ -10,22 +10,20 @@ namespace Rendering {
|
||||
|
||||
bool SceneRenderFeaturePass::RecordRenderGraph(
|
||||
const SceneRenderFeaturePassRenderGraphContext& context) {
|
||||
const bool usesSourceColor = context.sourceColorTexture.IsValid();
|
||||
const RenderGraphRecordingContext baseRecordingContext =
|
||||
BuildRenderGraphRecordingContext(context);
|
||||
const RenderSurface sourceSurfaceTemplate =
|
||||
baseRecordingContext.sourceSurface != nullptr
|
||||
? *baseRecordingContext.sourceSurface
|
||||
: (usesSourceColor ? context.surface : RenderSurface());
|
||||
RenderGraphRecordingContextOverrides overrides = {};
|
||||
overrides.overrideSourceSurface =
|
||||
baseRecordingContext.sourceSurface == nullptr && usesSourceColor;
|
||||
overrides.sourceSurface =
|
||||
overrides.overrideSourceSurface ? &sourceSurfaceTemplate : nullptr;
|
||||
const RenderGraphRecordingContext recordingContext =
|
||||
CloneRenderGraphRecordingContext(
|
||||
RenderSurface sourceSurfaceTemplate = {};
|
||||
RenderGraphRecordingContextBuildParams recordingParams = {};
|
||||
recordingParams.overrideSourceBinding = true;
|
||||
recordingParams.sourceBinding =
|
||||
ResolveRenderGraphRecordingSourceBinding(
|
||||
baseRecordingContext,
|
||||
overrides);
|
||||
&baseRecordingContext.surface,
|
||||
&sourceSurfaceTemplate);
|
||||
const RenderGraphRecordingContext recordingContext =
|
||||
BuildRenderGraphRecordingContext(
|
||||
baseRecordingContext,
|
||||
std::move(recordingParams));
|
||||
|
||||
const RenderPassGraphBeginCallback beginPassCallback =
|
||||
context.beginPassCallback
|
||||
|
||||
Reference in New Issue
Block a user