2026-03-26 20:43:17 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
2026-04-28 02:42:42 +08:00
|
|
|
#include <XCEngine/Rendering/Execution/CameraStackFramePlan.h>
|
2026-04-15 01:26:25 +08:00
|
|
|
#include <XCEngine/Rendering/Execution/RenderPipelineHost.h>
|
2026-04-05 21:33:58 +08:00
|
|
|
#include <XCEngine/Rendering/Planning/SceneRenderRequestPlanner.h>
|
2026-03-26 20:43:17 +08:00
|
|
|
|
2026-03-27 16:57:04 +08:00
|
|
|
#include <vector>
|
|
|
|
|
|
2026-03-26 20:43:17 +08:00
|
|
|
namespace XCEngine {
|
|
|
|
|
namespace Components {
|
|
|
|
|
class CameraComponent;
|
|
|
|
|
class Scene;
|
|
|
|
|
} // namespace Components
|
|
|
|
|
|
|
|
|
|
namespace Rendering {
|
|
|
|
|
|
|
|
|
|
class SceneRenderer {
|
|
|
|
|
public:
|
|
|
|
|
SceneRenderer();
|
2026-04-01 00:56:48 +08:00
|
|
|
explicit SceneRenderer(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
|
2026-04-06 14:14:11 +08:00
|
|
|
~SceneRenderer();
|
2026-03-26 20:43:17 +08:00
|
|
|
|
2026-04-01 00:56:48 +08:00
|
|
|
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(); }
|
2026-03-26 20:43:17 +08:00
|
|
|
|
2026-04-13 22:16:04 +08:00
|
|
|
std::vector<CameraFramePlan> BuildFramePlans(
|
|
|
|
|
const Components::Scene& scene,
|
|
|
|
|
Components::CameraComponent* overrideCamera,
|
|
|
|
|
const RenderContext& context,
|
|
|
|
|
const RenderSurface& surface);
|
2026-04-28 02:42:42 +08:00
|
|
|
std::vector<CameraStackFramePlan> BuildStackFramePlans(
|
|
|
|
|
const Components::Scene& scene,
|
|
|
|
|
Components::CameraComponent* overrideCamera,
|
|
|
|
|
const RenderContext& context,
|
|
|
|
|
const RenderSurface& surface);
|
2026-03-27 16:57:04 +08:00
|
|
|
|
2026-04-13 22:16:04 +08:00
|
|
|
bool Render(const CameraFramePlan& plan);
|
|
|
|
|
bool Render(const std::vector<CameraFramePlan>& plans);
|
2026-04-28 02:42:42 +08:00
|
|
|
bool Render(const CameraStackFramePlan& stackPlan);
|
|
|
|
|
bool Render(const std::vector<CameraStackFramePlan>& stackPlans);
|
2026-03-26 20:43:17 +08:00
|
|
|
bool Render(
|
|
|
|
|
const Components::Scene& scene,
|
|
|
|
|
Components::CameraComponent* overrideCamera,
|
|
|
|
|
const RenderContext& context,
|
|
|
|
|
const RenderSurface& surface);
|
|
|
|
|
|
2026-04-02 01:06:40 +08:00
|
|
|
SceneRenderRequestPlanner m_requestPlanner;
|
2026-04-15 01:26:25 +08:00
|
|
|
RenderPipelineHost m_pipelineHost;
|
2026-03-26 20:43:17 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace Rendering
|
|
|
|
|
} // namespace XCEngine
|