refactor(rendering): add srp host stage recorder bridge
This commit is contained in:
@@ -42,6 +42,22 @@ private:
|
||||
ScriptableRenderPipelineHostAsset m_fallbackAsset;
|
||||
};
|
||||
|
||||
class ManagedRenderPipelineBridge {
|
||||
public:
|
||||
virtual ~ManagedRenderPipelineBridge() = default;
|
||||
|
||||
virtual std::unique_ptr<RenderPipelineStageRecorder> CreateStageRecorder(
|
||||
const ManagedRenderPipelineAssetDescriptor&) const {
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
void SetManagedRenderPipelineBridge(
|
||||
std::shared_ptr<const ManagedRenderPipelineBridge> bridge);
|
||||
void ClearManagedRenderPipelineBridge();
|
||||
std::shared_ptr<const ManagedRenderPipelineBridge>
|
||||
GetManagedRenderPipelineBridge();
|
||||
|
||||
void SetManagedRenderPipelineAssetDescriptor(
|
||||
const ManagedRenderPipelineAssetDescriptor& descriptor);
|
||||
void ClearManagedRenderPipelineAssetDescriptor();
|
||||
|
||||
@@ -20,9 +20,13 @@ public:
|
||||
|
||||
using RenderPipeline::Render;
|
||||
|
||||
void SetStageRecorder(std::unique_ptr<RenderPipelineStageRecorder> stageRecorder);
|
||||
void SetPipelineRenderer(std::unique_ptr<RenderPipelineRenderer> pipelineRenderer);
|
||||
void SetPipelineRendererAsset(
|
||||
std::shared_ptr<const RenderPipelineAsset> pipelineRendererAsset);
|
||||
RenderPipelineStageRecorder* GetStageRecorder() const {
|
||||
return m_stageRecorder.get();
|
||||
}
|
||||
RenderPipelineRenderer* GetPipelineRenderer() const {
|
||||
return m_pipelineRenderer.get();
|
||||
}
|
||||
@@ -42,8 +46,10 @@ public:
|
||||
const RenderSceneData& sceneData) override;
|
||||
|
||||
private:
|
||||
void ResetStageRecorder(std::unique_ptr<RenderPipelineStageRecorder> stageRecorder);
|
||||
void ResetPipelineRenderer(std::unique_ptr<RenderPipelineRenderer> pipelineRenderer);
|
||||
|
||||
std::unique_ptr<RenderPipelineStageRecorder> m_stageRecorder;
|
||||
std::shared_ptr<const RenderPipelineAsset> m_pipelineRendererAsset;
|
||||
std::unique_ptr<RenderPipelineRenderer> m_pipelineRenderer;
|
||||
};
|
||||
|
||||
@@ -36,6 +36,23 @@ struct RenderPipelineStageRenderGraphContext {
|
||||
RenderGraphBlackboard* blackboard = nullptr;
|
||||
};
|
||||
|
||||
class RenderPipelineStageRecorder {
|
||||
public:
|
||||
virtual ~RenderPipelineStageRecorder() = default;
|
||||
|
||||
virtual bool Initialize(const RenderContext&) {
|
||||
return true;
|
||||
}
|
||||
virtual void Shutdown() {}
|
||||
virtual bool SupportsStageRenderGraph(CameraFrameStage) const {
|
||||
return false;
|
||||
}
|
||||
virtual bool RecordStageRenderGraph(
|
||||
const RenderPipelineStageRenderGraphContext&) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class RenderPipelineRenderer {
|
||||
public:
|
||||
virtual ~RenderPipelineRenderer() = default;
|
||||
|
||||
Reference in New Issue
Block a user