68 lines
2.2 KiB
C++
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
|