1use crate::{
2 assets::plugin::AssetPlugin,
3 ecs::{plugin::Plugin, system::SystemStage},
4 graphics::{
5 pipeline::{
6 compute::Compute,
7 cubemap::Cubemap,
8 instance::{ComputeInstance, MaterialInstance},
9 layout::GlobalLayoutPool,
10 material::Material,
11 mesh::Mesh,
12 mipmap::init_mipmap_generator,
13 samplers::init_global_samplers,
14 texture_array::TextureArray,
15 textures::Texture,
16 },
17 render::{Backend, BackendPlugin},
18 window::WindowPlugin,
19 },
20};
21
22pub mod pipeline;
23pub mod render;
24pub mod types;
25pub mod window;
26
27pub struct GraphicsPlugin;
32impl Plugin for GraphicsPlugin {
33 fn build(self, app: crate::app::App) -> crate::app::App {
34 app.add_plugin(WindowPlugin::default())
35 .add_plugin(BackendPlugin)
36 .add_plugin(BuiltinAssetsPlugin)
37 }
38}
39
40pub struct BuiltinAssetsPlugin;
44impl Plugin for BuiltinAssetsPlugin {
45 fn build(self, app: crate::app::App) -> crate::app::App {
46 app.insert_resource(GlobalLayoutPool::default())
47 .add_system(SystemStage::AssetSync, init_global_samplers)
48 .add_system(SystemStage::AssetSync, init_mipmap_generator)
49 .add_plugin(AssetPlugin::<Backend, Mesh>::new())
50 .add_plugin(AssetPlugin::<Backend, Texture>::new())
51 .add_plugin(AssetPlugin::<Backend, TextureArray>::new())
52 .add_plugin(AssetPlugin::<Backend, Cubemap>::new())
53 .add_plugin(AssetPlugin::<Backend, Material>::new())
54 .add_plugin(AssetPlugin::<Backend, Compute>::new())
55 .add_plugin(AssetPlugin::<Backend, MaterialInstance>::new())
56 .add_plugin(AssetPlugin::<Backend, ComputeInstance>::new())
57 }
58}
59
60#[cfg(test)]
61mod test {}