Files
XCEngine/engine/src/Rendering/RenderPipelineMainSceneGraphContract.cpp

68 lines
2.2 KiB
C++

#include <XCEngine/Rendering/RenderPipelineMainSceneGraphContract.h>
#include <XCEngine/Rendering/Graph/RenderGraphRecordingContext.h>
#include <XCEngine/Rendering/SceneRenderFeatureHost.h>
#include <string>
#include <utility>
namespace XCEngine {
namespace Rendering {
Containers::String BuildRenderPipelineMainScenePhasePassName(
const Containers::String& baseName,
ScenePhase scenePhase) {
std::string name = baseName.CStr();
if (!name.empty()) {
name += '.';
}
name += ToString(scenePhase);
return Containers::String(name.c_str());
}
bool RecordRenderPipelineMainSceneFeaturePasses(
const RenderPipelineMainSceneRenderGraphContext& context,
SceneRenderFeatureHost& featureHost,
SceneRenderInjectionPoint injectionPoint,
bool clearAttachments,
SceneRenderFeaturePassBeginCallback beginPassCallback,
SceneRenderFeaturePassEndCallback endPassCallback,
bool* recordedAnyPass) {
const SceneRenderFeaturePassRenderGraphContext featureContext =
BuildSceneRenderFeaturePassRenderGraphContext(
BuildRenderGraphRecordingContext(context),
clearAttachments,
beginPassCallback,
endPassCallback);
return featureHost.Record(
featureContext,
injectionPoint,
recordedAnyPass);
}
bool RecordRenderPipelineMainScenePhasePass(
const RenderPipelineMainSceneRenderGraphContext& context,
ScenePhase scenePhase,
RenderPassGraphExecutePassCallback executePassCallback,
RenderPassGraphBeginCallback beginPassCallback,
RenderPassGraphEndCallback endPassCallback,
std::vector<RenderGraphTextureHandle> additionalReadTextures) {
const RenderPassRenderGraphContext passContext =
BuildRenderPassRenderGraphContext(
CloneRenderGraphRecordingContext(
BuildRenderGraphRecordingContext(context),
BuildRenderPipelineMainScenePhasePassName(
context.passName,
scenePhase)),
beginPassCallback,
endPassCallback);
return RecordColorDepthCallbackRasterPass(
passContext,
std::move(executePassCallback),
std::move(additionalReadTextures));
}
} // namespace Rendering
} // namespace XCEngine