refactor(srp): let universal assets declare native backend keys
This commit is contained in:
@@ -41,6 +41,18 @@ std::shared_ptr<const RenderPipelineAsset> CreateFallbackRenderPipelineAsset() {
|
||||
return std::make_shared<Pipelines::ScriptableRenderPipelineHostAsset>();
|
||||
}
|
||||
|
||||
std::shared_ptr<const RenderPipelineAsset> CreatePipelineRendererAssetByKey(
|
||||
const std::string& key) {
|
||||
if (key == "BuiltinForward") {
|
||||
static const std::shared_ptr<const RenderPipelineAsset>
|
||||
s_builtinForwardPipelineAsset =
|
||||
std::make_shared<Pipelines::BuiltinForwardPipelineAsset>();
|
||||
return s_builtinForwardPipelineAsset;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<const RenderPipelineAsset> ResolveRenderPipelineAssetOrDefault(
|
||||
std::shared_ptr<const RenderPipelineAsset> preferredAsset) {
|
||||
if (preferredAsset != nullptr) {
|
||||
@@ -112,12 +124,10 @@ std::unique_ptr<RenderPipeline> CreateRenderPipelineOrDefault(
|
||||
std::unique_ptr<NativeSceneRenderer> CreateNativeSceneRendererFromAsset(
|
||||
const std::shared_ptr<const RenderPipelineAsset>& preferredAsset,
|
||||
std::shared_ptr<const RenderPipelineAsset>* outResolvedAsset) {
|
||||
const std::shared_ptr<const RenderPipelineAsset> resolvedAsset =
|
||||
ResolveRenderPipelineAssetOrDefault(preferredAsset);
|
||||
if (std::unique_ptr<NativeSceneRenderer> sceneRenderer =
|
||||
TryCreateNativeSceneRendererFromAsset(resolvedAsset)) {
|
||||
TryCreateNativeSceneRendererFromAsset(preferredAsset)) {
|
||||
if (outResolvedAsset != nullptr) {
|
||||
*outResolvedAsset = resolvedAsset;
|
||||
*outResolvedAsset = preferredAsset;
|
||||
}
|
||||
return sceneRenderer;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <memory>
|
||||
|
||||
namespace XCEngine {
|
||||
@@ -13,6 +14,8 @@ namespace Internal {
|
||||
|
||||
std::shared_ptr<const RenderPipelineAsset> CreateConfiguredRenderPipelineAsset();
|
||||
std::shared_ptr<const RenderPipelineAsset> CreateFallbackRenderPipelineAsset();
|
||||
std::shared_ptr<const RenderPipelineAsset> CreatePipelineRendererAssetByKey(
|
||||
const std::string& key);
|
||||
|
||||
std::shared_ptr<const RenderPipelineAsset> ResolveRenderPipelineAssetOrDefault(
|
||||
std::shared_ptr<const RenderPipelineAsset> preferredAsset);
|
||||
|
||||
Reference in New Issue
Block a user