Files
XCEngine/engine/include/XCEngine/Rendering/RenderPipelineAsset.h

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