refactor(srp): move scene setup ownership into managed renderer

This commit is contained in:
2026-04-21 18:05:33 +08:00
parent 233cf25965
commit f75164a4fa
19 changed files with 623 additions and 292 deletions

View File

@@ -88,6 +88,11 @@ public:
}
virtual void ConfigureCameraFramePlan(CameraFramePlan&) const {
}
virtual bool ConfigureRenderSceneSetup(
const CameraFramePlan&,
RenderSceneData&) const {
return false;
}
virtual bool ConfigureDirectionalShadowExecutionState(
const CameraFramePlan&,
const DirectionalShadowSurfaceAllocation&,
@@ -112,14 +117,6 @@ public:
(void)rendererIndex;
return UsesNativeCameraFramePlanBaseline();
}
virtual std::string GetRenderSceneSetupPolicyAssetKey() const {
return {};
}
virtual std::string GetRenderSceneSetupPolicyAssetKey(
int32_t rendererIndex) const {
(void)rendererIndex;
return GetRenderSceneSetupPolicyAssetKey();
}
virtual std::string GetCameraFrameStandalonePassAssetKey(
CameraFrameStage stage) const {
(void)stage;

View File

@@ -25,6 +25,11 @@ struct CameraFramePlan;
struct DirectionalShadowExecutionState;
struct DirectionalShadowSurfaceAllocation;
Resources::ShaderKeywordSet
BuildDefaultRenderPipelineSceneGlobalShaderKeywords(
const RenderSceneData& sceneData);
RenderEnvironmentData BuildDefaultRenderPipelineEnvironmentData(
const CameraFramePlan& plan);
void ApplyDefaultRenderPipelineDirectionalShadowExecutionPolicy(
const CameraFramePlan& plan,
const DirectionalShadowSurfaceAllocation& shadowAllocation,

View File

@@ -266,6 +266,8 @@ private:
MonoObject* CreateManagedScriptableRenderContext(uint64_t nativeHandle);
MonoObject* CreateManagedCameraRenderRequestContext(
uint64_t nativeHandle);
MonoObject* CreateManagedRenderSceneSetupContext(
uint64_t nativeHandle);
MonoObject* CreateManagedDirectionalShadowExecutionContext(
uint64_t nativeHandle);
MonoObject* CreateManagedScriptableRenderPipelinePlanningContext(
@@ -310,6 +312,7 @@ private:
MonoClass* m_scriptableRenderPipelineClass = nullptr;
MonoClass* m_scriptableRenderContextClass = nullptr;
MonoClass* m_cameraRenderRequestContextClass = nullptr;
MonoClass* m_renderSceneSetupContextClass = nullptr;
MonoClass* m_directionalShadowExecutionContextClass = nullptr;
MonoClass* m_scriptableRenderPipelinePlanningContextClass = nullptr;
MonoClass* m_serializeFieldAttributeClass = nullptr;
@@ -317,6 +320,8 @@ private:
MonoMethod* m_scriptableRenderContextConstructor = nullptr;
MonoMethod* m_cameraRenderRequestContextConstructor =
nullptr;
MonoMethod* m_renderSceneSetupContextConstructor =
nullptr;
MonoMethod* m_directionalShadowExecutionContextConstructor =
nullptr;
MonoMethod* m_scriptableRenderPipelinePlanningContextConstructor =