Update camera renderer shadow allocation test expectations
This commit is contained in:
@@ -682,69 +682,78 @@ TEST(CameraRenderer_Test, AutoAllocatesDirectionalShadowSurfaceFromShadowPlan) {
|
|||||||
auto allocationState = std::make_shared<MockShadowAllocationState>();
|
auto allocationState = std::make_shared<MockShadowAllocationState>();
|
||||||
MockShadowDevice device(allocationState);
|
MockShadowDevice device(allocationState);
|
||||||
|
|
||||||
CameraRenderer renderer(
|
|
||||||
std::make_unique<MockPipeline>(pipelineState),
|
|
||||||
std::make_unique<MockObjectIdPass>(pipelineState));
|
|
||||||
|
|
||||||
auto shadowPass = std::make_unique<MockScenePass>(pipelineState, "shadowCaster");
|
|
||||||
MockScenePass* shadowPassRaw = shadowPass.get();
|
|
||||||
renderer.SetShadowCasterPass(std::move(shadowPass));
|
|
||||||
|
|
||||||
RenderContext context = CreateValidContext();
|
RenderContext context = CreateValidContext();
|
||||||
context.device = &device;
|
context.device = &device;
|
||||||
|
|
||||||
CameraRenderRequest request;
|
{
|
||||||
request.scene = &scene;
|
CameraRenderer renderer(
|
||||||
request.camera = camera;
|
std::make_unique<MockPipeline>(pipelineState),
|
||||||
request.context = context;
|
std::make_unique<MockObjectIdPass>(pipelineState));
|
||||||
request.surface = RenderSurface(320, 180);
|
|
||||||
request.cameraDepth = camera->GetDepth();
|
auto shadowPass = std::make_unique<MockScenePass>(pipelineState, "shadowCaster");
|
||||||
request.directionalShadow.enabled = true;
|
MockScenePass* shadowPassRaw = shadowPass.get();
|
||||||
request.directionalShadow.mapWidth = 256;
|
renderer.SetShadowCasterPass(std::move(shadowPass));
|
||||||
request.directionalShadow.mapHeight = 128;
|
|
||||||
request.directionalShadow.cameraData.viewportWidth = 256;
|
CameraRenderRequest request;
|
||||||
request.directionalShadow.cameraData.viewportHeight = 128;
|
request.scene = &scene;
|
||||||
request.directionalShadow.cameraData.clearFlags = RenderClearFlags::Depth;
|
request.camera = camera;
|
||||||
request.directionalShadow.cameraData.worldPosition = XCEngine::Math::Vector3(3.0f, 4.0f, 5.0f);
|
request.context = context;
|
||||||
request.directionalShadow.cameraData.viewProjection =
|
request.surface = RenderSurface(320, 180);
|
||||||
XCEngine::Math::Matrix4x4::Translation(XCEngine::Math::Vector3(11.0f, 12.0f, 13.0f));
|
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<std::string>{
|
||||||
|
"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<std::string>{
|
|
||||||
"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->shutdownDepthViewCalls, 1);
|
||||||
EXPECT_EQ(allocationState->shutdownShaderViewCalls, 1);
|
EXPECT_EQ(allocationState->shutdownShaderViewCalls, 1);
|
||||||
EXPECT_EQ(allocationState->shutdownTextureCalls, 1);
|
EXPECT_EQ(allocationState->shutdownTextureCalls, 1);
|
||||||
EXPECT_EQ(allocationState->destroyDepthViewCalls, 1);
|
EXPECT_EQ(allocationState->destroyDepthViewCalls, 1);
|
||||||
EXPECT_EQ(allocationState->destroyShaderViewCalls, 1);
|
EXPECT_EQ(allocationState->destroyShaderViewCalls, 1);
|
||||||
EXPECT_EQ(allocationState->destroyTextureCalls, 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) {
|
TEST(CameraRenderer_Test, StopsRenderingWhenShadowCasterRequestIsInvalid) {
|
||||||
|
|||||||
Reference in New Issue
Block a user