feat(rendering): expose managed SRP asset final color defaults
This commit is contained in:
@@ -776,6 +776,9 @@ struct MockManagedRenderPipelineAssetRuntimeState {
|
||||
int createStageRecorderCalls = 0;
|
||||
int configureCameraRenderRequestCalls = 0;
|
||||
int configureCameraFramePlanCalls = 0;
|
||||
int getDefaultFinalColorSettingsCalls = 0;
|
||||
bool hasDefaultFinalColorSettings = false;
|
||||
FinalColorSettings defaultFinalColorSettings = {};
|
||||
size_t lastRenderedBaseCameraCount = 0u;
|
||||
size_t lastRenderedRequestCount = 0u;
|
||||
std::shared_ptr<MockStageRecorderState> lastCreatedStageRecorderState;
|
||||
@@ -828,6 +831,17 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
bool TryGetDefaultFinalColorSettings(
|
||||
FinalColorSettings& settings) const override {
|
||||
++m_state->getDefaultFinalColorSettingsCalls;
|
||||
if (!m_state->hasDefaultFinalColorSettings) {
|
||||
return false;
|
||||
}
|
||||
|
||||
settings = m_state->defaultFinalColorSettings;
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
std::shared_ptr<MockManagedRenderPipelineAssetRuntimeState> m_state;
|
||||
};
|
||||
@@ -836,6 +850,8 @@ struct MockManagedRenderPipelineBridgeState {
|
||||
int createAssetRuntimeCalls = 0;
|
||||
Pipelines::ManagedRenderPipelineAssetDescriptor lastDescriptor = {};
|
||||
std::shared_ptr<MockManagedRenderPipelineAssetRuntimeState> lastCreatedRuntimeState;
|
||||
bool hasDefaultFinalColorSettings = false;
|
||||
FinalColorSettings defaultFinalColorSettings = {};
|
||||
std::function<void(
|
||||
CameraRenderRequest&,
|
||||
size_t,
|
||||
@@ -859,6 +875,10 @@ public:
|
||||
m_state->lastDescriptor = descriptor;
|
||||
m_state->lastCreatedRuntimeState =
|
||||
std::make_shared<MockManagedRenderPipelineAssetRuntimeState>();
|
||||
m_state->lastCreatedRuntimeState->hasDefaultFinalColorSettings =
|
||||
m_state->hasDefaultFinalColorSettings;
|
||||
m_state->lastCreatedRuntimeState->defaultFinalColorSettings =
|
||||
m_state->defaultFinalColorSettings;
|
||||
m_state->lastCreatedRuntimeState->configureCameraRenderRequest =
|
||||
m_state->configureCameraRenderRequest;
|
||||
m_state->lastCreatedRuntimeState->configureCameraFramePlan =
|
||||
@@ -4690,6 +4710,48 @@ TEST(ManagedScriptableRenderPipelineAsset_Test, LetsManagedBridgeConfigureCamera
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
}
|
||||
|
||||
TEST(ManagedScriptableRenderPipelineAsset_Test, LetsManagedBridgeProvideDefaultFinalColorSettings) {
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
|
||||
const Pipelines::ManagedRenderPipelineAssetDescriptor descriptor = {
|
||||
"GameScripts",
|
||||
"Gameplay",
|
||||
"ManagedFinalColorRenderPipelineProbeAsset"
|
||||
};
|
||||
auto bridgeState = std::make_shared<MockManagedRenderPipelineBridgeState>();
|
||||
bridgeState->hasDefaultFinalColorSettings = true;
|
||||
bridgeState->defaultFinalColorSettings.outputTransferMode =
|
||||
FinalColorOutputTransferMode::LinearToSRGB;
|
||||
bridgeState->defaultFinalColorSettings.exposureMode =
|
||||
FinalColorExposureMode::Fixed;
|
||||
bridgeState->defaultFinalColorSettings.exposureValue = 1.75f;
|
||||
bridgeState->defaultFinalColorSettings.toneMappingMode =
|
||||
FinalColorToneMappingMode::ACES;
|
||||
bridgeState->defaultFinalColorSettings.finalColorScale =
|
||||
XCEngine::Math::Vector4(0.90f, 1.10f, 1.20f, 1.0f);
|
||||
Pipelines::SetManagedRenderPipelineBridge(
|
||||
std::make_shared<MockManagedRenderPipelineBridge>(bridgeState));
|
||||
|
||||
Pipelines::ManagedScriptableRenderPipelineAsset asset(descriptor);
|
||||
const FinalColorSettings settings = asset.GetDefaultFinalColorSettings();
|
||||
|
||||
EXPECT_EQ(bridgeState->createAssetRuntimeCalls, 1);
|
||||
ASSERT_NE(bridgeState->lastCreatedRuntimeState, nullptr);
|
||||
EXPECT_EQ(
|
||||
bridgeState->lastCreatedRuntimeState->getDefaultFinalColorSettingsCalls,
|
||||
1);
|
||||
EXPECT_EQ(settings.outputTransferMode, FinalColorOutputTransferMode::LinearToSRGB);
|
||||
EXPECT_EQ(settings.exposureMode, FinalColorExposureMode::Fixed);
|
||||
EXPECT_FLOAT_EQ(settings.exposureValue, 1.75f);
|
||||
EXPECT_EQ(settings.toneMappingMode, FinalColorToneMappingMode::ACES);
|
||||
EXPECT_FLOAT_EQ(settings.finalColorScale.x, 0.90f);
|
||||
EXPECT_FLOAT_EQ(settings.finalColorScale.y, 1.10f);
|
||||
EXPECT_FLOAT_EQ(settings.finalColorScale.z, 1.20f);
|
||||
EXPECT_FLOAT_EQ(settings.finalColorScale.w, 1.0f);
|
||||
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
}
|
||||
|
||||
TEST(ManagedScriptableRenderPipelineAsset_Test, ReusesManagedAssetRuntimeAcrossPipelineRequestAndPlanRequests) {
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user