fix(rendering): refresh managed pipelines on srp environment changes
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include <XCEngine/Rendering/Extraction/RenderSceneExtractor.h>
|
||||
#include <XCEngine/Rendering/RenderPipeline.h>
|
||||
|
||||
#include <cstddef>
|
||||
#include <memory>
|
||||
|
||||
namespace XCEngine {
|
||||
@@ -33,12 +34,14 @@ public:
|
||||
|
||||
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(); }
|
||||
RenderPipeline* GetPipeline() const;
|
||||
const RenderPipelineAsset* GetPipelineAsset() const;
|
||||
|
||||
bool Render(const CameraFramePlan& plan);
|
||||
|
||||
private:
|
||||
bool UsesManagedPipelineBinding() const;
|
||||
void RefreshManagedPipelineBindingIfNeeded();
|
||||
void ResetPipeline(std::unique_ptr<RenderPipeline> pipeline);
|
||||
bool BuildSceneDataForPlan(
|
||||
const CameraFramePlan& plan,
|
||||
@@ -53,6 +56,8 @@ private:
|
||||
std::shared_ptr<const RenderPipelineAsset> m_pipelineAsset;
|
||||
std::unique_ptr<RenderPipeline> m_pipeline;
|
||||
std::unique_ptr<DirectionalShadowRuntime> m_directionalShadowRuntime;
|
||||
bool m_usesDefaultPipelineAssetSelection = false;
|
||||
size_t m_managedPipelineEnvironmentGeneration = 0u;
|
||||
};
|
||||
|
||||
} // namespace Rendering
|
||||
|
||||
@@ -96,6 +96,7 @@ void SetManagedRenderPipelineBridge(
|
||||
void ClearManagedRenderPipelineBridge();
|
||||
std::shared_ptr<const ManagedRenderPipelineBridge>
|
||||
GetManagedRenderPipelineBridge();
|
||||
size_t GetManagedRenderPipelineEnvironmentGeneration();
|
||||
|
||||
void SetManagedRenderPipelineAssetDescriptor(
|
||||
const ManagedRenderPipelineAssetDescriptor& descriptor);
|
||||
|
||||
Reference in New Issue
Block a user