[](https://crates.io/crates/directx_math)
[](https://docs.rs/directx_math)
[](https://github.com/aloucks/directx_math/actions?query=workflow%3Atests)
# DirectXMath for Rust
A rust translation of [DirectXMath], a SIMD linear algebra library for use in games and graphics apps.
✔️ = Implemented, ❌ = Not yet implemented, 🚧 = In progress
## Implementation status
| Vector | ✔️ |
| Vector 2D | ✔️ |
| Vector 3D | ✔️ |
| Vector 4D | ✔️ |
| Quaternion | ✔️ |
| Matrix | ✔️ |
| Streaming Transforms | ❌ |
| Color | ❌ |
| Load/Store/Accessors | ✔️ † |
| Plane | ✔️ |
| Collision | ✔️ |
| Documentation | ✔️ †† |
† Some alternate forms of the load/store operations are not yet implemented.
†† Most documentation has been ported and all functions have links to the official [DirectXMath documentation].
## SIMD intrinsics
| ✔️ | ❌ (will fallback to no-intrinsics) | ✔️ |
Intrinsics may be disabled with the `no_intrinsics` feature. This is the implicit behavior
if SIMD intrinsics are not available on the target architecture.
Note that only `sse` and `sse2` are enabled by default for `x86` and `x86-64` targets.
The `sse3`, `sse4.1`, `avx`, `fma`, and `avx2` intrinsics may be enabled via [CPU target features].
### Example: enable all `x86/64` intrinsics
RUSTFLAGS="-C target-feature=+sse3,+sse4.1,+avx,+fma,+avx2" cargo build
## License
* [DirectXMath] is Copyright (c) Microsoft Corporation.
* DirectXMath for Rust is an independent translation and not affiliated with Microsoft Corporation.
* MIT license ([LICENSE-MIT] or http://opensource.org/licenses/MIT)
[LICENSE-MIT]: LICENSE-MIT
[DirectXMath]: https://github.com/microsoft/DirectXMath
[DirectXMath documentation]: https://docs.microsoft.com/en-us/windows/win32/dxmath/ovw-xnamath-reference
[CPU target features]: https://doc.rust-lang.org/reference/attributes/codegen.html#the-target_feature-attribute