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

50 lines
1.8 KiB
C++

#include "Rendering/SceneRenderFeaturePass.h"
#include <XCEngine/Rendering/Graph/RenderGraphRecordingContext.h>
#include <XCEngine/Rendering/RenderPassGraphContract.h>
#include <algorithm>
namespace XCEngine {
namespace Rendering {
bool SceneRenderFeaturePass::RecordRenderGraph(
const SceneRenderFeaturePassRenderGraphContext& context) {
const RenderGraphRecordingContext baseRecordingContext =
BuildRenderGraphRecordingContext(context);
RenderSurface sourceSurfaceTemplate = {};
RenderGraphRecordingContextBuildParams recordingParams = {};
recordingParams.overrideSourceBinding = true;
recordingParams.sourceBinding =
ResolveRenderGraphRecordingSourceBinding(
baseRecordingContext,
&baseRecordingContext.surface,
&sourceSurfaceTemplate);
const RenderGraphRecordingContext recordingContext =
BuildRenderGraphRecordingContext(
baseRecordingContext,
std::move(recordingParams));
const RenderPassGraphBeginCallback beginPassCallback =
context.beginPassCallback
? RenderPassGraphBeginCallback(
[beginPass = context.beginPassCallback,
clearAttachments = context.clearAttachments](
const RenderPassContext& passContext) {
return beginPass(passContext, clearAttachments);
})
: RenderPassGraphBeginCallback();
const RenderPassRenderGraphContext passContext =
BuildRenderPassRenderGraphContext(
recordingContext,
beginPassCallback,
context.endPassCallback);
return RecordRasterRenderPass(
*this,
passContext,
BuildDeclaredRasterPassGraphIO(passContext));
}
} // namespace Rendering
} // namespace XCEngine