refactor(rendering): remove unused pipeline factory registries
This commit is contained in:
@@ -11,10 +11,6 @@
|
||||
#include "Rendering/Passes/BuiltinObjectIdPass.h"
|
||||
#include "Rendering/Passes/BuiltinShadowCasterPass.h"
|
||||
|
||||
#include <mutex>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
namespace Internal {
|
||||
@@ -41,155 +37,6 @@ std::unique_ptr<RenderPass> CreateBuiltinShadowCasterStandalonePass() {
|
||||
return std::make_unique<Passes::BuiltinShadowCasterPass>();
|
||||
}
|
||||
|
||||
using PipelineBackendAssetRegistry =
|
||||
std::unordered_map<std::string, PipelineBackendAssetFactory>;
|
||||
using CameraFrameStandalonePassRegistry =
|
||||
std::unordered_map<std::string, CameraFrameStandalonePassFactory>;
|
||||
using CameraFramePlanPolicyRegistry =
|
||||
std::unordered_map<std::string, CameraFramePlanPolicy>;
|
||||
using DirectionalShadowExecutionPolicyRegistry =
|
||||
std::unordered_map<std::string, DirectionalShadowExecutionPolicy>;
|
||||
|
||||
PipelineBackendAssetRegistry& GetPipelineBackendAssetRegistry() {
|
||||
static PipelineBackendAssetRegistry registry = {};
|
||||
return registry;
|
||||
}
|
||||
|
||||
CameraFrameStandalonePassRegistry& GetCameraFrameStandalonePassRegistry() {
|
||||
static CameraFrameStandalonePassRegistry registry = {};
|
||||
return registry;
|
||||
}
|
||||
|
||||
CameraFramePlanPolicyRegistry& GetCameraFramePlanPolicyRegistry() {
|
||||
static CameraFramePlanPolicyRegistry registry = {};
|
||||
return registry;
|
||||
}
|
||||
|
||||
DirectionalShadowExecutionPolicyRegistry&
|
||||
GetDirectionalShadowExecutionPolicyRegistry() {
|
||||
static DirectionalShadowExecutionPolicyRegistry registry = {};
|
||||
return registry;
|
||||
}
|
||||
|
||||
std::unordered_set<std::string>& GetBuiltinPipelineBackendAssetKeys() {
|
||||
static std::unordered_set<std::string> builtinKeys = {};
|
||||
return builtinKeys;
|
||||
}
|
||||
|
||||
std::unordered_set<std::string>& GetBuiltinCameraFrameStandalonePassKeys() {
|
||||
static std::unordered_set<std::string> builtinKeys = {};
|
||||
return builtinKeys;
|
||||
}
|
||||
|
||||
std::unordered_set<std::string>& GetBuiltinCameraFramePlanPolicyKeys() {
|
||||
static std::unordered_set<std::string> builtinKeys = {};
|
||||
return builtinKeys;
|
||||
}
|
||||
|
||||
std::unordered_set<std::string>&
|
||||
GetBuiltinDirectionalShadowExecutionPolicyKeys() {
|
||||
static std::unordered_set<std::string> builtinKeys = {};
|
||||
return builtinKeys;
|
||||
}
|
||||
|
||||
std::mutex& GetPipelineBackendAssetRegistryMutex() {
|
||||
static std::mutex mutex;
|
||||
return mutex;
|
||||
}
|
||||
|
||||
std::mutex& GetCameraFrameStandalonePassRegistryMutex() {
|
||||
static std::mutex mutex;
|
||||
return mutex;
|
||||
}
|
||||
|
||||
std::mutex& GetCameraFramePlanPolicyRegistryMutex() {
|
||||
static std::mutex mutex;
|
||||
return mutex;
|
||||
}
|
||||
|
||||
std::mutex& GetDirectionalShadowExecutionPolicyRegistryMutex() {
|
||||
static std::mutex mutex;
|
||||
return mutex;
|
||||
}
|
||||
|
||||
void EnsureBuiltinPipelineBackendAssetRegistryInitialized() {
|
||||
static const bool initialized = []() {
|
||||
PipelineBackendAssetRegistry& registry =
|
||||
GetPipelineBackendAssetRegistry();
|
||||
registry.emplace(
|
||||
"BuiltinForward",
|
||||
&CreateBuiltinForwardPipelineRendererAsset);
|
||||
GetBuiltinPipelineBackendAssetKeys().insert("BuiltinForward");
|
||||
return true;
|
||||
}();
|
||||
(void)initialized;
|
||||
}
|
||||
|
||||
void EnsureBuiltinCameraFrameStandalonePassRegistryInitialized() {
|
||||
static const bool initialized = []() {
|
||||
CameraFrameStandalonePassRegistry& registry =
|
||||
GetCameraFrameStandalonePassRegistry();
|
||||
registry.emplace(
|
||||
"BuiltinDepthOnly",
|
||||
&CreateBuiltinDepthOnlyStandalonePass);
|
||||
registry.emplace(
|
||||
"BuiltinObjectId",
|
||||
&CreateBuiltinObjectIdStandalonePass);
|
||||
registry.emplace(
|
||||
"BuiltinShadowCaster",
|
||||
&CreateBuiltinShadowCasterStandalonePass);
|
||||
std::unordered_set<std::string>& builtinKeys =
|
||||
GetBuiltinCameraFrameStandalonePassKeys();
|
||||
builtinKeys.insert("BuiltinDepthOnly");
|
||||
builtinKeys.insert("BuiltinObjectId");
|
||||
builtinKeys.insert("BuiltinShadowCaster");
|
||||
return true;
|
||||
}();
|
||||
(void)initialized;
|
||||
}
|
||||
|
||||
void EnsureBuiltinCameraFramePlanPolicyRegistryInitialized() {
|
||||
static const bool initialized = []() {
|
||||
CameraFramePlanPolicyRegistry& registry =
|
||||
GetCameraFramePlanPolicyRegistry();
|
||||
registry.emplace(
|
||||
"BuiltinDefaultCameraFramePlan",
|
||||
[](CameraFramePlan& plan,
|
||||
const FinalColorSettings& defaultFinalColorSettings) {
|
||||
ApplyDefaultRenderPipelineAssetCameraFramePlanPolicy(
|
||||
plan,
|
||||
defaultFinalColorSettings);
|
||||
});
|
||||
GetBuiltinCameraFramePlanPolicyKeys().insert(
|
||||
"BuiltinDefaultCameraFramePlan");
|
||||
return true;
|
||||
}();
|
||||
(void)initialized;
|
||||
}
|
||||
|
||||
void EnsureBuiltinDirectionalShadowExecutionPolicyRegistryInitialized() {
|
||||
static const bool initialized = []() {
|
||||
DirectionalShadowExecutionPolicyRegistry& registry =
|
||||
GetDirectionalShadowExecutionPolicyRegistry();
|
||||
registry.emplace(
|
||||
"BuiltinDirectionalShadow",
|
||||
[](const CameraFramePlan& plan,
|
||||
const DirectionalShadowSurfaceAllocation& shadowAllocation,
|
||||
DirectionalShadowExecutionState& shadowState) {
|
||||
ApplyDefaultRenderPipelineDirectionalShadowExecutionPolicy(
|
||||
plan,
|
||||
shadowAllocation,
|
||||
shadowState);
|
||||
return shadowState.shadowCasterRequest.IsValid() &&
|
||||
shadowState.shadowData.IsValid();
|
||||
});
|
||||
GetBuiltinDirectionalShadowExecutionPolicyKeys().insert(
|
||||
"BuiltinDirectionalShadow");
|
||||
return true;
|
||||
}();
|
||||
(void)initialized;
|
||||
}
|
||||
|
||||
std::unique_ptr<SceneDrawBackend> TryCreateSceneDrawBackendFromAsset(
|
||||
const std::shared_ptr<const RenderPipelineAsset>& asset) {
|
||||
if (asset == nullptr) {
|
||||
@@ -221,266 +68,12 @@ std::shared_ptr<const RenderPipelineAsset> CreateFallbackRenderPipelineAsset() {
|
||||
return std::make_shared<Pipelines::ScriptableRenderPipelineHostAsset>();
|
||||
}
|
||||
|
||||
bool RegisterPipelineBackendAssetFactory(
|
||||
const std::string& key,
|
||||
PipelineBackendAssetFactory factory) {
|
||||
if (key.empty() || !factory) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinPipelineBackendAssetRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetPipelineBackendAssetRegistryMutex());
|
||||
PipelineBackendAssetRegistry& registry =
|
||||
GetPipelineBackendAssetRegistry();
|
||||
if (registry.find(key) != registry.end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
registry.emplace(key, std::move(factory));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool UnregisterPipelineBackendAssetFactory(const std::string& key) {
|
||||
if (key.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinPipelineBackendAssetRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetPipelineBackendAssetRegistryMutex());
|
||||
if (GetBuiltinPipelineBackendAssetKeys().find(key) !=
|
||||
GetBuiltinPipelineBackendAssetKeys().end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
PipelineBackendAssetRegistry& registry =
|
||||
GetPipelineBackendAssetRegistry();
|
||||
return registry.erase(key) != 0u;
|
||||
}
|
||||
|
||||
std::shared_ptr<const RenderPipelineAsset> CreateDefaultPipelineBackendAsset() {
|
||||
static const std::shared_ptr<const RenderPipelineAsset> s_defaultAsset =
|
||||
CreateBuiltinForwardPipelineRendererAsset();
|
||||
return s_defaultAsset;
|
||||
}
|
||||
|
||||
std::shared_ptr<const RenderPipelineAsset> CreatePipelineBackendAssetByKey(
|
||||
const std::string& key) {
|
||||
if (key.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
EnsureBuiltinPipelineBackendAssetRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetPipelineBackendAssetRegistryMutex());
|
||||
const PipelineBackendAssetRegistry& registry =
|
||||
GetPipelineBackendAssetRegistry();
|
||||
const auto it = registry.find(key);
|
||||
if (it == registry.end() || !it->second) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return it->second();
|
||||
}
|
||||
|
||||
bool RegisterCameraFrameStandalonePassFactory(
|
||||
const std::string& key,
|
||||
CameraFrameStandalonePassFactory factory) {
|
||||
if (key.empty() || !factory) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinCameraFrameStandalonePassRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetCameraFrameStandalonePassRegistryMutex());
|
||||
CameraFrameStandalonePassRegistry& registry =
|
||||
GetCameraFrameStandalonePassRegistry();
|
||||
if (registry.find(key) != registry.end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
registry.emplace(key, std::move(factory));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool UnregisterCameraFrameStandalonePassFactory(
|
||||
const std::string& key) {
|
||||
if (key.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinCameraFrameStandalonePassRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetCameraFrameStandalonePassRegistryMutex());
|
||||
if (GetBuiltinCameraFrameStandalonePassKeys().find(key) !=
|
||||
GetBuiltinCameraFrameStandalonePassKeys().end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
CameraFrameStandalonePassRegistry& registry =
|
||||
GetCameraFrameStandalonePassRegistry();
|
||||
return registry.erase(key) != 0u;
|
||||
}
|
||||
|
||||
std::unique_ptr<RenderPass> CreateCameraFrameStandalonePassByKey(
|
||||
const std::string& key) {
|
||||
if (key.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
EnsureBuiltinCameraFrameStandalonePassRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetCameraFrameStandalonePassRegistryMutex());
|
||||
const CameraFrameStandalonePassRegistry& registry =
|
||||
GetCameraFrameStandalonePassRegistry();
|
||||
const auto it = registry.find(key);
|
||||
if (it == registry.end() || !it->second) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return it->second();
|
||||
}
|
||||
|
||||
bool RegisterCameraFramePlanPolicy(
|
||||
const std::string& key,
|
||||
CameraFramePlanPolicy policy) {
|
||||
if (key.empty() || !policy) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinCameraFramePlanPolicyRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetCameraFramePlanPolicyRegistryMutex());
|
||||
CameraFramePlanPolicyRegistry& registry =
|
||||
GetCameraFramePlanPolicyRegistry();
|
||||
if (registry.find(key) != registry.end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
registry.emplace(key, std::move(policy));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool UnregisterCameraFramePlanPolicy(
|
||||
const std::string& key) {
|
||||
if (key.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinCameraFramePlanPolicyRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetCameraFramePlanPolicyRegistryMutex());
|
||||
if (GetBuiltinCameraFramePlanPolicyKeys().find(key) !=
|
||||
GetBuiltinCameraFramePlanPolicyKeys().end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
CameraFramePlanPolicyRegistry& registry =
|
||||
GetCameraFramePlanPolicyRegistry();
|
||||
return registry.erase(key) != 0u;
|
||||
}
|
||||
|
||||
bool ApplyCameraFramePlanPolicyByKey(
|
||||
const std::string& key,
|
||||
CameraFramePlan& plan,
|
||||
const FinalColorSettings& defaultFinalColorSettings) {
|
||||
if (key.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinCameraFramePlanPolicyRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetCameraFramePlanPolicyRegistryMutex());
|
||||
const CameraFramePlanPolicyRegistry& registry =
|
||||
GetCameraFramePlanPolicyRegistry();
|
||||
const auto it = registry.find(key);
|
||||
if (it == registry.end() || !it->second) {
|
||||
return false;
|
||||
}
|
||||
|
||||
it->second(
|
||||
plan,
|
||||
defaultFinalColorSettings);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RegisterDirectionalShadowExecutionPolicy(
|
||||
const std::string& key,
|
||||
DirectionalShadowExecutionPolicy policy) {
|
||||
if (key.empty() || !policy) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinDirectionalShadowExecutionPolicyRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetDirectionalShadowExecutionPolicyRegistryMutex());
|
||||
DirectionalShadowExecutionPolicyRegistry& registry =
|
||||
GetDirectionalShadowExecutionPolicyRegistry();
|
||||
if (registry.find(key) != registry.end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
registry.emplace(key, std::move(policy));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool UnregisterDirectionalShadowExecutionPolicy(
|
||||
const std::string& key) {
|
||||
if (key.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinDirectionalShadowExecutionPolicyRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetDirectionalShadowExecutionPolicyRegistryMutex());
|
||||
if (GetBuiltinDirectionalShadowExecutionPolicyKeys().find(key) !=
|
||||
GetBuiltinDirectionalShadowExecutionPolicyKeys().end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
DirectionalShadowExecutionPolicyRegistry& registry =
|
||||
GetDirectionalShadowExecutionPolicyRegistry();
|
||||
return registry.erase(key) != 0u;
|
||||
}
|
||||
|
||||
bool ConfigureDirectionalShadowExecutionStateByKey(
|
||||
const std::string& key,
|
||||
const CameraFramePlan& plan,
|
||||
const DirectionalShadowSurfaceAllocation& shadowAllocation,
|
||||
DirectionalShadowExecutionState& shadowState) {
|
||||
if (key.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EnsureBuiltinDirectionalShadowExecutionPolicyRegistryInitialized();
|
||||
|
||||
std::lock_guard<std::mutex> lock(
|
||||
GetDirectionalShadowExecutionPolicyRegistryMutex());
|
||||
const DirectionalShadowExecutionPolicyRegistry& registry =
|
||||
GetDirectionalShadowExecutionPolicyRegistry();
|
||||
const auto it = registry.find(key);
|
||||
if (it == registry.end() || !it->second) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return it->second(
|
||||
plan,
|
||||
shadowAllocation,
|
||||
shadowState);
|
||||
}
|
||||
|
||||
std::shared_ptr<const RenderPipelineAsset> ResolveRenderPipelineAssetOrDefault(
|
||||
std::shared_ptr<const RenderPipelineAsset> preferredAsset) {
|
||||
if (preferredAsset != nullptr) {
|
||||
|
||||
Reference in New Issue
Block a user