Files
XCEngine/tests/Rendering/unit/test_camera_frame_graph_frame_data.cpp

89 lines
3.3 KiB
C++

#include <gtest/gtest.h>
#include <XCEngine/Rendering/Execution/CameraFrameRenderGraphFrameData.h>
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());
}