Skip to main content

IsMatrix

Trait IsMatrix 

Source
pub trait IsMatrix {
    // Required method
    fn to_scale_rotation_translation_or_id(&self) -> (Vec3, Quat, Vec3);
}
Expand description

Additional/replacement methods for glam matrix types.

These are required because naga (wgpu’s translation layer) doesn’t like certain contstants like f32::INFINITY or f32::NaN, which cause errors in naga’s WGSL output.

See this issue and crate::linkage::test for more info.

Required Methods§

Source

fn to_scale_rotation_translation_or_id(&self) -> (Vec3, Quat, Vec3)

Extracts scale, rotation and translation from self. The input matrix is expected to be a 3D affine transformation matrix otherwise the output will be invalid.

Will return (Vec3::ONE, Quat::IDENTITY, Vec3::ZERO) if the determinant of self is zero or if the resulting scale vector contains any zero elements when glam_assert is enabled.

This is required instead of using glam::Mat4::to_scale_rotation_translation, because that uses f32::signum, which compares against f32::NAN, which causes an error in naga’s WGSL output.

See this issue and crate::linkage::test for more info.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl IsMatrix for Mat4

Implementors§