50 lines
1.8 KiB
C++
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
|