59 lines
1.9 KiB
C++
59 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include <XCEngine/Rendering/Planning/CameraRenderRequest.h>
|
|
#include <XCEngine/Rendering/Planning/FinalColorSettings.h>
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
namespace XCEngine {
|
|
namespace Components {
|
|
class CameraComponent;
|
|
class Scene;
|
|
} // namespace Components
|
|
|
|
namespace Rendering {
|
|
|
|
struct CameraFramePlan;
|
|
struct DirectionalShadowPlanningSettings;
|
|
class RenderPipeline;
|
|
class RenderSurface;
|
|
struct RenderContext;
|
|
|
|
void ApplyDefaultRenderPipelineAssetCameraRenderRequestPolicy(
|
|
CameraRenderRequest& request,
|
|
size_t renderedBaseCameraCount,
|
|
size_t renderedRequestCount,
|
|
const DirectionalShadowPlanningSettings& directionalShadowSettings);
|
|
|
|
void ApplyDefaultRenderPipelineAssetCameraFramePlanPolicy(
|
|
CameraFramePlan& plan,
|
|
const FinalColorSettings& pipelineDefaults = FinalColorSettings{});
|
|
void ApplyDefaultRenderPipelineAssetCameraFramePlanBaselinePolicy(
|
|
CameraFramePlan& plan,
|
|
const FinalColorSettings& pipelineDefaults = FinalColorSettings{});
|
|
|
|
class RenderPipelineAsset {
|
|
public:
|
|
virtual ~RenderPipelineAsset() = default;
|
|
|
|
virtual std::unique_ptr<RenderPipeline> CreatePipeline() const = 0;
|
|
virtual void ConfigurePipeline(RenderPipeline&) const {}
|
|
virtual std::vector<CameraRenderRequest> BuildSceneRenderRequests(
|
|
const Components::Scene& scene,
|
|
Components::CameraComponent* overrideCamera,
|
|
const RenderContext& context,
|
|
const RenderSurface& surface,
|
|
const DirectionalShadowPlanningSettings& directionalShadowSettings) const;
|
|
virtual void ConfigureCameraRenderRequest(
|
|
CameraRenderRequest& request,
|
|
size_t renderedBaseCameraCount,
|
|
size_t renderedRequestCount,
|
|
const DirectionalShadowPlanningSettings& directionalShadowSettings) const;
|
|
virtual FinalColorSettings GetDefaultFinalColorSettings() const { return {}; }
|
|
virtual void ConfigureCameraFramePlan(CameraFramePlan& plan) const;
|
|
};
|
|
|
|
} // namespace Rendering
|
|
} // namespace XCEngine
|