Graph-manage main scene imported surfaces
This commit is contained in:
@@ -29,6 +29,7 @@ struct MockPipelineState {
|
||||
int shutdownCalls = 0;
|
||||
int renderCalls = 0;
|
||||
bool renderResult = true;
|
||||
bool lastSurfaceAutoTransitionEnabled = true;
|
||||
uint32_t lastSurfaceWidth = 0;
|
||||
uint32_t lastSurfaceHeight = 0;
|
||||
int32_t lastRenderAreaX = 0;
|
||||
@@ -404,6 +405,7 @@ public:
|
||||
const RenderSceneData& sceneData) override {
|
||||
m_state->eventLog.push_back("pipeline");
|
||||
++m_state->renderCalls;
|
||||
m_state->lastSurfaceAutoTransitionEnabled = surface.IsAutoTransitionEnabled();
|
||||
m_state->lastSurfaceWidth = surface.GetWidth();
|
||||
m_state->lastSurfaceHeight = surface.GetHeight();
|
||||
const XCEngine::Math::RectInt renderArea = surface.GetRenderArea();
|
||||
@@ -1413,6 +1415,33 @@ TEST(CameraRenderer_Test, ExecutesShadowCasterAndDepthOnlyRequestsBeforeMainPipe
|
||||
EXPECT_FLOAT_EQ(depthPassRaw->lastClearColor.a, 1.0f);
|
||||
}
|
||||
|
||||
TEST(CameraRenderer_Test, UsesGraphManagedSurfaceForMainSceneWhenOutputAttachmentsExist) {
|
||||
Scene scene("CameraRendererGraphManagedMainScene");
|
||||
|
||||
GameObject* cameraObject = scene.CreateGameObject("Camera");
|
||||
auto* camera = cameraObject->AddComponent<CameraComponent>();
|
||||
camera->SetPrimary(true);
|
||||
camera->SetDepth(3.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(320, 180);
|
||||
request.surface.SetColorAttachment(reinterpret_cast<XCEngine::RHI::RHIResourceView*>(1));
|
||||
request.surface.SetDepthAttachment(reinterpret_cast<XCEngine::RHI::RHIResourceView*>(2));
|
||||
request.cameraDepth = camera->GetDepth();
|
||||
|
||||
ASSERT_TRUE(renderer.Render(CameraFramePlan::FromRequest(request)));
|
||||
EXPECT_EQ(state->renderCalls, 1);
|
||||
EXPECT_FALSE(state->lastSurfaceAutoTransitionEnabled);
|
||||
EXPECT_EQ(state->lastSurfaceWidth, 320u);
|
||||
EXPECT_EQ(state->lastSurfaceHeight, 180u);
|
||||
}
|
||||
|
||||
TEST(CameraRenderer_Test, AutoAllocatesDirectionalShadowSurfaceFromShadowPlan) {
|
||||
Scene scene("CameraRendererAutoDirectionalShadowScene");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user