#include #include using namespace XCEngine::Rendering; TEST(CameraFrameRenderGraphFrameData_Test, StoresFrameDataAndResourcesInBlackboard) { RenderGraphBlackboard blackboard = {}; CameraFrameRenderGraphFrameData& frameData = EmplaceCameraFrameRenderGraphFrameData(blackboard); frameData.resources.mainScene.color = RenderGraphTextureHandle{ 7u }; frameData.resources.postProcess.depth = RenderGraphTextureHandle{ 9u }; CameraFrameRenderGraphFrameData* const storedFrameData = TryGetCameraFrameRenderGraphFrameData(&blackboard); ASSERT_NE(storedFrameData, nullptr); EXPECT_EQ(storedFrameData, &frameData); CameraFrameRenderGraphResources* const frameResources = TryGetCameraFrameRenderGraphResources(&blackboard); ASSERT_NE(frameResources, nullptr); EXPECT_EQ(frameResources, &frameData.resources); EXPECT_EQ(frameResources->mainScene.color.index, 7u); EXPECT_EQ(frameResources->postProcess.depth.index, 9u); } TEST(CameraFrameRenderGraphFrameData_Test, ResolvesColorSourceFromBlackboardFrameData) { RenderGraphBlackboard blackboard = {}; CameraFrameRenderGraphFrameData& frameData = EmplaceCameraFrameRenderGraphFrameData(blackboard); frameData.resources.mainScene.color = RenderGraphTextureHandle{ 17u }; frameData.resources.postProcess.color = RenderGraphTextureHandle{ 19u }; EXPECT_EQ( ResolveCameraFrameRenderGraphColorSource( &blackboard, CameraFrameColorSource::MainSceneColor) .index, 17u); EXPECT_EQ( ResolveCameraFrameRenderGraphColorSource( &blackboard, CameraFrameColorSource::PostProcessColor) .index, 19u); } TEST(CameraFrameRenderGraphFrameData_Test, ResolvesStageSurfaceResourcesThroughCentralSlotPolicy) { CameraFrameRenderGraphResources frameResources = {}; EXPECT_EQ( ResolveCameraFrameRenderGraphStageSurfaceResources( frameResources, CameraFrameStage::MainScene), &frameResources.mainScene); EXPECT_EQ( ResolveCameraFrameRenderGraphStageSurfaceResources( frameResources, CameraFrameStage::PostProcess), &frameResources.postProcess); EXPECT_EQ( ResolveCameraFrameRenderGraphStageSurfaceResources( frameResources, CameraFrameStage::ObjectId), &frameResources.objectId); EXPECT_EQ( ResolveCameraFrameRenderGraphStageSurfaceResources( frameResources, CameraFrameStage::FinalOutput), nullptr); WriteCameraFrameRenderGraphStageSurfaceResources( frameResources, CameraFrameStage::PostProcess, RenderGraphTextureHandle{ 23u }, RenderGraphTextureHandle{ 29u }); WriteCameraFrameRenderGraphStageSurfaceResources( frameResources, CameraFrameStage::FinalOutput, RenderGraphTextureHandle{ 31u }, RenderGraphTextureHandle{ 37u }); EXPECT_EQ(frameResources.postProcess.color.index, 23u); EXPECT_EQ(frameResources.postProcess.depth.index, 29u); EXPECT_FALSE(frameResources.mainScene.color.IsValid()); EXPECT_FALSE(frameResources.objectId.color.IsValid()); }