117 lines
4.1 KiB
C++
117 lines
4.1 KiB
C++
#pragma once
|
|
|
|
#include <functional>
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
namespace XCEngine {
|
|
namespace Rendering {
|
|
|
|
class NativeSceneRenderer;
|
|
class RenderPipeline;
|
|
class RenderPipelineAsset;
|
|
class RenderPass;
|
|
struct CameraRenderRequest;
|
|
struct CameraFramePlan;
|
|
struct FinalColorSettings;
|
|
struct RenderSceneData;
|
|
struct DirectionalShadowPlanningSettings;
|
|
struct DirectionalShadowExecutionState;
|
|
struct DirectionalShadowSurfaceAllocation;
|
|
|
|
namespace Internal {
|
|
|
|
using PipelineRendererAssetFactory =
|
|
std::function<std::shared_ptr<const RenderPipelineAsset>()>;
|
|
using CameraFrameStandalonePassFactory =
|
|
std::function<std::unique_ptr<RenderPass>()>;
|
|
using DirectionalShadowPlanningPolicy =
|
|
std::function<void(
|
|
CameraRenderRequest&,
|
|
size_t,
|
|
size_t,
|
|
const DirectionalShadowPlanningSettings&)>;
|
|
using CameraFramePlanPolicy =
|
|
std::function<void(
|
|
CameraFramePlan&,
|
|
const FinalColorSettings&)>;
|
|
using RenderSceneSetupPolicy =
|
|
std::function<void(
|
|
const CameraFramePlan&,
|
|
RenderSceneData&)>;
|
|
using DirectionalShadowExecutionPolicy =
|
|
std::function<bool(
|
|
const CameraFramePlan&,
|
|
const DirectionalShadowSurfaceAllocation&,
|
|
DirectionalShadowExecutionState&)>;
|
|
|
|
std::shared_ptr<const RenderPipelineAsset> CreateConfiguredRenderPipelineAsset();
|
|
std::shared_ptr<const RenderPipelineAsset> CreateFallbackRenderPipelineAsset();
|
|
bool RegisterPipelineRendererAssetFactory(
|
|
const std::string& key,
|
|
PipelineRendererAssetFactory factory);
|
|
bool UnregisterPipelineRendererAssetFactory(const std::string& key);
|
|
std::shared_ptr<const RenderPipelineAsset> CreatePipelineRendererAssetByKey(
|
|
const std::string& key);
|
|
bool RegisterCameraFrameStandalonePassFactory(
|
|
const std::string& key,
|
|
CameraFrameStandalonePassFactory factory);
|
|
bool UnregisterCameraFrameStandalonePassFactory(
|
|
const std::string& key);
|
|
std::unique_ptr<RenderPass> CreateCameraFrameStandalonePassByKey(
|
|
const std::string& key);
|
|
bool RegisterDirectionalShadowPlanningPolicy(
|
|
const std::string& key,
|
|
DirectionalShadowPlanningPolicy policy);
|
|
bool UnregisterDirectionalShadowPlanningPolicy(
|
|
const std::string& key);
|
|
bool ApplyDirectionalShadowPlanningPolicyByKey(
|
|
const std::string& key,
|
|
CameraRenderRequest& request,
|
|
size_t renderedBaseCameraCount,
|
|
size_t renderedRequestCount,
|
|
const DirectionalShadowPlanningSettings& settings);
|
|
bool RegisterCameraFramePlanPolicy(
|
|
const std::string& key,
|
|
CameraFramePlanPolicy policy);
|
|
bool UnregisterCameraFramePlanPolicy(
|
|
const std::string& key);
|
|
bool ApplyCameraFramePlanPolicyByKey(
|
|
const std::string& key,
|
|
CameraFramePlan& plan,
|
|
const FinalColorSettings& defaultFinalColorSettings);
|
|
bool RegisterRenderSceneSetupPolicy(
|
|
const std::string& key,
|
|
RenderSceneSetupPolicy policy);
|
|
bool UnregisterRenderSceneSetupPolicy(
|
|
const std::string& key);
|
|
bool ApplyRenderSceneSetupPolicyByKey(
|
|
const std::string& key,
|
|
const CameraFramePlan& plan,
|
|
RenderSceneData& sceneData);
|
|
bool RegisterDirectionalShadowExecutionPolicy(
|
|
const std::string& key,
|
|
DirectionalShadowExecutionPolicy policy);
|
|
bool UnregisterDirectionalShadowExecutionPolicy(
|
|
const std::string& key);
|
|
bool ConfigureDirectionalShadowExecutionStateByKey(
|
|
const std::string& key,
|
|
const CameraFramePlan& plan,
|
|
const DirectionalShadowSurfaceAllocation& shadowAllocation,
|
|
DirectionalShadowExecutionState& shadowState);
|
|
|
|
std::shared_ptr<const RenderPipelineAsset> ResolveRenderPipelineAssetOrDefault(
|
|
std::shared_ptr<const RenderPipelineAsset> preferredAsset);
|
|
|
|
std::unique_ptr<RenderPipeline> CreateRenderPipelineOrDefault(
|
|
const std::shared_ptr<const RenderPipelineAsset>& preferredAsset,
|
|
std::shared_ptr<const RenderPipelineAsset>* outResolvedAsset = nullptr);
|
|
std::unique_ptr<NativeSceneRenderer> CreateNativeSceneRendererFromAsset(
|
|
const std::shared_ptr<const RenderPipelineAsset>& preferredAsset,
|
|
std::shared_ptr<const RenderPipelineAsset>* outResolvedAsset = nullptr);
|
|
std::unique_ptr<NativeSceneRenderer> CreateDefaultNativeSceneRenderer();
|
|
|
|
} // namespace Internal
|
|
} // namespace Rendering
|
|
} // namespace XCEngine
|