Group camera frame fullscreen color chain intent

This commit is contained in:
2026-04-15 00:32:23 +08:00
parent ac836ae961
commit 00fa6fffa0
7 changed files with 108 additions and 60 deletions

View File

@@ -264,7 +264,7 @@ bool CameraRenderer::Render(
"CameraRenderer::Render failed: post-process request invalid");
return false;
}
if (plan.usesGraphManagedMainSceneColor &&
if (plan.UsesGraphManagedMainSceneColor() &&
(m_pipeline == nullptr || !m_pipeline->SupportsMainSceneRenderGraph())) {
Debug::Logger::Get().Error(
Debug::LogCategory::Rendering,

View File

@@ -57,7 +57,8 @@ inline CameraFrameStageSourceBinding ResolveCameraFrameStageSourceBinding(
switch (stage) {
case CameraFrameStage::PostProcess:
return plan.postProcess.IsRequested() &&
plan.postProcessSource == CameraFrameColorSource::ExplicitSurface
plan.ResolveStageColorSource(CameraFrameStage::PostProcess) ==
CameraFrameColorSource::ExplicitSurface
? CameraFrameStageSourceBinding{
&plan.postProcess.sourceSurface,
plan.postProcess.sourceColorView,
@@ -65,7 +66,8 @@ inline CameraFrameStageSourceBinding ResolveCameraFrameStageSourceBinding(
: CameraFrameStageSourceBinding{};
case CameraFrameStage::FinalOutput:
return plan.finalOutput.IsRequested() &&
plan.finalOutputSource == CameraFrameColorSource::ExplicitSurface
plan.ResolveStageColorSource(CameraFrameStage::FinalOutput) ==
CameraFrameColorSource::ExplicitSurface
? CameraFrameStageSourceBinding{
&plan.finalOutput.sourceSurface,
plan.finalOutput.sourceColorView,

View File

@@ -84,9 +84,9 @@ void CameraFramePlanBuilder::AttachFullscreenStageRequests(
if (hasPostProcess) {
m_ownedPostProcessSequences[index] = std::move(postProcessSequence);
plan.postProcess.passes = m_ownedPostProcessSequences[index].get();
plan.usesGraphManagedMainSceneColor = true;
plan.postProcessSource = CameraFrameColorSource::MainSceneColor;
plan.usesGraphManagedPostProcessColor = hasFinalOutput;
plan.colorChain.usesGraphManagedMainSceneColor = true;
plan.colorChain.postProcess.source = CameraFrameColorSource::MainSceneColor;
plan.colorChain.postProcess.usesGraphManagedOutputColor = hasFinalOutput;
if (!hasFinalOutput) {
plan.postProcess.destinationSurface = plan.request.surface;
}
@@ -95,15 +95,15 @@ void CameraFramePlanBuilder::AttachFullscreenStageRequests(
if (hasFinalOutput) {
m_ownedFinalOutputSequences[index] = std::move(finalOutputSequence);
plan.finalOutput.passes = m_ownedFinalOutputSequences[index].get();
plan.usesGraphManagedMainSceneColor = true;
plan.finalOutputSource =
plan.colorChain.usesGraphManagedMainSceneColor = true;
plan.colorChain.finalOutput.source =
hasPostProcess
? CameraFrameColorSource::PostProcessColor
: CameraFrameColorSource::MainSceneColor;
plan.finalOutput.destinationSurface = plan.request.surface;
}
if (plan.usesGraphManagedMainSceneColor) {
if (plan.UsesGraphManagedMainSceneColor()) {
plan.ConfigureGraphManagedMainSceneSurface();
}
}