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

@@ -1770,7 +1770,7 @@ TEST(SceneRenderer_Test, PreservesExistingSurfaceRenderAreaForFullViewportCamera
EXPECT_EQ(renderArea.height, 240);
}
TEST(SceneRenderer_Test, BuildsCameraColorScalePostProcessRequestFromCameraSettings) {
TEST(SceneRenderer_Test, BuildsCameraColorScalePostProcessRequestFromCameraPassStack) {
Scene scene("SceneRendererCameraPostProcessScene");
GameObject* cameraObject = scene.CreateGameObject("Camera");
@@ -1778,8 +1778,10 @@ TEST(SceneRenderer_Test, BuildsCameraColorScalePostProcessRequestFromCameraSetti
camera->SetPrimary(true);
camera->SetDepth(2.0f);
camera->SetViewportRect(XCEngine::Math::Rect(0.25f, 0.125f, 0.5f, 0.625f));
camera->SetColorScalePostProcessEnabled(true);
camera->SetColorScalePostProcessScale(XCEngine::Math::Vector4(0.55f, 0.8f, 1.1f, 1.0f));
camera->SetColorScalePostProcessPasses({
XCEngine::Math::Vector4(1.0f, 0.75f, 0.75f, 1.0f),
XCEngine::Math::Vector4(0.55f, 0.95f, 1.1f, 1.0f)
});
auto allocationState = std::make_shared<MockShadowAllocationState>();
MockShadowDevice device(allocationState);
@@ -1811,7 +1813,7 @@ TEST(SceneRenderer_Test, BuildsCameraColorScalePostProcessRequestFromCameraSetti
EXPECT_TRUE(request.postProcess.IsRequested());
EXPECT_TRUE(request.postProcess.IsValid());
EXPECT_NE(request.postProcess.passes, nullptr);
ASSERT_EQ(request.postProcess.passes->GetPassCount(), 1u);
ASSERT_EQ(request.postProcess.passes->GetPassCount(), 2u);
EXPECT_EQ(request.postProcess.destinationSurface.GetColorAttachments()[0], backBufferColorView);
EXPECT_EQ(request.postProcess.destinationSurface.GetDepthAttachment(), depthView);
EXPECT_EQ(request.postProcess.sourceSurface.GetDepthAttachment(), depthView);