refactor(rendering): extract default pipeline resolution from camera renderer
This commit is contained in:
@@ -421,6 +421,7 @@ public:
|
||||
struct MockPipelineAssetState {
|
||||
int createCalls = 0;
|
||||
int configureCameraFramePlanCalls = 0;
|
||||
bool createNullPipeline = false;
|
||||
std::shared_ptr<MockPipelineState> lastCreatedPipelineState;
|
||||
FinalColorSettings defaultFinalColorSettings = {};
|
||||
std::function<void(CameraFramePlan&)> configureCameraFramePlan = {};
|
||||
@@ -691,6 +692,11 @@ public:
|
||||
|
||||
std::unique_ptr<RenderPipeline> CreatePipeline() const override {
|
||||
++m_state->createCalls;
|
||||
if (m_state->createNullPipeline) {
|
||||
m_state->lastCreatedPipelineState.reset();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
m_state->lastCreatedPipelineState = std::make_shared<MockPipelineState>();
|
||||
return std::make_unique<MockPipeline>(m_state->lastCreatedPipelineState);
|
||||
}
|
||||
@@ -4281,6 +4287,35 @@ TEST(CameraRenderer_Test, DefaultPipelineAssetUsesManagedSelectionWhenPresent) {
|
||||
Pipelines::ClearManagedRenderPipelineAssetDescriptor();
|
||||
}
|
||||
|
||||
TEST(CameraRenderer_Test, RebindsToResolvedDefaultAssetWhenPreferredAssetCannotCreatePipeline) {
|
||||
const Pipelines::ManagedRenderPipelineAssetDescriptor descriptor = {
|
||||
"GameScripts",
|
||||
"Gameplay",
|
||||
"ManagedRenderPipelineProbeAsset"
|
||||
};
|
||||
Pipelines::SetManagedRenderPipelineAssetDescriptor(descriptor);
|
||||
|
||||
auto failingAssetState = std::make_shared<MockPipelineAssetState>();
|
||||
failingAssetState->createNullPipeline = true;
|
||||
|
||||
CameraRenderer renderer(std::make_shared<MockPipelineAsset>(failingAssetState));
|
||||
EXPECT_EQ(failingAssetState->createCalls, 1);
|
||||
EXPECT_NE(renderer.GetPipeline(), nullptr);
|
||||
EXPECT_NE(
|
||||
dynamic_cast<Pipelines::ScriptableRenderPipelineHost*>(renderer.GetPipeline()),
|
||||
nullptr);
|
||||
|
||||
auto* asset =
|
||||
dynamic_cast<const Pipelines::ManagedScriptableRenderPipelineAsset*>(
|
||||
renderer.GetPipelineAsset());
|
||||
ASSERT_NE(asset, nullptr);
|
||||
EXPECT_EQ(asset->GetDescriptor().assemblyName, "GameScripts");
|
||||
EXPECT_EQ(asset->GetDescriptor().namespaceName, "Gameplay");
|
||||
EXPECT_EQ(asset->GetDescriptor().className, "ManagedRenderPipelineProbeAsset");
|
||||
|
||||
Pipelines::ClearManagedRenderPipelineAssetDescriptor();
|
||||
}
|
||||
|
||||
TEST(SceneRenderer_Test, CreatesPipelineInstancesFromPipelineAssetsAndShutsDownReplacedPipelines) {
|
||||
Scene scene("SceneRendererAssetScene");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user