Support camera-config color-scale pass stacks
This commit is contained in:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user