Add managed render pipeline selection bridge
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
#include "Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h"
|
||||
|
||||
#include <utility>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
namespace Pipelines {
|
||||
|
||||
namespace {
|
||||
|
||||
ManagedRenderPipelineAssetDescriptor& GetManagedRenderPipelineAssetDescriptorStorage() {
|
||||
static ManagedRenderPipelineAssetDescriptor s_descriptor = {};
|
||||
return s_descriptor;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
ManagedScriptableRenderPipelineAsset::ManagedScriptableRenderPipelineAsset(
|
||||
ManagedRenderPipelineAssetDescriptor descriptor)
|
||||
: m_descriptor(std::move(descriptor)) {
|
||||
}
|
||||
|
||||
std::unique_ptr<RenderPipeline> ManagedScriptableRenderPipelineAsset::CreatePipeline() const {
|
||||
return m_fallbackAsset.CreatePipeline();
|
||||
}
|
||||
|
||||
FinalColorSettings ManagedScriptableRenderPipelineAsset::GetDefaultFinalColorSettings() const {
|
||||
return m_fallbackAsset.GetDefaultFinalColorSettings();
|
||||
}
|
||||
|
||||
void SetManagedRenderPipelineAssetDescriptor(
|
||||
const ManagedRenderPipelineAssetDescriptor& descriptor) {
|
||||
GetManagedRenderPipelineAssetDescriptorStorage() = descriptor;
|
||||
}
|
||||
|
||||
void ClearManagedRenderPipelineAssetDescriptor() {
|
||||
GetManagedRenderPipelineAssetDescriptorStorage() = {};
|
||||
}
|
||||
|
||||
ManagedRenderPipelineAssetDescriptor GetManagedRenderPipelineAssetDescriptor() {
|
||||
return GetManagedRenderPipelineAssetDescriptorStorage();
|
||||
}
|
||||
|
||||
std::shared_ptr<const RenderPipelineAsset>
|
||||
CreateManagedOrDefaultScriptableRenderPipelineAsset() {
|
||||
const ManagedRenderPipelineAssetDescriptor descriptor =
|
||||
GetManagedRenderPipelineAssetDescriptor();
|
||||
if (descriptor.IsValid()) {
|
||||
return std::make_shared<ManagedScriptableRenderPipelineAsset>(descriptor);
|
||||
}
|
||||
|
||||
return std::make_shared<ScriptableRenderPipelineHostAsset>();
|
||||
}
|
||||
|
||||
} // namespace Pipelines
|
||||
} // namespace Rendering
|
||||
} // namespace XCEngine
|
||||
Reference in New Issue
Block a user