Crate vek[][src]

Generic 2D-3D math swiss army knife for game engines, with SIMD support and focus on convenience.

See the wiki for an overview, FAQ, guides, and other info.

This crate is still in its beta days! The public API is quite close to being stable, but it hasn't been battle-tested enough.
Issues and bug reports are very welcome!

Cargo features

  • vec8, vec16, vec32, vec64, rgba, rgb, uvw, uv Enable these types. Other types are always enabled for the sake of doc-tests.
  • repr_simd enables Nightly Rust's repr_simd and simd_ffi features, and unlock SIMD versions of all appropriate types (though repr_simd modules). On Stable, this feature has no effect.
  • serde makes vectors and matrices derive Serialize and Deserialize.
  • image makes color vectors implement the Pixel trait from the image crate.
  • x86intrin enables x86 intrinsics through the x86intrin crate. vek doesn't directly depend on it because it won't compile on Stable and there's no way (as of this writing) to selectively depend on a crate based on the rustc version, not even via build scripts.


This crate is #![no_std].


pub use ops::*;
pub use vec::*;
pub use mat::*;
pub use quaternion::*;
pub use transition::*;
pub use transform::*;
pub use bezier::*;
pub use geom::*;



Low-order (quadratic and cubic) Bézier curves.


Common and trivial geometric primitives.


Matrix types.


Operations defined by this crate, such as MulAdd, Lerp, Clamp, and Wrap.


Quaternions are a convenient representation for rotations in 3D spaces.


A convenient position + orientation + scale container, backed by two Vec3 and a Quaternion.


Convenience structures for representing a transition from one value to another.


Vector types.