Skip to content

Repository files navigation

crates.io

Build status crates.io crates.io

Website | Documentation


2D and 3D physics engines for the Rust programming language.


What is Rapier?

Rapier is a set of 2D and 3D physics engines for games, animation, and robotics. These crates are rapier2d, rapier3d, rapier2d-f64, and rapier3d-f64. They are written with the Rust programming language, by the Dimforge organization. It is forever free and open-source!

Getting started

The easiest way to get started with Rapier is to:

  1. Read the user-guides.
  2. Play with the examples: cargo run --release --bin all_examples2 and cargo run --release --bin all_examples3. Their source code are available on the examples2d/ and examples3d/ directory.
  3. Don't hesitate to ask for help on Discord, or by opening an issue on GitHub.

Performance

SIMD-batched constraint solving and contact processing are always on: the solver processes 4 contact manifolds per instruction, falling back to scalar code on targets without SIMD support. For performance-sensitive applications, also enable:

  • parallel — multithreading of the whole physics step (broad phase, narrow phase, solver) through rayon. On CPUs with heterogeneous cores (Apple silicon, Intel hybrid), also call PhysicsPipeline::set_dedicated_thread_pool(None) to run the step on a pool sized to the performance cores only: the solver's barrier-paced stages otherwise run at the speed of the slowest (efficiency) core.
rapier3d = { version = "*", features = ["parallel"] }

Python bindings

Python bindings are under development. They ship as four PyPI packages — rapier2d, rapier3d, rapier2d-f64, rapier3d-f64 — one per (dimension, scalar) flavor. See python/README.md for how to build the bindings, the docs, and the testbed from a checkout, and python/docs/ for the API documentation.

AI coding disclaimer and policy

AI coding is extensively used for the implementation and maintenance of the following crates: mjcf-rs, rapier3d-mjcf, as well as the Python bindings (python/rapier-py*), including their tests, examples, and docs.

We actively use AI assistance (with human reviews) for the following tasks:

  • Documentation generation.
  • Changelogs generation.
  • Tests generation.
  • CI configuration and scripts.

We accept contributions involving AI coding as long as:

  • They are verified to work properly by a human.
  • The code quality is up to human-written code standards.
  • Include non-regression tests whenever applicable (which itself can be AI-generated).

Resources and discussions

  • Dimforge: See all the open-source projects we are working on! Follow our announcements on our blog.
  • User guide: Learn to use Rapier in your project by reading the official User Guides.
  • Discord: Come chat with us, get help, suggest features, on Discord!
  • NPM packages: Check out our NPM packages for Rapier, if you need to use it with JavaScript/Typescript.

Please make sure to familiarize yourself with our Code of Conduct and our Contribution Guidelines before contributing or participating in discussions with the community.

About

2D and 3D physics engines focused on performance.

Resources

Code of conduct

Contributing

Stars

5.6k stars

Watchers

54 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages