refactor: route scene view passes through camera renderer

This commit is contained in:
2026-04-02 12:47:06 +08:00
parent 0d3851204f
commit 697deb4e41
6 changed files with 107 additions and 29 deletions

View File

@@ -438,6 +438,31 @@ TEST(CameraRenderer_Test, ShutsDownSequencesWhenPostPassInitializationFails) {
"shutdown:pre" }));
}
TEST(CameraRenderer_Test, RejectsBuiltinSceneViewPostProcessThatCannotProduceFreshObjectIdData) {
Scene scene("CameraRendererSceneViewPostProcessValidationScene");
GameObject* cameraObject = scene.CreateGameObject("Camera");
auto* camera = cameraObject->AddComponent<CameraComponent>();
camera->SetPrimary(true);
camera->SetDepth(4.0f);
auto state = std::make_shared<MockPipelineState>();
CameraRenderer renderer(std::make_unique<MockPipeline>(state));
CameraRenderRequest request;
request.scene = &scene;
request.camera = camera;
request.context = CreateValidContext();
request.surface = RenderSurface(512, 512);
request.cameraDepth = camera->GetDepth();
request.builtinSceneViewPostProcess.gridPassData.valid = true;
request.builtinSceneViewPostProcess.objectIdTextureView =
reinterpret_cast<XCEngine::RHI::RHIResourceView*>(1);
EXPECT_FALSE(renderer.Render(request));
EXPECT_TRUE(state->eventLog.empty());
}
TEST(SceneRenderer_Test, BuildsSortedRequestsForAllUsableCamerasAndHonorsOverrideCamera) {
Scene scene("SceneRendererRequestScene");