Support camera-config color-scale pass stacks

This commit is contained in:
2026-04-06 14:37:54 +08:00
parent f0d3f251b4
commit 3a64c325bf
6 changed files with 154 additions and 30 deletions

View File

@@ -99,12 +99,16 @@ void SceneRenderer::AttachCameraPostProcessRequests(
for (size_t index = 0; index < requests.size(); ++index) {
CameraRenderRequest& request = requests[index];
if (request.camera == nullptr ||
!request.camera->IsColorScalePostProcessEnabled() ||
request.context.device == nullptr ||
!HasValidColorTarget(request.surface)) {
continue;
}
const std::vector<Math::Vector4>& colorScalePasses = request.camera->GetColorScalePostProcessPasses();
if (colorScalePasses.empty()) {
continue;
}
const std::vector<RHI::RHIResourceView*>& colorAttachments = request.surface.GetColorAttachments();
const RHI::Format colorFormat = colorAttachments[0]->GetFormat();
if (colorFormat == RHI::Format::Unknown) {
@@ -128,8 +132,10 @@ void SceneRenderer::AttachCameraPostProcessRequests(
}
std::unique_ptr<RenderPassSequence> postProcessSequence = std::make_unique<RenderPassSequence>();
postProcessSequence->AddPass(std::make_unique<Passes::BuiltinColorScalePostProcessPass>(
request.camera->GetColorScalePostProcessScale()));
for (const Math::Vector4& colorScale : colorScalePasses) {
postProcessSequence->AddPass(
std::make_unique<Passes::BuiltinColorScalePostProcessPass>(colorScale));
}
RenderSurface sourceSurface = sourceEntry->surface;
sourceSurface.SetDepthAttachment(request.surface.GetDepthAttachment());