Formalize camera frame render-graph blackboard resources

This commit is contained in:
2026-04-14 21:34:34 +08:00
parent 1e189ff558
commit 5b0a1743d9
5 changed files with 95 additions and 43 deletions

View File

@@ -419,21 +419,19 @@ public:
bool RecordMainSceneRenderGraph(
const RenderPipelineMainSceneRenderGraphContext& context) override {
++m_state->recordMainSceneCalls;
m_state->lastRecordedMainSceneShadowHandleValid =
context.mainDirectionalShadowTexture.IsValid();
m_state->lastReceivedRenderGraphBlackboard = context.blackboard != nullptr;
if (context.blackboard != nullptr) {
if (const CameraFrameRenderGraphResources* frameResources =
context.blackboard->TryGet<CameraFrameRenderGraphResources>()) {
m_state->lastBlackboardMainSceneColorValid =
frameResources->mainSceneColor.IsValid();
m_state->lastBlackboardMainSceneDepthValid =
frameResources->mainSceneDepth.IsValid();
m_state->lastBlackboardMainDirectionalShadowValid =
frameResources->mainDirectionalShadow.IsValid();
m_state->lastBlackboardObjectIdColorValid =
frameResources->objectIdColor.IsValid();
}
if (const CameraFrameRenderGraphResources* frameResources =
TryGetCameraFrameRenderGraphResources(context.blackboard)) {
m_state->lastBlackboardMainSceneColorValid =
frameResources->mainScene.color.IsValid();
m_state->lastBlackboardMainSceneDepthValid =
frameResources->mainScene.depth.IsValid();
m_state->lastBlackboardMainDirectionalShadowValid =
frameResources->mainDirectionalShadow.IsValid();
m_state->lastBlackboardObjectIdColorValid =
frameResources->objectId.color.IsValid();
m_state->lastRecordedMainSceneShadowHandleValid =
frameResources->mainDirectionalShadow.IsValid();
}
if (!m_state->recordMainSceneResult) {
return false;
@@ -444,8 +442,12 @@ public:
surface.SetAutoTransitionEnabled(false);
const std::vector<RenderGraphTextureHandle> colorTargets = context.colorTargets;
const RenderGraphTextureHandle depthTarget = context.depthTarget;
const CameraFrameRenderGraphResources* const frameResources =
TryGetCameraFrameRenderGraphResources(context.blackboard);
const RenderGraphTextureHandle mainDirectionalShadowTexture =
context.mainDirectionalShadowTexture;
frameResources != nullptr
? frameResources->mainDirectionalShadow
: RenderGraphTextureHandle{};
bool* const executionSucceeded = context.executionSucceeded;
const std::shared_ptr<MockPipelineState> state = m_state;