Add managed render pipeline selection bridge

This commit is contained in:
2026-04-15 01:57:14 +08:00
parent ec6965b0dd
commit aa727202af
18 changed files with 566 additions and 10 deletions

View File

@@ -0,0 +1,54 @@
#pragma once
#include <XCEngine/Rendering/Pipelines/ScriptableRenderPipelineHost.h>
#include <memory>
#include <string>
namespace XCEngine {
namespace Rendering {
namespace Pipelines {
struct ManagedRenderPipelineAssetDescriptor {
std::string assemblyName;
std::string namespaceName;
std::string className;
bool IsValid() const {
return !assemblyName.empty() && !className.empty();
}
std::string GetFullName() const {
return namespaceName.empty()
? className
: namespaceName + "." + className;
}
};
class ManagedScriptableRenderPipelineAsset final : public RenderPipelineAsset {
public:
explicit ManagedScriptableRenderPipelineAsset(
ManagedRenderPipelineAssetDescriptor descriptor);
const ManagedRenderPipelineAssetDescriptor& GetDescriptor() const {
return m_descriptor;
}
std::unique_ptr<RenderPipeline> CreatePipeline() const override;
FinalColorSettings GetDefaultFinalColorSettings() const override;
private:
ManagedRenderPipelineAssetDescriptor m_descriptor;
ScriptableRenderPipelineHostAsset m_fallbackAsset;
};
void SetManagedRenderPipelineAssetDescriptor(
const ManagedRenderPipelineAssetDescriptor& descriptor);
void ClearManagedRenderPipelineAssetDescriptor();
ManagedRenderPipelineAssetDescriptor GetManagedRenderPipelineAssetDescriptor();
std::shared_ptr<const RenderPipelineAsset>
CreateManagedOrDefaultScriptableRenderPipelineAsset();
} // namespace Pipelines
} // namespace Rendering
} // namespace XCEngine