From e22d7d7f3d5ffa17ba6ddcfbf4dbd8d9a9bb94d2 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Sun, 5 Apr 2026 13:57:17 +0800 Subject: [PATCH] Update camera renderer shadow allocation test expectations --- .../unit/test_camera_scene_renderer.cpp | 115 ++++++++++-------- 1 file changed, 62 insertions(+), 53 deletions(-) diff --git a/tests/Rendering/unit/test_camera_scene_renderer.cpp b/tests/Rendering/unit/test_camera_scene_renderer.cpp index 0278062e..d5cd4bf4 100644 --- a/tests/Rendering/unit/test_camera_scene_renderer.cpp +++ b/tests/Rendering/unit/test_camera_scene_renderer.cpp @@ -682,69 +682,78 @@ TEST(CameraRenderer_Test, AutoAllocatesDirectionalShadowSurfaceFromShadowPlan) { auto allocationState = std::make_shared(); MockShadowDevice device(allocationState); - CameraRenderer renderer( - std::make_unique(pipelineState), - std::make_unique(pipelineState)); - - auto shadowPass = std::make_unique(pipelineState, "shadowCaster"); - MockScenePass* shadowPassRaw = shadowPass.get(); - renderer.SetShadowCasterPass(std::move(shadowPass)); - RenderContext context = CreateValidContext(); context.device = &device; - CameraRenderRequest request; - request.scene = &scene; - request.camera = camera; - request.context = context; - request.surface = RenderSurface(320, 180); - request.cameraDepth = camera->GetDepth(); - request.directionalShadow.enabled = true; - request.directionalShadow.mapWidth = 256; - request.directionalShadow.mapHeight = 128; - request.directionalShadow.cameraData.viewportWidth = 256; - request.directionalShadow.cameraData.viewportHeight = 128; - request.directionalShadow.cameraData.clearFlags = RenderClearFlags::Depth; - request.directionalShadow.cameraData.worldPosition = XCEngine::Math::Vector3(3.0f, 4.0f, 5.0f); - request.directionalShadow.cameraData.viewProjection = - XCEngine::Math::Matrix4x4::Translation(XCEngine::Math::Vector3(11.0f, 12.0f, 13.0f)); + { + CameraRenderer renderer( + std::make_unique(pipelineState), + std::make_unique(pipelineState)); + + auto shadowPass = std::make_unique(pipelineState, "shadowCaster"); + MockScenePass* shadowPassRaw = shadowPass.get(); + renderer.SetShadowCasterPass(std::move(shadowPass)); + + CameraRenderRequest request; + request.scene = &scene; + request.camera = camera; + request.context = context; + request.surface = RenderSurface(320, 180); + request.cameraDepth = camera->GetDepth(); + request.directionalShadow.enabled = true; + request.directionalShadow.mapWidth = 256; + request.directionalShadow.mapHeight = 128; + request.directionalShadow.cameraData.viewportWidth = 256; + request.directionalShadow.cameraData.viewportHeight = 128; + request.directionalShadow.cameraData.clearFlags = RenderClearFlags::Depth; + request.directionalShadow.cameraData.worldPosition = XCEngine::Math::Vector3(3.0f, 4.0f, 5.0f); + request.directionalShadow.cameraData.viewProjection = + XCEngine::Math::Matrix4x4::Translation(XCEngine::Math::Vector3(11.0f, 12.0f, 13.0f)); + + ASSERT_TRUE(renderer.Render(request)); + EXPECT_EQ( + pipelineState->eventLog, + (std::vector{ + "init:shadowCaster", + "shadowCaster", + "pipeline" })); + EXPECT_EQ(shadowPassRaw->lastViewportWidth, 256u); + EXPECT_EQ(shadowPassRaw->lastViewportHeight, 128u); + EXPECT_EQ(shadowPassRaw->lastSurfaceWidth, 256u); + EXPECT_EQ(shadowPassRaw->lastSurfaceHeight, 128u); + EXPECT_EQ(shadowPassRaw->lastClearFlags, RenderClearFlags::Depth); + EXPECT_EQ(shadowPassRaw->lastWorldPosition, XCEngine::Math::Vector3(3.0f, 4.0f, 5.0f)); + EXPECT_EQ(allocationState->createTextureCalls, 1); + EXPECT_EQ(allocationState->createDepthViewCalls, 1); + EXPECT_EQ(allocationState->createShaderViewCalls, 1); + EXPECT_EQ(allocationState->lastTextureWidth, 256u); + EXPECT_EQ(allocationState->lastTextureHeight, 128u); + EXPECT_EQ(allocationState->lastTextureFormat, XCEngine::RHI::Format::D32_Float); + EXPECT_EQ(allocationState->lastDepthViewFormat, XCEngine::RHI::Format::D32_Float); + EXPECT_EQ(allocationState->lastShaderViewFormat, XCEngine::RHI::Format::Unknown); + EXPECT_EQ(allocationState->shutdownDepthViewCalls, 0); + EXPECT_EQ(allocationState->shutdownShaderViewCalls, 0); + EXPECT_EQ(allocationState->shutdownTextureCalls, 0); + EXPECT_EQ(allocationState->destroyDepthViewCalls, 0); + EXPECT_EQ(allocationState->destroyShaderViewCalls, 0); + EXPECT_EQ(allocationState->destroyTextureCalls, 0); + EXPECT_TRUE(pipelineState->lastHasMainDirectionalShadow); + EXPECT_NE(pipelineState->lastShadowMap, nullptr); + EXPECT_FLOAT_EQ(pipelineState->lastShadowViewProjection.m[0][3], 11.0f); + EXPECT_FLOAT_EQ(pipelineState->lastShadowViewProjection.m[1][3], 12.0f); + EXPECT_FLOAT_EQ(pipelineState->lastShadowViewProjection.m[2][3], 13.0f); + EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.x, 0.0015f); + EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.y, 1.0f / 256.0f); + EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.z, 1.0f / 128.0f); + EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.w, 0.85f); + } - ASSERT_TRUE(renderer.Render(request)); - EXPECT_EQ( - pipelineState->eventLog, - (std::vector{ - "init:shadowCaster", - "shadowCaster", - "pipeline" })); - EXPECT_EQ(shadowPassRaw->lastViewportWidth, 256u); - EXPECT_EQ(shadowPassRaw->lastViewportHeight, 128u); - EXPECT_EQ(shadowPassRaw->lastSurfaceWidth, 256u); - EXPECT_EQ(shadowPassRaw->lastSurfaceHeight, 128u); - EXPECT_EQ(shadowPassRaw->lastClearFlags, RenderClearFlags::Depth); - EXPECT_EQ(shadowPassRaw->lastWorldPosition, XCEngine::Math::Vector3(3.0f, 4.0f, 5.0f)); - EXPECT_EQ(allocationState->createTextureCalls, 1); - EXPECT_EQ(allocationState->createDepthViewCalls, 1); - EXPECT_EQ(allocationState->createShaderViewCalls, 1); - EXPECT_EQ(allocationState->lastTextureWidth, 256u); - EXPECT_EQ(allocationState->lastTextureHeight, 128u); - EXPECT_EQ(allocationState->lastTextureFormat, XCEngine::RHI::Format::D24_UNorm_S8_UInt); - EXPECT_EQ(allocationState->lastDepthViewFormat, XCEngine::RHI::Format::D24_UNorm_S8_UInt); - EXPECT_EQ(allocationState->lastShaderViewFormat, XCEngine::RHI::Format::D24_UNorm_S8_UInt); EXPECT_EQ(allocationState->shutdownDepthViewCalls, 1); EXPECT_EQ(allocationState->shutdownShaderViewCalls, 1); EXPECT_EQ(allocationState->shutdownTextureCalls, 1); EXPECT_EQ(allocationState->destroyDepthViewCalls, 1); EXPECT_EQ(allocationState->destroyShaderViewCalls, 1); EXPECT_EQ(allocationState->destroyTextureCalls, 1); - EXPECT_TRUE(pipelineState->lastHasMainDirectionalShadow); - EXPECT_NE(pipelineState->lastShadowMap, nullptr); - EXPECT_FLOAT_EQ(pipelineState->lastShadowViewProjection.m[0][3], 11.0f); - EXPECT_FLOAT_EQ(pipelineState->lastShadowViewProjection.m[1][3], 12.0f); - EXPECT_FLOAT_EQ(pipelineState->lastShadowViewProjection.m[2][3], 13.0f); - EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.x, 0.0015f); - EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.y, 1.0f / 256.0f); - EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.z, 1.0f / 128.0f); - EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.w, 0.85f); } TEST(CameraRenderer_Test, StopsRenderingWhenShadowCasterRequestIsInvalid) {