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.

Implementations on Foreign Types§

Source§

impl IsMatrix for Mat4

Implementors§