bevy_spark 0.1.0

Gaussian splat renderer for Bevy with SPZ support
Documentation
//! `bevy_spark` — Gaussian splat renderer for Bevy.
//!
//! Spawn a [`SplatCloud`] with a `Handle<Splats>` next to a Transform. The
//! renderer assumes Bevy's Y-up coordinate convention by default; add
//! [`SplatCoordinateConvention::YDown`] for SPZ files authored in the common
//! 3DGS/SparkJS Y-down convention.
//!
//! ```ignore
//! let cloud: Handle<Splats> = asset_server.load("butterfly.spz");
//! commands.spawn((
//!     SplatCloud { handle: cloud },
//!     SplatCoordinateConvention::YDown,
//!     Transform::from_xyz(0.0, 0.0, -3.0),
//! ));
//! ```
//!
//! Global quality, sorting, LOD, upload, and multi-cloud defaults live in the
//! [`SparkSettings`] resource. Add a [`SplatCloudSettings`] component to
//! override quality, sorting, or LOD for one cloud. Environment variables are
//! still read as debug/default overrides for benchmark and capture runs.
//!
//! Files without embedded LOD stay unchanged unless generated LOD is enabled
//! with [`SpzLoaderSettings::generate_lod`] or `BEVY_SPARK_GENERATE_LOD=1`.
//! [`SpzLoaderSettings`] also carries the loader-side max-splat guard and
//! default source coordinate convention for loaded assets.

pub mod asset;
pub mod render;
pub mod splats;
pub mod spz;

pub use asset::{SpzLoader, SpzLoaderSettings};
pub use render::{
    SparkConfigSource, SparkDiagnostics, SparkDiagnosticsSnapshot, SparkQualityPreset,
    SparkRenderPlugin, SparkSettings, SplatCloud, SplatCloudSettings, SplatCpuCullMode,
    SplatFalloffProfile, SplatHighAlphaProfile, SplatLodSettings, SplatMultiCloudMode,
    SplatQualitySettings, SplatSortBackend, SplatSortMode, SplatSortSettings,
};
pub use splats::{RawSplat, SplatCoordinateConvention, Splats};

use bevy::prelude::*;

pub struct SparkPlugin;

impl Plugin for SparkPlugin {
    fn build(&self, app: &mut App) {
        app.init_asset::<Splats>()
            .register_asset_loader(SpzLoader)
            .add_plugins(SparkRenderPlugin);
    }
}