content: [package]
  name = "bevy_gaussian_splatting"
  description = "bevy gaussian splatting render pipeline plugin"
  version = "6.0.0"
  edition = "2024"
  rust-version = "1.85.0"
  authors = ["mosure <mitchell@mosure.me>"]
  license = "MIT OR Apache-2.0"
  keywords = [
    "bevy",
    "gaussian-splatting",
    "render-pipeline",
    "ply",
  ]
  categories = [
    "computer-vision",
    "graphics",
    "rendering",
    "rendering::data-formats",
  ]
  homepage = "https://github.com/mosure/bevy_gaussian_splatting"
  repository = "https://github.com/mosure/bevy_gaussian_splatting"
  readme = "README.md"
  exclude = [
    ".devcontainer",
    ".github",
    "docs",
    "dist",
    "build",
    "assets",
    "credits",
  ]
  default-run = "bevy_gaussian_splatting"
  
  
  # TODO: add a feature flag for each gaussian format
  # TODO: resolve one-hot feature flags through runtime configuration
  [features]
  default = [
    "io_flexbuffers",
    "io_ply",
  
    # "packed",
    "planar",
  
    "buffer_storage",
    # "buffer_texture",
  
    "sh3",
  
    # "precompute_covariance_3d",
  
    "query_select",
    # "query_sparse",
  
    # TODO: bevy_interleave storage bind group read_only per plane attribute support
    # "morph_particles",
    "morph_interpolate",
  
    "sort_bitonic",
    "sort_radix",  # TODO: fix macos radix sort
    "sort_rayon",
    "sort_std",
  
    "tooling",
    "viewer",
  
    "file_asset",
    "web_asset",
  ]
  
  debug_gpu = []
  
  io_bincode2 = ["bincode2", "flate2"]
  io_flexbuffers = ["flexbuffers"]
  io_ply = ["ply-rs"]
  
  material_noise = ["noise", "dep:noise"]
  
  morph_particles = []
  morph_interpolate = []
  
  noise = []
  
  sh0 = []
  sh1 = []
  sh2 = []
  sh3 = []
  sh4 = []
  
  precompute_covariance_3d = []
  
  packed = []
  planar = []
  
  buffer_storage = []
  buffer_texture = []
  
  query_raycast = []
  query_select = []
  query_sparse = ["kd-tree", "query_select"]
  
  sort_bitonic = []
  sort_radix = []
  sort_rayon = ["rayon"]
  sort_std = []
  
  testing = []
  tooling = ["byte-unit"]
  debug_tooling = ["tooling"]
  
  perftest = []
  
  headless = [
    "bevy/png",
    "io_flexbuffers",
    "io_ply",
    "planar",
    "buffer_storage",
    "sh3",
    "sort_rayon",
    "sort_std",
    "sort_bitonic",
    "sort_radix",
  ]
  
  viewer = [
    "bevy-inspector-egui",
    "bevy_panorbit_camera",
    # "bevy_transform_gizmo",
    "bevy/bevy_gizmos",
    "bevy/bevy_ui",
    "bevy/multi_threaded",  # bevy screenshot functionality requires bevy/multi_threaded as of 0.12.1
    "bevy/png",
  ]
  
  web = [
    "buffer_storage",
    "sh0",
    "io_flexbuffers",
    "io_ply",
    "planar",
    "sort_std",
    "viewer",
    "web_asset",
    "webgpu",
  ]
  file_asset = [
    "bevy_file_asset",
  ]
  web_asset = [
    "base64",
    "bevy/http",
    "bevy/https",
  ]
  
  # note: webgl2/buffer_texture are deprecated
  webgl2 = ["bevy/webgl2"]
  webgpu = ["bevy/webgpu"]
  
  
  [dependencies]
  base64 = { version = "0.22", optional = true }
  bevy_args = { version = "2.0.0" }
  bevy-inspector-egui = { version = "0.34.0", optional = true }
  bevy_interleave = { version = "0.8.0" }
  bevy_panorbit_camera = { version = "0.29.0", optional = true , features = ["bevy_egui"]}
  bevy_transform_gizmo = { version = "0.12", optional = true }
  bevy_file_asset = { version = "0.3", optional = true }
  bincode2 = { version = "2.0", optional = true }
  byte-unit = { version = "5.1", optional = true }
  bytemuck = "1.23"
  clap = { version = "4.5", features = ["derive"] }
  flate2  = { version = "1.1", optional = true }
  flexbuffers = { version = "25.2", optional = true }
  half = { version = "2.6", features = ["serde"] }
  # image = { version = "0.25.6", default-features = false, features = ["png"] }
  kd-tree = { version = "0.6", optional = true }
  noise = { version = "0.9.0", optional = true }
  ply-rs = { version = "0.1", optional = true }
  rand = "0.8"
  rayon = { version = "1.8", optional = true }
  serde = "1.0"
  serde_json = "1.0"
  static_assertions = "1.1"
  typenum = "1.18"
  wgpu = "24"
  
  
  [target.'cfg(target_arch = "wasm32")'.dependencies]
  console_error_panic_hook = "0.1"
  wasm-bindgen = "0.2"
  
  
  [dependencies.bevy]
  version = "0.17"
  default-features = false
  features = [
    "bevy_asset",
    "bevy_camera",
    "bevy_core_pipeline",
    "bevy_log",
    "bevy_pbr",
    "bevy_render",
    "bevy_winit",
    "serialize",
    "std",
    "zstd_rust",
    "x11",
  ]
  
  
  [dependencies.web-sys]
  version = "0.3"
  features = [
    'Document',
    'Element',
    'HtmlElement',
    'Location',
    'Node',
    'Window',
  ]
  
  
  [dev-dependencies]
  criterion = { version = "0.6", features = ["html_reports"] }
  crossbeam-channel = "0.5.15"
  futures-intrusive = { version = "0.5.0" }
  pollster = { version = "0.4.0" }
  
  [profile.dev.package."*"]
  opt-level = 3
  
  [profile.dev]
  opt-level = 1
  
  [profile.release]
  lto = "thin"
  codegen-units = 1
  opt-level = 3
  
  [profile.wasm-release]
  inherits = "release"
  opt-level = "z"
  lto = "fat"
  codegen-units = 1
  
  
  [lib]
  path = "src/lib.rs"
  
  [[bin]]
  name = "bevy_gaussian_splatting"
  path = "viewer/viewer.rs"
  required-features = ["viewer"]
  
  [[bin]]
  name = "ply_to_gcloud"
  path = "tools/ply_to_gcloud.rs"
  required-features = ["io_ply", "tooling"]
  
  
  [[bin]]
  name = "compare_aabb_obb"
  path = "tools/compare_aabb_obb.rs"
  required-features = ["debug_tooling"]
  
  [[bin]]
  name = "surfel_plane"
  path = "tools/surfel_plane.rs"
  required-features = ["debug_tooling"]
  
  
  [[bin]]
  name = "test_gaussian"
  path = "tests/gpu/gaussian.rs"
  required-features = ["testing"]
  
  [[bin]]
  name = "test_radix"
  path = "tests/gpu/radix.rs"
  required-features = ["debug_gpu", "sort_radix", "testing"]
  
  [[example]]
  name = "minimal"
  path = "examples/minimal.rs"
  
  [[example]]
  name = "headless"
  path = "examples/headless.rs"
  
  [[example]]
  name = "multi_camera"
  path = "examples/multi_camera.rs"
  
  
  [[bench]]
  name = "io"
  harness = false
  