use bevy::{
app::{App, Plugin},
asset::embedded_asset,
core_pipeline::core_2d::graph::Core2d,
render::{
RenderApp, RenderStartup,
extract_component::UniformComponentPlugin,
render_graph::{RenderGraphExt, RenderLabel, ViewNodeRunner},
},
};
use crate::{composite::prelude::*, extract::prelude::*};
pub(crate) struct CompositePlugin;
impl Plugin for CompositePlugin {
fn build(&self, app: &mut App) {
embedded_asset!(app, "composite.wgsl");
app.add_plugins(UniformComponentPlugin::<ExtractedAmbientLight2d>::default());
let Some(render_app) = app.get_sub_app_mut(RenderApp) else {
return;
};
render_app.add_systems(RenderStartup, super::pipeline::init_composite_pipeline);
render_app.add_render_graph_node::<ViewNodeRunner<CompositeNode>>(Core2d, CompositeLabel);
}
}
#[derive(Debug, Hash, PartialEq, Eq, Clone, RenderLabel)]
pub(crate) struct CompositeLabel;