diff options
| author | Sébastien Crozet <developer@crozet.re> | 2021-02-08 11:24:09 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-08 11:24:09 +0100 |
| commit | 244afd529b4d91204c9825def00a69f233165224 (patch) | |
| tree | fae0b9afcb863d600364f7f5b5f1ed0037e06eae | |
| parent | a272f4ce9eb812bd14114fe95ab614bc8dddfce5 (diff) | |
| parent | e24d73a2554e5cedefe719e46a7c531a7e89e6c6 (diff) | |
| download | rapier-244afd529b4d91204c9825def00a69f233165224.tar.gz rapier-244afd529b4d91204c9825def00a69f233165224.tar.bz2 rapier-244afd529b4d91204c9825def00a69f233165224.zip | |
Merge pull request #107 from dimforge/serialization_perf
Don't serialize solver contacts + remove erased-serde dependency.
| -rw-r--r-- | build/rapier2d-f64/Cargo.toml | 3 | ||||
| -rw-r--r-- | build/rapier2d/Cargo.toml | 3 | ||||
| -rw-r--r-- | build/rapier3d-f64/Cargo.toml | 3 | ||||
| -rw-r--r-- | build/rapier3d/Cargo.toml | 3 | ||||
| -rw-r--r-- | src/data/mod.rs | 1 | ||||
| -rw-r--r-- | src/geometry/contact_pair.rs | 4 | ||||
| -rw-r--r-- | src_testbed/testbed.rs | 10 |
7 files changed, 18 insertions, 9 deletions
diff --git a/build/rapier2d-f64/Cargo.toml b/build/rapier2d-f64/Cargo.toml index b961bc4..23aa6a5 100644 --- a/build/rapier2d-f64/Cargo.toml +++ b/build/rapier2d-f64/Cargo.toml @@ -26,7 +26,7 @@ simd-nightly = [ "simba/packed_simd", "simd-is-enabled" ] # enabled with the "simd-stable" or "simd-nightly" feature. simd-is-enabled = [ ] wasm-bindgen = [ "instant/wasm-bindgen" ] -serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "parry2d-f64/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde", "arrayvec/serde" ] +serde-serialize = [ "nalgebra/serde-serialize", "parry2d-f64/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde", "arrayvec/serde" ] enhanced-determinism = [ "simba/libm_force", "parry2d-f64/enhanced-determinism", "indexmap" ] [lib] @@ -50,7 +50,6 @@ arrayvec = "0.5" bit-vec = "0.6" rustc-hash = "1" serde = { version = "1", features = [ "derive" ], optional = true } -erased-serde = { version = "0.3", optional = true } indexmap = { version = "1", features = [ "serde-1" ], optional = true } downcast-rs = "1.2" num-derive = "0.3" diff --git a/build/rapier2d/Cargo.toml b/build/rapier2d/Cargo.toml index 670bab3..0009ae5 100644 --- a/build/rapier2d/Cargo.toml +++ b/build/rapier2d/Cargo.toml @@ -26,7 +26,7 @@ simd-nightly = [ "simba/packed_simd", "simd-is-enabled" ] # enabled with the "simd-stable" or "simd-nightly" feature. simd-is-enabled = [ ] wasm-bindgen = [ "instant/wasm-bindgen" ] -serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "parry2d/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde", "arrayvec/serde" ] +serde-serialize = [ "nalgebra/serde-serialize", "parry2d/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde", "arrayvec/serde" ] enhanced-determinism = [ "simba/libm_force", "parry2d/enhanced-determinism", "indexmap" ] [lib] @@ -50,7 +50,6 @@ arrayvec = "0.5" bit-vec = "0.6" rustc-hash = "1" serde = { version = "1", features = [ "derive" ], optional = true } -erased-serde = { version = "0.3", optional = true } indexmap = { version = "1", features = [ "serde-1" ], optional = true } downcast-rs = "1.2" num-derive = "0.3" diff --git a/build/rapier3d-f64/Cargo.toml b/build/rapier3d-f64/Cargo.toml index f510a21..040d173 100644 --- a/build/rapier3d-f64/Cargo.toml +++ b/build/rapier3d-f64/Cargo.toml @@ -26,7 +26,7 @@ simd-nightly = [ "parry3d-f64/simd-nightly", "simba/packed_simd", "simd-is-enabl # enabled with the "simd-stable" or "simd-nightly" feature. simd-is-enabled = [ ] wasm-bindgen = [ "instant/wasm-bindgen" ] -serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "parry3d-f64/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde" ] +serde-serialize = [ "nalgebra/serde-serialize", "parry3d-f64/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde" ] enhanced-determinism = [ "simba/libm_force", "parry3d-f64/enhanced-determinism" ] [lib] @@ -50,7 +50,6 @@ arrayvec = "0.5" bit-vec = "0.6" rustc-hash = "1" serde = { version = "1", features = [ "derive" ], optional = true } -erased-serde = { version = "0.3", optional = true } downcast-rs = "1.2" num-derive = "0.3" bitflags = "1" diff --git a/build/rapier3d/Cargo.toml b/build/rapier3d/Cargo.toml index b36a8c7..3dc7bea 100644 --- a/build/rapier3d/Cargo.toml +++ b/build/rapier3d/Cargo.toml @@ -26,7 +26,7 @@ simd-nightly = [ "parry3d/simd-nightly", "simba/packed_simd", "simd-is-enabled" # enabled with the "simd-stable" or "simd-nightly" feature. simd-is-enabled = [ ] wasm-bindgen = [ "instant/wasm-bindgen" ] -serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "parry3d/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde" ] +serde-serialize = [ "nalgebra/serde-serialize", "parry3d/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde" ] enhanced-determinism = [ "simba/libm_force", "parry3d/enhanced-determinism" ] [lib] @@ -50,7 +50,6 @@ arrayvec = "0.5" bit-vec = "0.6" rustc-hash = "1" serde = { version = "1", features = [ "derive" ], optional = true } -erased-serde = { version = "0.3", optional = true } downcast-rs = "1.2" num-derive = "0.3" bitflags = "1" diff --git a/src/data/mod.rs b/src/data/mod.rs index edcd326..7c49314 100644 --- a/src/data/mod.rs +++ b/src/data/mod.rs @@ -1,7 +1,6 @@ //! Data structures modified with guaranteed deterministic behavior after deserialization. pub use self::coarena::Coarena; -pub use parry::utils::MaybeSerializableData; pub mod arena; mod coarena; diff --git a/src/geometry/contact_pair.rs b/src/geometry/contact_pair.rs index f6c4989..47f6678 100644 --- a/src/geometry/contact_pair.rs +++ b/src/geometry/contact_pair.rs @@ -90,15 +90,19 @@ pub struct ContactManifoldData { pub body_pair: BodyPair, pub(crate) warmstart_multiplier: Real, // The two following are set by the constraints solver. + #[cfg_attr(feature = "serde-serialize", serde(skip))] pub(crate) constraint_index: usize, + #[cfg_attr(feature = "serde-serialize", serde(skip))] pub(crate) position_constraint_index: usize, // We put the following fields here to avoids reading the colliders inside of the // contact preparation method. /// Flags used to control some aspects of the constraints solver for this contact manifold. pub solver_flags: SolverFlags, /// The world-space contact normal shared by all the contact in this contact manifold. + #[cfg_attr(feature = "serde-serialize", serde(skip))] pub normal: Vector<Real>, /// The contacts that will be seen by the constraints solver for computing forces. + #[cfg_attr(feature = "serde-serialize", serde(skip))] pub solver_contacts: Vec<SolverContact>, } diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index 506132c..b8ef324 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -1401,11 +1401,21 @@ CCD: {:.2}ms if self.state.flags.contains(TestbedStateFlags::DEBUG) { let t = instant::now(); let physics = &self.harness.physics; + // let t = instant::now(); let bf = bincode::serialize(&physics.broad_phase).unwrap(); + // println!("bf: {}", instant::now() - t); + // let t = instant::now(); let nf = bincode::serialize(&physics.narrow_phase).unwrap(); + // println!("nf: {}", instant::now() - t); + // let t = instant::now(); let bs = bincode::serialize(&physics.bodies).unwrap(); + // println!("bs: {}", instant::now() - t); + // let t = instant::now(); let cs = bincode::serialize(&physics.colliders).unwrap(); + // println!("cs: {}", instant::now() - t); + // let t = instant::now(); let js = bincode::serialize(&physics.joints).unwrap(); + // println!("js: {}", instant::now() - t); let serialization_time = instant::now() - t; let hash_bf = md5::compute(&bf); let hash_nf = md5::compute(&nf); |
