[package]
edition = "2024"
rust-version = "1.86"
name = "rapier3d"
version = "0.35.2"
authors = ["Sébastien Crozet <sebcrozet@dimforge.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "3-dimensional physics engine in Rust."
homepage = "https://rapier.rs"
documentation = "https://docs.rs/rapier3d"
readme = "README.md"
keywords = [
"physics",
"dynamics",
"rigid",
"real-time",
"impulse_joints",
]
categories = [
"science",
"game-development",
"mathematics",
"simulation",
"wasm",
]
license = "Apache-2.0"
repository = "https://github.com/dimforge/rapier"
resolver = "2"
[package.metadata.docs.rs]
features = [
"parallel",
"serde-serialize",
"debug-render",
]
[badges.maintenance]
status = "actively-developed"
[features]
alloc = [
"nalgebra/alloc",
"parry3d/alloc",
"serde?/alloc",
]
block-solver = []
bytemuck = ["dep:bytemuck"]
debug-disable-legitimate-fe-exceptions = []
debug-render = []
default = [
"dim3",
"f32",
"std",
]
dev-remove-slow-accessors = []
dim3 = []
enhanced-determinism = [
"simba/libm_force",
"parry3d/enhanced-determinism",
]
f32 = []
parallel = [
"dep:rayon",
"std",
"parry3d/parallel",
]
profiler = ["dep:web-time"]
serde-serialize = [
"arrayvec/serde",
"nalgebra/serde-serialize",
"parry3d/serde-serialize",
"dep:serde",
"std",
]
simd8 = ["parry3d/simd8"]
solver-bounds-checks = []
std = [
"alloc",
"parry3d/std",
"nalgebra/std",
"simba/std",
"num-traits/std",
"approx/std",
"thiserror/std",
"wide/std",
"serde?/std",
]
unsync-callbacks = []
[lib]
name = "rapier3d"
path = "src/lib.rs"
required-features = [
"dim3",
"f32",
]
[[test]]
name = "additional_solver_iterations"
path = "tests/additional_solver_iterations.rs"
[[test]]
name = "broad_phase_pair_filter"
path = "tests/broad_phase_pair_filter.rs"
[[test]]
name = "ccd_default_vs_fixed"
path = "tests/ccd_default_vs_fixed.rs"
[[test]]
name = "contact_clustering"
path = "tests/contact_clustering.rs"
[[test]]
name = "contact_force_event_clustering"
path = "tests/contact_force_event_clustering.rs"
[[test]]
name = "contact_force_event_first_tick"
path = "tests/contact_force_event_first_tick.rs"
[[test]]
name = "gyroscopic"
path = "tests/gyroscopic.rs"
[[test]]
name = "heightfield_solver_graph"
path = "tests/heightfield_solver_graph.rs"
[[test]]
name = "issue_182_heightfield_seam"
path = "tests/issue_182_heightfield_seam.rs"
[[test]]
name = "issue_217_ccd_large_dt_hitch"
path = "tests/issue_217_ccd_large_dt_hitch.rs"
[[test]]
name = "issue_253_unsync_callbacks"
path = "tests/issue_253_unsync_callbacks.rs"
[[test]]
name = "issue_287_kinematic_wakes_jointed_dynamic"
path = "tests/issue_287_kinematic_wakes_jointed_dynamic.rs"
[[test]]
name = "issue_309_locked_rotations_offset_com"
path = "tests/issue_309_locked_rotations_offset_com.rs"
[[test]]
name = "issue_372_trimesh_sleep"
path = "tests/issue_372_trimesh_sleep.rs"
[[test]]
name = "issue_485_kcc_depenetration"
path = "tests/issue_485_kcc_depenetration.rs"
[[test]]
name = "issue_499_angular_limits"
path = "tests/issue_499_angular_limits.rs"
[[test]]
name = "issue_524_thin_slab_trimesh_tunnel"
path = "tests/issue_524_thin_slab_trimesh_tunnel.rs"
[[test]]
name = "issue_617_broad_phase_memory_growth"
path = "tests/issue_617_broad_phase_memory_growth.rs"
[[test]]
name = "issue_634_round_triangle_debug_render"
path = "tests/issue_634_round_triangle_debug_render.rs"
[[test]]
name = "issue_666_additional_mass_inertia"
path = "tests/issue_666_additional_mass_inertia.rs"
[[test]]
name = "issue_692_joint_get_mut_wakes_bodies"
path = "tests/issue_692_joint_get_mut_wakes_bodies.rs"
[[test]]
name = "issue_717_trimesh_result"
path = "tests/issue_717_trimesh_result.rs"
[[test]]
name = "issue_730_many_separate_colliders_perf"
path = "tests/issue_730_many_separate_colliders_perf.rs"
[[test]]
name = "issue_734_collider_reparenting"
path = "tests/issue_734_collider_reparenting.rs"
[[test]]
name = "issue_746_prismatic_axis_frames"
path = "tests/issue_746_prismatic_axis_frames.rs"
[[test]]
name = "issue_749_query_after_collider_removal"
path = "tests/issue_749_query_after_collider_removal.rs"
[[test]]
name = "issue_78_additional_mass_rest"
path = "tests/issue_78_additional_mass_rest.rs"
[[test]]
name = "issue_792_coupled_angular_spring"
path = "tests/issue_792_coupled_angular_spring.rs"
[[test]]
name = "issue_810_cubes_thin_cylinder_tunnel"
path = "tests/issue_810_cubes_thin_cylinder_tunnel.rs"
[[test]]
name = "issue_836_physics_world"
path = "tests/issue_836_physics_world.rs"
[[test]]
name = "issue_856_motor_position_rotating_base"
path = "tests/issue_856_motor_position_rotating_base.rs"
[[test]]
name = "issue_862_kcc_impulse_point"
path = "tests/issue_862_kcc_impulse_point.rs"
[[test]]
name = "issue_868_same_machine_determinism"
path = "tests/issue_868_same_machine_determinism.rs"
[[test]]
name = "issue_925_wheel_rotation"
path = "tests/issue_925_wheel_rotation.rs"
[[test]]
name = "issue_932_low_ccd_substeps_stutter"
path = "tests/issue_932_low_ccd_substeps_stutter.rs"
[[test]]
name = "issue_946_vehicle_braking_friction"
path = "tests/issue_946_vehicle_braking_friction.rs"
[[test]]
name = "issue_952_simd_joint_offset_com"
path = "tests/issue_952_simd_joint_offset_com.rs"
[[test]]
name = "issue_954_multibody_parallel_contact"
path = "tests/issue_954_multibody_parallel_contact.rs"
[[test]]
name = "issue_968_multibody_weld_settle"
path = "tests/issue_968_multibody_weld_settle.rs"
[[test]]
name = "issue_970_multi_collider_body_perf"
path = "tests/issue_970_multi_collider_body_perf.rs"
[[test]]
name = "issue_974_restitution"
path = "tests/issue_974_restitution.rs"
[[test]]
name = "joint_assembly_persistence"
path = "tests/joint_assembly_persistence.rs"
[[test]]
name = "joint_contact_solve_order"
path = "tests/joint_contact_solve_order.rs"
[[test]]
name = "joint_stability"
path = "tests/joint_stability.rs"
[[test]]
name = "loop_closure_com_repro"
path = "tests/loop_closure_com_repro.rs"
[[test]]
name = "miri_scenes"
path = "tests/miri_scenes.rs"
[[test]]
name = "multibody_armature"
path = "tests/multibody_armature.rs"
[[test]]
name = "multibody_coupling"
path = "tests/multibody_coupling.rs"
[[test]]
name = "multibody_dof_inertia"
path = "tests/multibody_dof_inertia.rs"
[[test]]
name = "multibody_spring"
path = "tests/multibody_spring.rs"
[[test]]
name = "parallel_external_caller_livelock"
path = "tests/parallel_external_caller_livelock.rs"
[[test]]
name = "parallel_path_parity"
path = "tests/parallel_path_parity.rs"
[[test]]
name = "persistent_islands"
path = "tests/persistent_islands.rs"
[[test]]
name = "simd_backend_determinism"
path = "tests/simd_backend_determinism.rs"
[[test]]
name = "simd_backend_parity"
path = "tests/simd_backend_parity.rs"
[[test]]
name = "single_worker_deferred_bvh"
path = "tests/single_worker_deferred_bvh.rs"
[[test]]
name = "sleep_wake"
path = "tests/sleep_wake.rs"
[[test]]
name = "sleep_wide_bodies"
path = "tests/sleep_wide_bodies.rs"
[[test]]
name = "snapshot_portability"
path = "tests/snapshot_portability.rs"
[[test]]
name = "snapshot_roundtrip"
path = "tests/snapshot_roundtrip.rs"
[[test]]
name = "solver_graph_stale_refs"
path = "tests/solver_graph_stale_refs.rs"
[[test]]
name = "speed_cap"
path = "tests/speed_cap.rs"
[[test]]
name = "substep_chain_high_mass_ratio"
path = "tests/substep_chain_high_mass_ratio.rs"
[[test]]
name = "thread_count_determinism"
path = "tests/thread_count_determinism.rs"
[[test]]
name = "total_contact_impulse"
path = "tests/total_contact_impulse.rs"
[[test]]
name = "unsync_callbacks"
path = "tests/unsync_callbacks.rs"
[[test]]
name = "whole_island_sleep"
path = "tests/whole_island_sleep.rs"
[dependencies.approx]
version = "0.5"
default-features = false
[dependencies.arrayvec]
version = "0.7"
default-features = false
[dependencies.bitflags]
version = "2"
[dependencies.bytemuck]
version = "1"
features = ["derive"]
optional = true
[dependencies.glamx]
version = "0.3"
default-features = false
[dependencies.log]
version = "0.4"
[dependencies.num-traits]
version = "0.2"
default-features = false
[dependencies.parry3d]
version = "0.30.2"
features = ["required-features"]
default-features = false
[dependencies.profiling]
version = "1.0"
[dependencies.rayon]
version = "1"
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
optional = true
default-features = false
[dependencies.simba]
version = "0.10.2"
features = ["wide"]
default-features = false
[dependencies.static_assertions]
version = "1"
[dependencies.thiserror]
version = "2"
default-features = false
[dependencies.web-time]
version = "1.1"
optional = true
[dependencies.wide]
version = "1"
default-features = false
[dev-dependencies.bincode]
version = "1"
[dev-dependencies.oorandom]
version = "11"
default-features = false
[dev-dependencies.serde]
version = "1"
features = [
"derive",
"std",
]
default-features = false
[dev-dependencies.serde_json]
version = "1"
[target.'cfg(not(target_arch = "spirv"))'.dependencies.glamx]
version = "0.3"
features = ["nalgebra"]
default-features = false
[target.'cfg(not(target_arch = "spirv"))'.dependencies.nalgebra]
version = "0.35"
features = ["macros"]
default-features = false
[lints.clippy]
needless_lifetimes = "allow"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
'cfg(feature, values("dim2", "f64", "std", "alloc", "bytemuck"))',
'cfg(target_arch, values("spirv"))',
]