refactor(rendering): retain managed pipeline asset runtime per native asset

This commit is contained in:
2026-04-17 23:54:04 +08:00
parent 6838b00d97
commit fa9a5ffb00
6 changed files with 395 additions and 214 deletions

View File

@@ -42,23 +42,36 @@ public:
void ConfigureCameraFramePlan(CameraFramePlan& plan) const override;
private:
std::shared_ptr<const class ManagedRenderPipelineAssetRuntime>
ResolveManagedAssetRuntime() const;
ManagedRenderPipelineAssetDescriptor m_descriptor;
ScriptableRenderPipelineHostAsset m_fallbackAsset;
mutable std::shared_ptr<const class ManagedRenderPipelineAssetRuntime>
m_managedAssetRuntime = nullptr;
};
class ManagedRenderPipelineAssetRuntime {
public:
virtual ~ManagedRenderPipelineAssetRuntime() = default;
virtual std::unique_ptr<RenderPipelineStageRecorder> CreateStageRecorder() const {
return nullptr;
}
virtual void ConfigureCameraFramePlan(CameraFramePlan&) const {
}
};
class ManagedRenderPipelineBridge {
public:
virtual ~ManagedRenderPipelineBridge() = default;
virtual std::unique_ptr<RenderPipelineStageRecorder> CreateStageRecorder(
virtual std::shared_ptr<const ManagedRenderPipelineAssetRuntime>
CreateAssetRuntime(
const ManagedRenderPipelineAssetDescriptor&) const {
return nullptr;
}
virtual void ConfigureCameraFramePlan(
const ManagedRenderPipelineAssetDescriptor&,
CameraFramePlan&) const {
}
};
void SetManagedRenderPipelineBridge(

View File

@@ -22,6 +22,7 @@ namespace XCEngine {
namespace Scripting {
class ScriptComponent;
class MonoManagedRenderPipelineAssetRuntime;
class MonoManagedRenderPipelineBridge;
class MonoManagedRenderPipelineStageRecorder;
@@ -241,6 +242,7 @@ private:
void SetError(const std::string& error);
friend class MonoManagedRenderPipelineBridge;
friend class MonoManagedRenderPipelineAssetRuntime;
friend class MonoManagedRenderPipelineStageRecorder;
Settings m_settings;