bevy_gaussian_splatting/
lib.rs1#![allow(incomplete_features)]
2#![feature(lazy_type_alias)]
3
4use bevy::prelude::*;
5pub use bevy_interleave::prelude::*;
6
7pub use camera::GaussianCamera;
8
9pub use gaussian::{
10 formats::{
11 planar_3d::{Gaussian3d, PlanarGaussian3d, PlanarGaussian3dHandle, random_gaussians_3d},
12 planar_4d::{Gaussian4d, PlanarGaussian4d, PlanarGaussian4dHandle, random_gaussians_4d},
13 },
14 settings::{CloudSettings, GaussianMode, RasterizeMode},
15};
16
17pub use io::scene::{GaussianScene, GaussianSceneHandle};
18
19pub use material::spherical_harmonics::SphericalHarmonicCoefficients;
20
21use io::IoPlugin;
22
23pub mod camera;
24pub mod gaussian;
25pub mod io;
26pub mod material;
27pub mod math;
28pub mod morph;
29pub mod query;
30pub mod render;
31pub mod sort;
32pub mod stream;
33pub mod utils;
34
35#[cfg(feature = "noise")]
36pub mod noise;
37
38pub struct GaussianSplattingPlugin;
39
40impl Plugin for GaussianSplattingPlugin {
41 fn build(&self, app: &mut App) {
42 app.register_type::<SphericalHarmonicCoefficients>();
44
45 app.add_plugins(IoPlugin);
46
47 app.add_plugins((
48 camera::GaussianCameraPlugin,
49 gaussian::settings::SettingsPlugin,
50 gaussian::cloud::CloudPlugin::<Gaussian3d>::default(),
51 gaussian::cloud::CloudPlugin::<Gaussian4d>::default(),
52 ));
53
54 app.add_plugins((
56 PlanarStoragePlugin::<Gaussian3d>::default(),
57 PlanarStoragePlugin::<Gaussian4d>::default(),
58 ));
59
60 app.add_plugins((
61 render::RenderPipelinePlugin::<Gaussian3d>::default(),
62 render::RenderPipelinePlugin::<Gaussian4d>::default(),
63 ));
64
65 app.add_plugins((material::MaterialPlugin, query::QueryPlugin));
66
67 #[cfg(feature = "noise")]
68 app.add_plugins(noise::NoisePlugin);
69 }
70}