[package]
name = "autd3-emulator"
description = "autd3 emulator for calculating sound field, emulation of firmware, etc"
readme = "README.md"
keywords = ["autd"]
version = "36.0.1"
authors = ["shun suzuki <suzuki@hapis.k.u-tokyo.ac.jp>"]
edition = "2024"
license = "MIT"
repository = "https://github.com/shinolab/autd3-emulator"

[package.metadata.docs.rs]
features = ["gpu"]
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = ["polars"]
polars = ["dep:polars"]
gpu = ["wgpu", "bytemuck", "flume", "pollster"]
inplace = []

[dependencies]
autd3 = { version = "36.0.1", default-features = false }
autd3-core = { version = "36.0.1", default-features = false, features = ["link", "firmware"] }
autd3-firmware-emulator = { version = "36.0.1", default-features = false }
bytemuck = { version = "1.23.0", optional = true, default-features = false }
flume = { version = "0.11.1", optional = true, default-features = false }
itertools = { version = "0.14.0", default-features = false }
nalgebra = { version = "0.34.0", default-features = false, features = ["std"] }
pastey = { version = "0.1.1", default-features = false }
polars = { version = "0.51.0", optional = true, features = ["dtype-u16", "dtype-u8"], default-features = false }
pollster = { version = "0.4.0", optional = true, default-features = false }
rayon = { version = "1.10.0", default-features = false }
thiserror = { version = "2.0.16", default-features = false }
visibility = { version = "0.1.1", default-features = false }
wgpu = { version = "26.0.1", optional = true, default-features = false, features = ["std", "dx12", "metal", "wgsl"] }

[dev-dependencies]
autd3 = { version = "36.0.1", default-features = false, features = ["gain", "modulation"] }
approx = { version = "0.5.1", default-features = false }
polars = { version = "0.51.0", default-features = false, features = ["csv", "fmt"] }
rand = { version = "0.9.1", default-features = false, features = ["thread_rng"] }
rstest = { version = "0.26.1", default-features = false }
textplots = { version = "0.8.7", default-features = false }
