Align renderers to pipeline asset selection
This commit is contained in:
@@ -48,7 +48,12 @@ std::unique_ptr<RenderPipeline> TryCreateRenderPipelineFromAsset(
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return asset->CreatePipeline();
|
||||
std::unique_ptr<RenderPipeline> pipeline =
|
||||
asset->CreatePipeline();
|
||||
if (pipeline != nullptr) {
|
||||
asset->ConfigurePipeline(*pipeline);
|
||||
}
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
std::unique_ptr<RenderPipelineBackend> TryCreatePipelineBackendFromAsset(
|
||||
@@ -57,7 +62,12 @@ std::unique_ptr<RenderPipelineBackend> TryCreatePipelineBackendFromAsset(
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return asset->CreatePipeline();
|
||||
std::unique_ptr<RenderPipeline> pipeline =
|
||||
asset->CreatePipeline();
|
||||
if (pipeline != nullptr) {
|
||||
asset->ConfigurePipeline(*pipeline);
|
||||
}
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
std::unique_ptr<SceneDrawBackend> TryCreateSceneDrawBackendFromAsset(
|
||||
@@ -128,10 +138,24 @@ std::unique_ptr<RenderPipeline> CreateRenderPipelineOrDefault(
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
const std::shared_ptr<const RenderPipelineAsset> defaultAsset =
|
||||
ResolveRenderPipelineAssetOrDefault(nullptr);
|
||||
if (defaultAsset != nullptr &&
|
||||
defaultAsset != resolvedAsset) {
|
||||
if (std::unique_ptr<RenderPipeline> pipeline =
|
||||
TryCreateRenderPipelineFromAsset(defaultAsset)) {
|
||||
if (outResolvedAsset != nullptr) {
|
||||
*outResolvedAsset = defaultAsset;
|
||||
}
|
||||
return pipeline;
|
||||
}
|
||||
}
|
||||
|
||||
const std::shared_ptr<const RenderPipelineAsset> fallbackAsset =
|
||||
CreateFallbackRenderPipelineAsset();
|
||||
if (fallbackAsset != nullptr &&
|
||||
fallbackAsset != resolvedAsset) {
|
||||
fallbackAsset != resolvedAsset &&
|
||||
fallbackAsset != defaultAsset) {
|
||||
if (std::unique_ptr<RenderPipeline> pipeline =
|
||||
TryCreateRenderPipelineFromAsset(fallbackAsset)) {
|
||||
if (outResolvedAsset != nullptr) {
|
||||
@@ -142,9 +166,10 @@ std::unique_ptr<RenderPipeline> CreateRenderPipelineOrDefault(
|
||||
}
|
||||
|
||||
if (outResolvedAsset != nullptr) {
|
||||
*outResolvedAsset =
|
||||
fallbackAsset != nullptr
|
||||
? fallbackAsset
|
||||
*outResolvedAsset = fallbackAsset != nullptr
|
||||
? fallbackAsset
|
||||
: defaultAsset != nullptr
|
||||
? defaultAsset
|
||||
: resolvedAsset;
|
||||
}
|
||||
return Pipelines::Internal::CreateConfiguredBuiltinForwardPipeline();
|
||||
|
||||
Reference in New Issue
Block a user