refactor: route renderer defaults through pipeline assets
This commit is contained in:
@@ -14,20 +14,27 @@ class Scene;
|
||||
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();
|
||||
|
||||
void SetPipeline(std::unique_ptr<RenderPipeline> pipeline);
|
||||
void SetPipelineAsset(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
|
||||
RenderPipeline* GetPipeline() const { return m_pipeline.get(); }
|
||||
const RenderPipelineAsset* GetPipelineAsset() const { return m_pipelineAsset.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;
|
||||
};
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <XCEngine/Rendering/RenderMaterialUtility.h>
|
||||
#include <XCEngine/Rendering/RenderPass.h>
|
||||
#include <XCEngine/Rendering/RenderPipeline.h>
|
||||
#include <XCEngine/Rendering/RenderPipelineAsset.h>
|
||||
#include <XCEngine/Rendering/RenderResourceCache.h>
|
||||
|
||||
#include <XCEngine/RHI/RHIDescriptorPool.h>
|
||||
@@ -100,6 +101,11 @@ private:
|
||||
RenderPassSequence m_passSequence;
|
||||
};
|
||||
|
||||
class BuiltinForwardPipelineAsset final : public RenderPipelineAsset {
|
||||
public:
|
||||
std::unique_ptr<RenderPipeline> CreatePipeline() const override;
|
||||
};
|
||||
|
||||
} // namespace Pipelines
|
||||
} // namespace Rendering
|
||||
} // namespace XCEngine
|
||||
|
||||
@@ -13,14 +13,19 @@ class Scene;
|
||||
|
||||
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,
|
||||
|
||||
Reference in New Issue
Block a user