32 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.23.0 - 2023-02-22
Breaking changes
- When the
scalar-mathfeature is enabled the vector mask type forVec3Awas changed fromBVec3toBVec3A.
Added
- Added
copysignmethod to signed vector types.
0.22.0 - 2022-10-24
Breaking changes
-
Added
u32implementation ofBVec3AandBVec4when SIMD is not available. These are used instead of aliasing to theboolimplementations. -
Removed
Add,Sub, and scalarMulimplementations from affine types as they didn't make sense on these types. -
Removed deprecated
const_*macros. These have been replaced byconst fnmethods.
Fixed
-
Fixed
negandsignumto consistently handle negative zero across multiple platforms. -
Removed
register_attrfeature usage for SPIR-V targets.
Added
-
Added missing
Serialize,DeserializeandPartialEqimplementations. -
Added
Sum<Self>andProduct<Self>implementations for all vector, matrix and quaternion types. -
Added 4x4 matrix methods
look_to_lhandlook_to_rh. These were previously private. -
Added
dot_into_vecmethods to vector which returns the result of the dot product splatted to all vector lanes. -
Added
is_negative_bitmaskto vector types which returns au32of bits for each negative vector lane. -
Added
splatmethod andTRUEandFALSEconstants to allBVectypes. -
Added
from_mat3amethods toAffine2,Mat2,Mat4andQuattypes.
Changed
-
Disable
serdedefault features. -
Made
to_cols_array,to_cols_array_2d, andfrom_diagonalmethodsconst fn.
0.21.3 - 2022-08-02
Fixed
- Fixed
glam_assertbeing too restrictive in matrix transform point and transform vector methods.
Added
- Added experimental
core-simdfeature which enables SIMD support via the unstablecore::simdmodule.
Changed
- Derive from
PartialEqandEqinstead of providing a trait implementation for all non SIMD types.
0.21.2 - 2022-06-25
Fixed
-
Restore missing
$crate::prefix in deprecatedconst_*macros. -
Fixed some performance regressions in affine and matrix determinant and inverses due to lack of inlining.
-
Fixed some performance regressions in the SSE2
Vec3AtoVec3from conversion.
Added
- Implemented
BitXorandBitXorAssigntraits forboolvectors.
0.21.1 - 2022-06-22
Fixed
- Fix compilation when FMA support is enabled.
0.21.0 - 2022-06-22
Breaking changes
-
Minimum Supported Version of Rust bumped to 1.58.1 to allow
constpointer dereferences in constant evaluation. -
The
abs_diff_eqmethod onMat2andDMat2now takesotherby value instead of reference. This is consistent with the other matrix types. -
The
AsMutandDereftrait implementations onQuatandDQuatwas removed. Quaternion fields are now public. -
The
AsReftrait implementations were removed fromBVec2,BVec3,BVec3A,BVec4andBVec4A.
Added
-
NEG_ONEconstant was added to all signed vector types. -
NEG_X,NEG_Y,NEG_ZandNEG_Wnegative axis vectors were added to signed vector types. -
The
rotateandfrom_anglemethods were added toVec2andDVec2.from_anglereturns a 2D vector containing[angle.cos(), angle.sin()]that can be used torotateanother 2D vector. -
The
from_arrayconstfunction was added to all vector types.
Changed
-
Source code is now largely generated. This removes most usage of macros internally to improve readability. There should be no change in API or behavior other than what is documented here.
-
Many methods have been made
const fn:new,splat,from_slice,to_arrayandextendon vector typesfrom_cols,from_cols_array,from_cols_array_2d,from_cols_sliceon matrix typesfrom_xyzwandfrom_arrayon quaternion typesfrom_colson affine types
-
The
constnew macros where deprecated.
Removed
- Deleted deprecated
TransformRTandTransformSRTtypes.
0.20.5 - 2022-04-12
Fixed
- Fixed a bug in the scalar implementation of 4D vector
max_elementmethod where thewelement check was incorrect.
0.20.4 - 2022-04-11
Fixed
- Fixed a bug with quaternion
slerpwith a rotation of tau.
0.20.3 - 2022-03-28
Added
- Added
to_array()toQuatandDQuat. - Added
mul_addmethod to all vector types - note that this will be slower without hardware support enabled. - Added the
fast-mathflag which will sacrifice some float determinism for speed.
Fixed
- Fixed a bug in the
sse2andwasm32implementations ofMat4::determinant().
0.20.2 - 2021-12-20
Fixed
- Fixed SPIR-V build which was broken due to a typo.
0.20.1 - 2021-11-23
Added
- Added the
from_rotation_arc_2d()method toQuatandDQuatwhich will return a rotation between two 2D vectors around the z axis. - Added impl of
Negoperator for matrix types. - Added
cudafeature which forcesglamtypes to match cuda's alignment requirements.
Changed
- The
QuatandDQuatmethodsfrom_rotation_arc()andfrom_rotation_arc_colinear()are now available inno_std. - The
Vec3andDVec3methodsany_orthogonal_vector(),any_orthonormal_vector()andany_orthonormal_pair()are now available inno_std. - Added
repr(C)attribute to affine types.
Removed
- Removed deprecated
as_f32(),as_f64(),as_i32()andas_u32()methods.
0.20.0 - 2021-11-01
Breaking changes
- Minimum Supported Version of Rust bumped to 1.52.1 for an update to the
mintcrate.
Added
- Added implementations for new
IntoMinttrait from themintcrate. - Added
mintconversions forMat3A. - Added
as_vec3acast methods to vector types.
0.19.0 - 2021-10-05
Breaking changes
- Removed truncating vector
Fromimplementations. Use.truncate()or swizzle methods instead.
Added
- Added
Not,Shl,Shr,BitAnd,BitOrandBitXorimplementations for allIVecandUVecvector types. - Added
NANconstant for all types. - Documented
glam's architecture.
Changed
SumandProducttraits are now implemented inno_stdbuilds.
0.18.0 - 2021-08-26
Breaking changes
- Minimum Supported Version of Rust bumped to 1.51.0 for
wasm-bindgen-testandrustdocaliassupport.
Added
- Added
wasm32SIMD intrinsics support. - Added optional support for the
rkyvserialization crate. - Added
RemandRemAssignimplementations for all vector types. - Added quaternion
xyz()method for returning the vector part of the quaternion. - Added
From((Scalar, Vector3))for 4D vector types.
Changed
- Deprecated
as_f32(),as_f64(),as_i32()andas_u32()methods in favor of more specific methods such asas_vec2(),as_dvec2(),as_ivec2()andas_uvec2()and so on.
0.17.3 - 2021-07-18
Fixed
- Fix alignment unit tests on non x86 platforms.
0.17.2 - 2021-07-15
Fixed
- Fix alignment unit tests on i686 and S390x.
0.17.1 - 2021-06-29
Added
- Added
serdesupport forAffine2,DAffine2,Affine3AandDAffine3.
0.17.0 - 2021-06-26
Breaking changes
- The addition of
AddandSubimplementations of scalar values for vector types may create ambiguities with existing calls toaddandsub. - Removed
From<Mat3>implementation forMat2andFrom<DMat3>forDMat2. These have been replaced byMat2::from_mat3()andDMat2::from_mat3(). - Removed
From<Mat4>implementation forMat3andFrom<DMat4>forDMat3. These have been replaced byMat3::from_mat4()andDMat3::from_mat4(). - Removed deprecated
from_slice_unaligned(),write_to_slice_unaligned(),from_rotation_mat4andfrom_rotation_ypr()methods.
Added
- Added
col_mut()method which returns a mutable reference to a matrix column to all matrix types. - Added
AddAssign,MulAssignandSubAssignimplementations for all matrix types. - Added
AddandSubimplementations of scalar values for vector types. - Added more
glam_assert!checks and documented methods where they are used. - Added vector projection and rejection methods
project_onto(),project_onto_normalized(),reject_from()andreject_from_normalized(). - Added
Mat2::from_mat3(),DMat2::from_mat3(),Mat3::from_mat4(),DMat3::from_mat4()which create a smaller matrix from a larger one, discarding a final row and column of the input matrix. - Added
Mat3::from_mat2(),DMat3::from_mat2(),Mat4::from_mat3()andDMat4::from_mat3()which create an affine transform from a smaller linear transform matrix.
Changed
- Don't support
AsRefandAsMuton SPIR-V targets. Also removed SPIR-V support for some methods that usedas_ref(), includinghash(). Not a breaking change as these methods would not have worked anyway.
Fixed
- Fixed compile time alignment checks failing on i686 targets.
0.16.0 - 2021-06-06
Breaking changes
sprirv-stddependency was removed, rust-gpu depends on glam internally again for now.- Added
must_useattribute to allinverse(),normalize(),try_normalize(),transpose()andconjugate()methods.
Added
- Added
fract()method to float vector types which return a vector containingself - self.floor(). - Added optional support for the
approxcrate. Note that all glam types implement their ownabs_diff_eq()method without requiring theapproxdependency.
0.15.2 - 2021-05-20
Added
- Added
from_cols()methods to affine types. - Added methods for reading and writing affine types from and to arrays and
slices, including
from_cols_array(),to_cols_array(),from_cols_array_2d(),to_cols_array_2d(),from_cols_slice()andwrite_cols_to_slice(). - Added
core::fmt::Displaytrait implementations for affine types. - Added
core::ops::Add,core::ops::Mulscalar andcore::ops::Subtrait implementations for affine types. - Added
from_array()methods to quaternion types.
Changed
- Renamed vector and quaternion
from_slice_unaligned()andwrite_to_slice_unaligned()methods tofrom_slice()andwrite_to_slice(). - Removed usage of
_mm_rcp_psfrom SSE2 implementation ofQuat::slerpas this instruction is not deterministic between Intel and AMD chips.
0.15.1 - 2021-05-14
Changed
- Disable
const_assert_eq!size and alignment checks for SPIR-V targets.
0.15.0 - 2021-05-14
Breaking changes
- Removed
PartialOrdandOrdtrait implementations for allglamtypes. - Removed deprecated
zero(),one(),unit_x(),unit_y(),unit_z(),unit_w(),identity()andMat2::scale()methods. - Remove problematic
QuatFromtrait conversions which would allow creating a non-uniform quaternion without necessarily realising, including fromVec4,(x, y, z, w)and[f32; 4].
Added
- Added
EulerRotenum for specifying Euler rotation order andQuat::from_euler(),Mat3::from_euler()andMat4::from_euler()which support specifying a rotation order and angles of rotation. - Added
Quat::to_euler()method for extracting Euler angles. - Added
Quat::from_vec4()which is an explicit method for creating a quaternion from a 4D vector. The method does not normalize the resulting quaternion. - Added
Mat3Atype which usesVec3Acolumns. It is 16 byte aligned and contains internal padding but it generally faster thanMat3for most operations if SIMD is available. - Added 3D affine transform types
Affine3AandDAffine3. These are more efficient than usingMat4andDMat4respectively when working with 3D affine transforms. - Added 2D affine transform types
Affine2andDAffine2. These are more efficient than usingMat3andDMat3respectively when working with 2D affine transforms. - Added
Quat::from_affine3()to create a quaternion from an affine transform rotation. - Added explicit
to_array()method to vector types to better match the matrix methods.
Changed
- Deprecated
Quat::from_rotation_ypr(),Mat3::from_rotation_ypr()andMat4::from_rotation_ypr()in favor of newfrom_euler()methods. - Deprecated
Quat::from_rotation_mat3()andQuat::from_rotation_mat4()in favor of newfrom_mat3andfrom_mat4methods. - Deprecated
TransformSRTandTransformRTwhich are under thetransform-typesfeature. These will be moved to a separate experimental crate. - Updated
spirv-stddependency version to0.4.0-alpha7.
0.14.0 - 2021-04-09
Breaking changes
- Minimum Supported Version of Rust bumped to 1.45.0 for the
spirv-stddependency.
Added
- Added
AXES[]constants to all vector types. These are arrays containing the unit vector for each axis. - Added quaternion
from_scaled_axisandto_scaled_axismethods.
Changed
- Updated dependency versions of
bytemuckto1.5,randto0.8,rand_xoshiroto0.6andspirv-stdto0.4.0-alpha4.
0.13.1 - 2021-03-24
Added
- Added vector
clamp()functions. - Added matrix column and row accessor methods,
col()androw(). - Added SPIR-V module and dependency on
spirv-stdfor the SPIR-V target. - Added matrix truncation from 4x4 to 3x3 and 3x3 to 2x2 via
Fromimpls.
Changed
- Documentation corrections and improvements.
0.13.0 - 2021-03-04
Breaking Changes
- The behavior of the 4x4 matrix method
transform_point3()was changed to not perform the perspective divide. This is an optimization for use with affine transforms where perspective correction is not required. Theproject_point3()method was added for transforming points by perspective projections. - The 3x3 matrix
from_scale()method was changed to create a affine transform containing a 2-dimensional non-uniform scale to be consistent with the 4x4 matrix version. Thefrom_diagonal()method can be used to create a 3x3 scale matrix. - The 3x3 matrix methods
transform_point2_as_vec3a,transform_vector2_as_vec3aandmul_vec3_as_vec3awere unintentionallypuband are no longer publicly accessible.
Added
- Added
Vec2::X,Vec4::Wetc constants as a shorter versions ofunit_x()and friends. - Added
ONEconstants for vectors. - Added
IDENTITYconstants forMat2,Mat3,Mat4andQuat. - Added
ZEROconstant for vectors and matrices. - Added
clamp_length(),clamp_length_max(), andclamp_length_minmethods forf32andf64vector types. - Added
try_normalize()andnormalize_or_zero()for all real vector types. - Added
from_diagonal()methods to all matrix types for creating diagonal matrices from a vector. - Added
angle_between(),from_rotation_arc()andfrom_rotation_arc_colinear()to quaternion types. - Added quaternion
inverse()which assumes the quaternion is already normalized and returns the conjugate. - Added
from_translation()andfrom_angle()methods to 3x3 matrix types. - Added
project_point3()method to 4x4 matrix types. This method is for transforming 3D vectors by perspective projection transforms. - Added
EqandHashimpls for integer vector types.
Changed
- Deprecated
::unit_x/y/z(),::zero(),::one(),::identity()functions in favor of constants.
0.12.0 - 2021-01-15
Breaking Changes
Vec2Mask,Vec3MaskandVec4Maskhave been replaced byBVec2,BVec3,BVec3A,BVec4andBVec4A. These types are used by some vector methods and are not typically referenced directly.
Added
- Added
f64primitive type support- vectors:
DVec2,DVec3andDVec4 - square matrices:
DMat2,DMat3andDMat4 - a quaternion type:
DQuat
- vectors:
- Added
i32primitive type support- vectors:
IVec2,IVec3andIVec4
- vectors:
- Added
u32primitive type support- vectors:
UVec2,UVec3andUVec4
- vectors:
- Added
boolprimitive type support- vectors:
BVec2,BVec3andBVec4
- vectors:
Removed
build.rshas been removed.
0.11.3 - 2020-12-29
Changed
- Made
Vec3repr(simd)forspirvtargets.
Added
- Added
From<(Vec2, f32)>forVec3andFrom<(Vec3, f32)forVec4.
0.11.2 - 2020-12-04
Changed
- Compilation fixes for Rust 1.36.0.
0.11.1 - 2020-12-03
Added
- Added support for the Rust GPU SPIR-V target architecture.
0.11.0 - 2020-11-26
Added
- Added
is_finitemethod to all types which returnstrueif, and only if, all contained elements are finite. - Added
expandpowfmethods for all vector types.
Changed
- The
is_nanmethod now returns aboolto match the newis_finitemethod and to be consistent with the same methods on thef32andf64primitive types. - Renamed
is_nanwhich returns a vector mask tois_nan_mask. - Don't use the
cfgdefinitions added bybuild.rsfor defining structs asrust-analyzeris not aware of them.
Removed
- Removed deprecated accessor methods.
0.10.2 - 2020-11-17
Changed
- Deprecated element accessor members
.x(),.x_mut(),.set_x(), etc. on vector and quaternion types. - Deprecated column accessor members
.x_axis(),.x_axis_mut(),.set_x_axis(), etc. on matrix types.
0.10.1 - 2020-11-15
Added
- Added the
Vec2::perpmethod which returns aVec2perpendicular toself.
Changed
Vec2andVec3types were changed to use public named fields for.x,.y, and.zinstead of accessors.Quat,Vec3AandVec4implementDerefandDerefMutfor the newXYZandXYZWstructs to emulate public named field access.Mat3andMat4had their axis members made public instead of needing accessors.Mat2implementsDerefandDerefMutfor the newXYAxesstruct to emulate public named field access.
Removed
- Removed deprecated
length_reciprocalandsignmethods.
Fixed
- Adding
glamas ano_stddependency should now work as expected.
0.10.0 - 2020-10-31
Breaking Changes
- Changed the return type of
Vec4::truncatefromVec3AtoVec3.
Added
- Added
Fromimplementations to truncate to narrower vector types, e.g.Vec4toVec3A,Vec3andVec2and fromVec3AandVec3toVec2. - Added swizzles for
Vec4,Vec3A,Vec3andVec2. These can be used to reorder elements in the same type and also to create larger or smaller vectors from the given vectors elements. - Added
QuatoperatorsAdd<Quat>,Sub<Quat>,Mul<f32>andDiv<f32. These are used by other crates for interpolation quaternions along splines. Note that these operations will not return unit length quaternions, thus the results must be normalized before performing otherQuatoperations. - Added
Mat4::transform_point3aandMat4::transform_vector3a. - Added
AsRef<[f32; 9]>andAsMut<[f32; 9]>trait implementations toMat3. - Added optional
bytemucksupport primarily for casting types to&[u8]. - Added support for compiling with
no_stdby disabling the defaultstdfeature and adding thelibmfeature. - Added
distanceanddistance_squaredmethods toVec2,Vec3,Vec3AandVec4.
0.9.5 - 2020-10-10
Added
glamuses SSE2 for some types which prevents constructor functions can not be madeconst fn. To work around this limitation the following macro functions have been added to support creatingconstvalues ofglamtypes:const_mat2,const_mat3,const_mat4,const_quat,const_vec2,const_vec3,const_vec3aandconst_vec4.- Added
is_nanmethods toVec2,Vec3,Vec3AandVec4which return a mask.
Changed
- Renamed the vector
reciprocalandlength_reciprocalmethods torecipandlength_recipto match the Rust standard library naming. The old methods have been deprecated. - Renamed the vector
signmethods tosignummatch the Rust standard library naming. The new methods now check forNAN. The old methods have been deprecated. - Added SSE2 optimized implementations of
Mat4::determinantandMat4::inverse.
Removed
- Removed deprecated function
Mat4::perspective_glu_rh.
0.9.4 - 2020-08-31
Fixed
- Fixed
Mat4::transform_point3to account for homogeneous w coordinate. Previously this would have been incorrect when the resulting homogeneous coordinate was not 1.0, e.g. when transforming by a perspective projection. - Fixed
Mat3::transform_point2to account for homogeneous z coordinate.
0.9.3 - 2020-08-11
Added
- Added
Mat4::perspective_rh.
0.9.2 - 2020-07-09
Added
- Added
Mat3::mul_vec3aandQuat::mul_vec3a.
Changed
- Changed
Quat::mul_vec3to accept and returnVec3instead ofVec3A.
0.9.1 - 2020-07-01
Added
- Added
Mat3 * Vec3Aimplementation. - Added
Vec3Abenches.
Changed
- Some documentation improvements around the new
Vec3Atype.
0.9.0 - 2020-06-28
Added
Vec3has been split into scalarVec3and 16 byte alignedVec3Atypes. Only theVec3Atype currently uses SIMD optimizations.Vec3Maskhas been split into scalarVec3Maskand 16 byte alignedVec3AMasktypes.- Added
mutcolumn accessors to all matrix types, e.g.Mat2::x_axis_mut(). - Added
Fromtrait implementations forVec3AMaskandVec4Maskto__m128.
Changed
- The
Mat3type is using the scalarVec3type for storage. - Simplified
Debugtrait output forQuat,Vec4andVec3A.
Removed
- Removed the
packed-vec3feature flag as it is now redundant.
0.8.7 - 2020-04-28
Added
- Added
Quat::slerp- note that this uses asinapproximation. - Added
angle_betweenmethod forVec2andVec3. - Implemented
Debug,Display,PartialEq,Eq,PartialOrd,Ord,Hash, andAsReftraits forVec2Mask,Vec3MaskandVec4Mask. - Added conversion functions from
Vec2Mask,Vec3MaskandVec4Maskto an array of[u32]. - Added
build.rsto simplify conditional feature compilation.
Changed
- Increased test coverage.
Removed
- Removed
cfg-ifdependency.
0.8.6 - 2020-02-18
Added
- Added the
packed-vec3feature flag to disable using SIMD types forVec3andMat3types. This avoids wasting some space due to 16 byte alignment at the cost of some performance. - Added
x_mut,y_mut,z_mut,w_mutwhere appropriate toVec2,Vec3andVec4. - Added implementation of
core::ops::Indexandcore::ops::IndexMutforVec2,Vec3andVec4.
Changed
- Merged SSE2 and scalar
Vec3andVec4implementations into single files using thecfg-ifcrate.
0.8.5 - 2020-01-02
Added
- Added projection functions
Mat4::perspective_lh,Mat4::perspective_infinite_lh,Mat4::perspective_infinite_reverse_lh,Mat4::orthgraphic_lhandMat4::orthographic_rh. - Added
round,ceilandfloormethods toVec2,Vec3andVec4.
0.8.4 - 2019-12-17
Added
- Added
Mat4::to_scale_rotation_translationfor extracting scale, rotation and translation from a 4x4 homogeneous transformation matrix. - Added
cargo-denyGitHub Action.
Changed
- Renamed
Quat::newtoQuat::from_xyzw.
0.8.3 - 2019-11-27
Added
- Added
Mat4::orthographic_rh_gl.
Changed
- Renamed
Mat4::perspective_glu_rhtoMat4::perspective_rh_gl. - SSE2 optimizations for
Mat2::determinant,Mat2::inverse,Mat2::transpose,Mat3::transpose,Quat::conjugate,Quat::lerp,Quat::mul_vec3,Quat::mul_quatandQuat::from_rotation_ypr. - Disabled optimizations to
Mat4::transform_point3andMat4::transform_vector3as they are probably incorrect and need investigating. - Added missing
#[repr(C)]toMat2,Mat3andMat4. - Benchmarks now store output of functions to better estimate the cost of a function call.
Removed
- Removed deprecated functions
Mat2::new,Mat3::newandMat4::new.
0.8.2 - 2019-11-06
Changed
glam_assert!is no longer enabled by default in debug builds, it can be enabled in any configuration using theglam-assertfeature or in debug builds only using thedebug-glam-assertfeature.
Removed
glam_assert!'s checkinglerpis bounded between 0.0 and 1.0 and that matrix scales are non-zero have been removed.
0.8.1 - 2019-11-03
Added
- Added
Displaytrait implementations forMat2,Mat3andMat4.
Changed
- Disabled
glam's SSE2sin_cosimplementation - it became less precise for large angle values. - Reduced the default epsilon used by the
is_normalized!macro fromstd::f32::EPSILONto1e-6.
0.8.0 - 2019-10-14
Removed
- Removed the
approxcrate dependency. Eachglamtype has anabs_diff_eqmethod added which is used by unit tests for approximate floating point comparisons. - Removed the
Angletype. All angles are nowf32and are expected to be in radians. - Removed the deprecated
Vec2b,Vec3bandVec4btypes and themaskmethods onVec2Mask,Vec3MaskandVec4Mask.
Changed
- The
randcrate dependency has been removed from default features. This was required for benchmarking but a simple random number generator has been added to the benchessupportmodule instead. - The
Fromtrait implementation converting between 1D and 2Df32arrays and matrix types have been removed. It was ambiguous how array data would map to matrix columns so these have been replaced with explicit methodsfrom_cols_arrayandfrom_cols_array_2d. - Matrix
newmethods have been renamed tofrom_colsto be consistent with the other methods that create matrices from data. - Renamed
Mat4::perspective_glutoMat4::perspective_glu_rh.
0.7.2 - 2019-09-22
Fixed
- Fixed incorrect projection matrix methods
Mat4::look_at_lhandMat4::look_at_rh.
Added
- Added support for building infinite projection matrices, including both
standard and reverse depth
Mat4::perspective_infinite_rhandMat4::perspective_infinite_rh. - Added
Vec2Mask::new,Vec3Mask::newandVec4Mask::newmethods. - Implemented
std::opsBitAnd,BitAndAssign,BitOr,BitOrAssignandNottraits forVec2Mask,Vec3MaskandVec4Mask. - Added method documentation for
Vec4andVec4Masktypes. - Added missing
serdeimplementations forMat2,Mat3andMat4. - Updated
randandcriterionversions.
0.7.1 - 2019-07-08
Fixed
- The SSE2 implementation of
Vec4dotwas missing a shuffle, meaning thedot,length,length_squared,length_reciprocalandnormalizemethods were sometimes incorrect.
Added
- Added the
glam_assertmacro which behaves like Rust'sdebug_assertbut can be enabled separately todebug_assert. This is used to perform asserts on correctness. - Added
is_normalizedmethod toVec2,Vec3andVec4.
Changed
- Replaced usage of
std::mem::uninitializedwithstd::mem::MaybeUninit. This change requires stable Rust 1.36. - Renamed
Vec2btoVec2Mask,Vec3btoVec3MaskandVec4btoVec4Mask. Old names are aliased to the new name and deprecated. - Deprecate
VecNMaskmaskmethod, use newbitmaskmethod instead - Made fallback version of
VecNMasktypes the same size and alignment as the SIMD versions. - Added
Defaultsupport toVecNMasktypes, will add more common traits in the future. - Added
#[inline]tomat2,mat3andmat4functions.
0.7.0 - 2019-06-28
Added
- Added
Mat2into[f32; 4],Mat3into[f32; 9]andMat4into[f32; 16].
Removed
- Removed
impl Mul<&Vec2> for Mat2andimpl Mul<&Vec3> for Vec3as these don't exist for any other types.
0.6.1 - 2019-06-22
Changed
Mat2now uses aVec4internally which gives it some performance improvements when SSE2 is available.
0.6.0 - 2019-06-13
Changed
- Switched from row vectors to column vectors
- Vectors are now on the right of multiplications with matrices and quaternions.