Files
XCEngine/engine/include/XCEngine/Rendering/Execution/SceneRenderer.h

54 lines
1.8 KiB
C
Raw Normal View History

#pragma once
#include <XCEngine/Rendering/Execution/CameraStackFramePlan.h>
2026-04-15 01:26:25 +08:00
#include <XCEngine/Rendering/Execution/RenderPipelineHost.h>
#include <XCEngine/Rendering/Planning/SceneRenderRequestPlanner.h>
#include <vector>
namespace XCEngine {
namespace Components {
class CameraComponent;
class Scene;
} // namespace Components
namespace Rendering {
class SceneRenderer {
public:
SceneRenderer();
explicit SceneRenderer(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
~SceneRenderer();
void SetPipelineAsset(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
2026-04-15 01:26:25 +08:00
RenderPipeline* GetPipeline() const { return m_pipelineHost.GetPipeline(); }
const RenderPipelineAsset* GetPipelineAsset() const { return m_pipelineHost.GetPipelineAsset(); }
std::vector<CameraFramePlan> BuildFramePlans(
const Components::Scene& scene,
Components::CameraComponent* overrideCamera,
const RenderContext& context,
const RenderSurface& surface);
std::vector<CameraStackFramePlan> BuildStackFramePlans(
const Components::Scene& scene,
Components::CameraComponent* overrideCamera,
const RenderContext& context,
const RenderSurface& surface);
bool Render(const CameraFramePlan& plan);
bool Render(const std::vector<CameraFramePlan>& plans);
bool Render(const CameraStackFramePlan& stackPlan);
bool Render(const std::vector<CameraStackFramePlan>& stackPlans);
bool Render(
const Components::Scene& scene,
Components::CameraComponent* overrideCamera,
const RenderContext& context,
const RenderSurface& surface);
SceneRenderRequestPlanner m_requestPlanner;
2026-04-15 01:26:25 +08:00
RenderPipelineHost m_pipelineHost;
};
} // namespace Rendering
} // namespace XCEngine