refactor(rendering): add override helpers for shared recording contexts
This commit is contained in:
@@ -22,24 +22,53 @@ struct RenderGraphRecordingContext {
|
||||
RenderGraphBlackboard* blackboard = nullptr;
|
||||
};
|
||||
|
||||
struct RenderGraphRecordingContextOverrides {
|
||||
const Containers::String* passName = nullptr;
|
||||
const RenderSurface* surface = nullptr;
|
||||
bool overrideSourceSurface = false;
|
||||
const RenderSurface* sourceSurface = nullptr;
|
||||
bool overrideSourceColorView = false;
|
||||
RHI::RHIResourceView* sourceColorView = nullptr;
|
||||
bool overrideSourceColorState = false;
|
||||
RHI::ResourceStates sourceColorState = RHI::ResourceStates::Common;
|
||||
bool overrideSourceColorTexture = false;
|
||||
RenderGraphTextureHandle sourceColorTexture = {};
|
||||
bool overrideColorTargets = false;
|
||||
std::vector<RenderGraphTextureHandle> colorTargets = {};
|
||||
bool overrideDepthTarget = false;
|
||||
RenderGraphTextureHandle depthTarget = {};
|
||||
};
|
||||
|
||||
inline RenderGraphRecordingContext CloneRenderGraphRecordingContext(
|
||||
const RenderGraphRecordingContext& context,
|
||||
const Containers::String& passName) {
|
||||
return {
|
||||
const RenderGraphRecordingContextOverrides& overrides) {
|
||||
RenderGraphRecordingContext clone = {
|
||||
context.graphBuilder,
|
||||
passName,
|
||||
overrides.passName != nullptr ? *overrides.passName : context.passName,
|
||||
context.renderContext,
|
||||
context.sceneData,
|
||||
context.surface,
|
||||
context.sourceSurface,
|
||||
context.sourceColorView,
|
||||
context.sourceColorState,
|
||||
context.sourceColorTexture,
|
||||
context.colorTargets,
|
||||
context.depthTarget,
|
||||
overrides.surface != nullptr ? *overrides.surface : context.surface,
|
||||
overrides.overrideSourceSurface ? overrides.sourceSurface : context.sourceSurface,
|
||||
overrides.overrideSourceColorView ? overrides.sourceColorView : context.sourceColorView,
|
||||
overrides.overrideSourceColorState ? overrides.sourceColorState : context.sourceColorState,
|
||||
overrides.overrideSourceColorTexture ? overrides.sourceColorTexture : context.sourceColorTexture,
|
||||
overrides.overrideColorTargets ? overrides.colorTargets : context.colorTargets,
|
||||
overrides.overrideDepthTarget ? overrides.depthTarget : context.depthTarget,
|
||||
context.executionSucceeded,
|
||||
context.blackboard
|
||||
};
|
||||
return clone;
|
||||
}
|
||||
|
||||
inline RenderGraphRecordingContext CloneRenderGraphRecordingContext(
|
||||
const RenderGraphRecordingContext& context,
|
||||
const Containers::String& passName) {
|
||||
const RenderGraphRecordingContextOverrides overrides = {
|
||||
&passName
|
||||
};
|
||||
return CloneRenderGraphRecordingContext(
|
||||
context,
|
||||
overrides);
|
||||
}
|
||||
|
||||
inline RenderGraphRecordingContext BuildRenderGraphRecordingContext(
|
||||
|
||||
Reference in New Issue
Block a user