Files
XCEngine/engine/include/XCEngine/Rendering/Pipelines/NativeSceneRecorder.h

52 lines
1.7 KiB
C++

#pragma once
#include <XCEngine/Rendering/Execution/DrawSettings.h>
#include <XCEngine/Rendering/Execution/ScenePhase.h>
#include <XCEngine/Rendering/Execution/SceneRenderInjectionPoint.h>
#include <XCEngine/Rendering/Graph/RenderGraphTypes.h>
#include <XCEngine/Rendering/RenderSurface.h>
#include <XCEngine/Rendering/SceneDrawBackend.h>
#include <XCEngine/Rendering/SceneRenderFeaturePass.h>
#include <memory>
namespace XCEngine {
namespace Rendering {
struct RenderPipelineStageRenderGraphContext;
namespace Pipelines {
struct NativeSceneRecorderState;
class NativeSceneRecorder {
public:
NativeSceneRecorder(
SceneDrawBackend& sceneDrawBackend,
const RenderPipelineStageRenderGraphContext& context);
~NativeSceneRecorder();
bool RecordDefaultScene();
bool RecordScenePhase(ScenePhase scenePhase);
bool RecordSceneDrawSettings(const DrawSettings& drawSettings);
bool RecordInjectionPoint(SceneRenderInjectionPoint injectionPoint);
bool RecordFeaturePass(NativeSceneFeaturePassId featurePassId);
private:
SceneRenderFeaturePassBeginCallback BuildBeginRecordedPassCallback(
bool* executionSucceeded) const;
SceneRenderFeaturePassEndCallback BuildEndRecordedPassCallback() const;
RenderPipelineStageRenderGraphContext BuildGraphContext() const;
SceneDrawBackend& m_sceneDrawBackend;
const RenderPipelineStageRenderGraphContext& m_context;
RenderSurface m_graphManagedSurface = {};
RenderGraphTextureHandle m_mainDirectionalShadowTexture = {};
bool m_clearAttachments = true;
std::shared_ptr<NativeSceneRecorderState> m_state;
};
} // namespace Pipelines
} // namespace Rendering
} // namespace XCEngine