52 lines
1.6 KiB
C++
52 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <XCEngine/Rendering/CameraRenderRequest.h>
|
|
#include <XCEngine/Rendering/CameraRenderer.h>
|
|
#include <XCEngine/Rendering/SceneRenderRequestPlanner.h>
|
|
|
|
#include <vector>
|
|
|
|
namespace XCEngine {
|
|
namespace Components {
|
|
class CameraComponent;
|
|
class Scene;
|
|
} // namespace Components
|
|
|
|
namespace Rendering {
|
|
|
|
class RenderPipelineAsset;
|
|
|
|
class SceneRenderer {
|
|
public:
|
|
SceneRenderer();
|
|
explicit SceneRenderer(std::unique_ptr<RenderPipeline> pipeline);
|
|
explicit SceneRenderer(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
|
|
~SceneRenderer() = default;
|
|
|
|
void SetPipeline(std::unique_ptr<RenderPipeline> pipeline);
|
|
void SetPipelineAsset(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
|
|
RenderPipeline* GetPipeline() const { return m_cameraRenderer.GetPipeline(); }
|
|
const RenderPipelineAsset* GetPipelineAsset() const { return m_cameraRenderer.GetPipelineAsset(); }
|
|
|
|
std::vector<CameraRenderRequest> BuildRenderRequests(
|
|
const Components::Scene& scene,
|
|
Components::CameraComponent* overrideCamera,
|
|
const RenderContext& context,
|
|
const RenderSurface& surface) const;
|
|
|
|
bool Render(const CameraRenderRequest& request);
|
|
bool Render(const std::vector<CameraRenderRequest>& requests);
|
|
bool Render(
|
|
const Components::Scene& scene,
|
|
Components::CameraComponent* overrideCamera,
|
|
const RenderContext& context,
|
|
const RenderSurface& surface);
|
|
|
|
private:
|
|
SceneRenderRequestPlanner m_requestPlanner;
|
|
CameraRenderer m_cameraRenderer;
|
|
};
|
|
|
|
} // namespace Rendering
|
|
} // namespace XCEngine
|