refactor(srp): move directional shadow planning policy into managed urp

This commit is contained in:
2026-04-21 03:01:56 +08:00
parent 1f01f45bee
commit db08861183
8 changed files with 334 additions and 12 deletions

View File

@@ -1,6 +1,8 @@
#include "Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h"
#include "Debug/Logger.h"
#include "Rendering/GraphicsSettingsState.h"
#include "Rendering/Internal/RenderPipelineFactory.h"
#include <utility>
@@ -8,6 +10,39 @@ namespace XCEngine {
namespace Rendering {
namespace Pipelines {
namespace {
void ApplyManagedDirectionalShadowPlanningPolicyOrDefault(
const std::string& assetKey,
CameraRenderRequest& request,
size_t renderedBaseCameraCount,
size_t renderedRequestCount,
const DirectionalShadowPlanningSettings& directionalShadowSettings) {
if (assetKey.empty()) {
ApplyDefaultRenderPipelineAssetCameraRenderRequestPolicy(
request,
renderedBaseCameraCount,
renderedRequestCount,
directionalShadowSettings);
return;
}
if (!Rendering::Internal::ApplyDirectionalShadowPlanningPolicyByKey(
assetKey,
request,
renderedBaseCameraCount,
renderedRequestCount,
directionalShadowSettings)) {
Debug::Logger::Get().Error(
Debug::LogCategory::Rendering,
Containers::String(
"ManagedScriptableRenderPipelineAsset failed to resolve directional shadow planning policy asset key: ") +
assetKey.c_str());
}
}
} // namespace
ManagedScriptableRenderPipelineAsset::ManagedScriptableRenderPipelineAsset(
ManagedRenderPipelineAssetDescriptor descriptor)
: m_descriptor(std::move(descriptor)) {
@@ -89,21 +124,28 @@ void ManagedScriptableRenderPipelineAsset::ConfigureCameraRenderRequest(
size_t renderedBaseCameraCount,
size_t renderedRequestCount,
const DirectionalShadowPlanningSettings& directionalShadowSettings) const {
RenderPipelineAsset::ConfigureCameraRenderRequest(
request,
renderedBaseCameraCount,
renderedRequestCount,
directionalShadowSettings);
if (const std::shared_ptr<const ManagedRenderPipelineAssetRuntime> runtime =
ResolveManagedAssetRuntime();
runtime != nullptr) {
ApplyManagedDirectionalShadowPlanningPolicyOrDefault(
runtime->GetDirectionalShadowPlanningPolicyAssetKey(),
request,
renderedBaseCameraCount,
renderedRequestCount,
directionalShadowSettings);
runtime->ConfigureCameraRenderRequest(
request,
renderedBaseCameraCount,
renderedRequestCount,
directionalShadowSettings);
return;
}
RenderPipelineAsset::ConfigureCameraRenderRequest(
request,
renderedBaseCameraCount,
renderedRequestCount,
directionalShadowSettings);
}
void ManagedScriptableRenderPipelineAsset::ConfigureCameraFramePlan(