[−][src]Crate ultraviolet
ultraviolet
This is a crate to do basic, computer-graphics-related, linear algebra, but fast, by
taking full advantage of SIMD. To do this, it uses an "SoA" (Structure of Arrays) architecture
such that each Wec
(wide-vec) actually contains the data for 4 Vec
s and will do any operation
on all 4 of the vector 'lanes' at the same time. Doing this is potentially much (factor of 10)
faster than an "AoS" (Array of Structs) layout, as all current Rust linear algebra libraries do.
However, algorithms must be carefully architected to take full advantage of this, and doing so
can be easier said than done, especially if your algorithm involves significant branching.
This crate is currently being dogfooded in my ray tracer rayn
,
and it does what I need it to do.
If it's missing something you need it to do, bug me on the GitHub issue tracker and/or Rust
community discord server (I'm Fusha there) and I'll try to add it for you :)
Re-exports
pub use bivec::*; |
pub use lerp::*; |
pub use mat::*; |
pub use rotor::*; |
pub use vec::*; |
pub use wide; |
Modules
bivec | |
lerp | |
mat | |
rotor | A rotor can be thought of in multiple ways, the first of which
is that a rotor is the result of the 'geometric product' of two vectors,
denoted for two vectors |
vec |
Structs
f32x4 |