Integrate graph-managed depth surfaces into camera stages
This commit is contained in:
@@ -472,8 +472,11 @@ public:
|
||||
return "MockObjectIdPass";
|
||||
}
|
||||
|
||||
bool Execute(const RenderPassContext&) override {
|
||||
bool Execute(const RenderPassContext& context) override {
|
||||
m_state->eventLog.push_back("objectId");
|
||||
lastSurfaceAutoTransitionEnabled = context.surface.IsAutoTransitionEnabled();
|
||||
lastSurfaceWidth = context.surface.GetRenderAreaWidth();
|
||||
lastSurfaceHeight = context.surface.GetRenderAreaHeight();
|
||||
return m_renderResult;
|
||||
}
|
||||
|
||||
@@ -484,6 +487,11 @@ public:
|
||||
private:
|
||||
std::shared_ptr<MockPipelineState> m_state;
|
||||
bool m_renderResult = true;
|
||||
|
||||
public:
|
||||
bool lastSurfaceAutoTransitionEnabled = true;
|
||||
uint32_t lastSurfaceWidth = 0;
|
||||
uint32_t lastSurfaceHeight = 0;
|
||||
};
|
||||
|
||||
class MockScenePass final : public RenderPass {
|
||||
@@ -908,9 +916,11 @@ TEST(CameraRenderer_Test, ExecutesObjectIdPassBetweenPipelineAndPostPassesWhenRe
|
||||
camera->SetDepth(3.0f);
|
||||
|
||||
auto state = std::make_shared<MockPipelineState>();
|
||||
auto objectIdPass = std::make_unique<MockObjectIdPass>(state);
|
||||
MockObjectIdPass* objectIdPassRaw = objectIdPass.get();
|
||||
CameraRenderer renderer(
|
||||
std::make_unique<MockPipeline>(state),
|
||||
std::make_unique<MockObjectIdPass>(state));
|
||||
std::move(objectIdPass));
|
||||
|
||||
RenderPassSequence prePasses;
|
||||
prePasses.AddPass(std::make_unique<TrackingPass>(state, "pre"));
|
||||
@@ -940,6 +950,10 @@ TEST(CameraRenderer_Test, ExecutesObjectIdPassBetweenPipelineAndPostPassesWhenRe
|
||||
"objectId",
|
||||
"init:post",
|
||||
"post" }));
|
||||
ASSERT_NE(objectIdPassRaw, nullptr);
|
||||
EXPECT_FALSE(objectIdPassRaw->lastSurfaceAutoTransitionEnabled);
|
||||
EXPECT_EQ(objectIdPassRaw->lastSurfaceWidth, 320u);
|
||||
EXPECT_EQ(objectIdPassRaw->lastSurfaceHeight, 180u);
|
||||
}
|
||||
|
||||
TEST(CameraRenderer_Test, RoutesSceneColorThroughPostProcessAndFinalOutputStages) {
|
||||
@@ -1386,10 +1400,12 @@ TEST(CameraRenderer_Test, ExecutesShadowCasterAndDepthOnlyRequestsBeforeMainPipe
|
||||
EXPECT_EQ(shadowPassRaw->lastViewportHeight, 64u);
|
||||
EXPECT_EQ(shadowPassRaw->lastSurfaceWidth, 128u);
|
||||
EXPECT_EQ(shadowPassRaw->lastSurfaceHeight, 64u);
|
||||
EXPECT_FALSE(shadowPassRaw->lastSurfaceAutoTransitionEnabled);
|
||||
EXPECT_EQ(shadowPassRaw->lastClearFlags, RenderClearFlags::Depth);
|
||||
EXPECT_EQ(shadowPassRaw->lastWorldPosition, XCEngine::Math::Vector3(7.0f, 8.0f, 9.0f));
|
||||
EXPECT_EQ(depthPassRaw->lastViewportWidth, 96u);
|
||||
EXPECT_EQ(depthPassRaw->lastViewportHeight, 48u);
|
||||
EXPECT_FALSE(depthPassRaw->lastSurfaceAutoTransitionEnabled);
|
||||
EXPECT_EQ(depthPassRaw->lastClearFlags, RenderClearFlags::Depth);
|
||||
EXPECT_FLOAT_EQ(depthPassRaw->lastClearColor.r, 0.3f);
|
||||
EXPECT_FLOAT_EQ(depthPassRaw->lastClearColor.g, 0.2f);
|
||||
@@ -1448,6 +1464,7 @@ TEST(CameraRenderer_Test, AutoAllocatesDirectionalShadowSurfaceFromShadowPlan) {
|
||||
EXPECT_EQ(shadowPassRaw->lastViewportHeight, 128u);
|
||||
EXPECT_EQ(shadowPassRaw->lastSurfaceWidth, 256u);
|
||||
EXPECT_EQ(shadowPassRaw->lastSurfaceHeight, 128u);
|
||||
EXPECT_FALSE(shadowPassRaw->lastSurfaceAutoTransitionEnabled);
|
||||
EXPECT_EQ(shadowPassRaw->lastClearFlags, RenderClearFlags::Depth);
|
||||
EXPECT_EQ(shadowPassRaw->lastWorldPosition, XCEngine::Math::Vector3(3.0f, 4.0f, 5.0f));
|
||||
EXPECT_EQ(allocationState->createTextureCalls, 1);
|
||||
|
||||
Reference in New Issue
Block a user