#quaternion #simd #geometry #gamedev

geo-nd

Traits and types particularly for 2D and 3D geometry with implementations for [float] and optionally SIMD

4 releases

0.5.0 Feb 18, 2023
0.1.5 Jan 25, 2023
0.1.3 Sep 6, 2021
0.1.1 Jun 22, 2021

#74 in Rendering

Download history 265/week @ 2023-11-20 76/week @ 2023-11-27 31/week @ 2023-12-04 15/week @ 2023-12-11 179/week @ 2023-12-18 527/week @ 2023-12-25 161/week @ 2024-01-08 1435/week @ 2024-01-15 179/week @ 2024-01-22 477/week @ 2024-01-29 304/week @ 2024-02-05 920/week @ 2024-02-12 440/week @ 2024-02-19 556/week @ 2024-02-26 149/week @ 2024-03-04

2,078 downloads per month
Used in 3 crates

MIT/Apache

135KB
2.5K SLoC

geo-nd

A collection of vector, matrix and quaternion types and traits for Rust, particularly aimed at 2D, 3D and OpenGL/Vulkan applications, where the elements use arrays and slices of floats.

The usage model in 3D graphics is through ownership of large arrays of floats by the application, encompassing sets of vertices and matrices, with the library enabling in-place operations on those vertices and matrices.

The library takes advantage of the developiong core_simd crate to provide architecture-specific implementations, without attempting to support architectural SIMD implementations within this crate.

This crate is in alpha; it is used in a small number of applications, and the functionality is mature, but the API may undergo some changes in the near future (through Q3 2023) to ensure high performance OpenGL and Vulkan operation while maintaining simplicity of operation for other applications.

Usage

Add this to your Cargo.toml:

[dependencies]
geo-nd = "0.1.2"

Features

NOTE Until core_simd is part of std or on crates.io the following does not work - the dependency in the geo-nd/Cargo.toml for core_simd must be commented out on crates.io; so a locally modified clone of this crate is required until that point.

This crate can be used with the upcoming core_simd crate by enabling the default simd feature. Use this in Cargo.toml:

[dependencies.geo-nd]
version = "0.1"
features = ["simd"]

Releases

Release notes are available in RELEASES.md.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0.5–1.2MB
~26K SLoC