use crate::phases::UiRenderPhase;
use rafx::graph::*;
use super::ModernPipelineContext;
use rafx::render_features::RenderJobCommandBufferContext;
pub(super) struct UiPass {
#[allow(dead_code)]
pub(super) node: RenderGraphNodeId,
pub(super) color: RenderGraphImageUsageId,
}
pub(super) fn ui_pass(
context: &mut ModernPipelineContext,
previous_pass_color: RenderGraphImageUsageId,
) -> UiPass {
let node = context
.graph
.add_renderpass_node("Ui", RenderGraphQueue::DefaultGraphics);
let color = context.graph.modify_color_attachment(
node,
previous_pass_color,
0,
None,
Default::default(),
Default::default(),
);
context.graph.set_image_name(color, "color");
context
.graph
.add_render_phase_dependency::<UiRenderPhase>(node);
let main_view = context.main_view.clone();
context.graph.set_renderpass_callback(node, move |args| {
profiling::scope!("UI Pass");
let mut write_context =
RenderJobCommandBufferContext::from_graph_visit_render_pass_args(&args);
args.graph_context
.prepared_render_data()
.write_view_phase::<UiRenderPhase>(&main_view, &mut write_context)
});
UiPass { node, color }
}