52 lines
1.7 KiB
C++
52 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <XCEngine/Rendering/CameraRenderRequest.h>
|
|
#include <XCEngine/Rendering/ObjectIdPass.h>
|
|
#include <XCEngine/Rendering/Passes/BuiltinPostProcessPassSequenceBuilder.h>
|
|
#include <XCEngine/Rendering/RenderPipeline.h>
|
|
|
|
#include <memory>
|
|
|
|
namespace XCEngine {
|
|
namespace Components {
|
|
class CameraComponent;
|
|
class Scene;
|
|
} // namespace Components
|
|
|
|
namespace Rendering {
|
|
|
|
class RenderSurface;
|
|
class RenderPipelineAsset;
|
|
|
|
class CameraRenderer {
|
|
public:
|
|
CameraRenderer();
|
|
explicit CameraRenderer(std::unique_ptr<RenderPipeline> pipeline);
|
|
explicit CameraRenderer(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
|
|
CameraRenderer(
|
|
std::unique_ptr<RenderPipeline> pipeline,
|
|
std::unique_ptr<ObjectIdPass> objectIdPass);
|
|
~CameraRenderer();
|
|
|
|
void SetPipeline(std::unique_ptr<RenderPipeline> pipeline);
|
|
void SetPipelineAsset(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
|
|
void SetObjectIdPass(std::unique_ptr<ObjectIdPass> objectIdPass);
|
|
RenderPipeline* GetPipeline() const { return m_pipeline.get(); }
|
|
const RenderPipelineAsset* GetPipelineAsset() const { return m_pipelineAsset.get(); }
|
|
ObjectIdPass* GetObjectIdPass() const { return m_objectIdPass.get(); }
|
|
|
|
bool Render(const CameraRenderRequest& request);
|
|
|
|
private:
|
|
void ResetPipeline(std::unique_ptr<RenderPipeline> pipeline);
|
|
|
|
RenderSceneExtractor m_sceneExtractor;
|
|
std::shared_ptr<const RenderPipelineAsset> m_pipelineAsset;
|
|
std::unique_ptr<RenderPipeline> m_pipeline;
|
|
std::unique_ptr<ObjectIdPass> m_objectIdPass;
|
|
Passes::BuiltinPostProcessPassSequenceBuilder m_builtinPostProcessBuilder;
|
|
};
|
|
|
|
} // namespace Rendering
|
|
} // namespace XCEngine
|