refactor(rendering): add override helpers for shared recording contexts

This commit is contained in:
2026-04-15 13:01:04 +08:00
parent 8aee665d32
commit ea2e44976a
5 changed files with 128 additions and 34 deletions

View File

@@ -37,15 +37,19 @@ bool ScenePhaseSamplesMainDirectionalShadow(ScenePhase scenePhase) {
bool BuiltinForwardMainSceneGraphBuilder::Record(
BuiltinForwardPipeline& pipeline,
const RenderPipelineMainSceneRenderGraphContext& context) {
RenderGraphRecordingContext recordingContext =
BuildRenderGraphRecordingContext(context);
recordingContext.surface =
const RenderSurface graphManagedSurface =
BuildGraphManagedForwardSceneSurface(context.surfaceTemplate);
const bool hasSourceSurface = recordingContext.sourceSurface != nullptr;
const bool hasSourceSurface = context.sourceSurface != nullptr;
const RenderSurface sourceSurface =
hasSourceSurface ? *recordingContext.sourceSurface : RenderSurface();
recordingContext.sourceSurface = hasSourceSurface ? &sourceSurface : nullptr;
hasSourceSurface ? *context.sourceSurface : RenderSurface();
RenderGraphRecordingContextOverrides overrides = {};
overrides.surface = &graphManagedSurface;
overrides.overrideSourceSurface = true;
overrides.sourceSurface = hasSourceSurface ? &sourceSurface : nullptr;
RenderGraphRecordingContext recordingContext =
CloneRenderGraphRecordingContext(
BuildRenderGraphRecordingContext(context),
overrides);
const CameraFrameRenderGraphResources* const frameResources =
TryGetCameraFrameRenderGraphResources(recordingContext.blackboard);