52 lines
1.7 KiB
C++
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
|