Skip to content

shz::xmtrx

Markdown

Static structure around the 4x4 XMTRX FP register back-bank.

This structure provides the C++ bindings to the XMTRX API as a series of static member functions wrapping the C API.

  • Header: #include <sh4zam/shz_xmtrx.hpp> (source)
static float read(reg xf) noexcept

C++ wrapper around shz_xmtrx_read().

Calls: shz_xmtrx_read(), shz_xmtrx_reg()

static void write(reg xf, float value) noexcept

C++ wrapper around shz_xmtrx_write().

Calls: shz_xmtrx_write(), shz_xmtrx_reg()

static vec4 read_row(unsigned int index) noexcept

C++ wrapper around shz_xmtrx_read_row().

Calls: shz_xmtrx_read_row()

static vec4 read_col(unsigned int index) noexcept

C++ wrapper around shz_xmtrx_read_col().

Calls: shz_xmtrx_read_col()

static void write_row(unsigned int index, const vec4 &vector) noexcept

C++ wrapper around shz_xmtrx_write_row().

Calls: shz_xmtrx_write_row()

static void write_col(unsigned int index, const vec4 &vector) noexcept

C++ wrapper around shz_xmtrx_write_col().

Calls: shz_xmtrx_write_col()

static void swap_rows(unsigned int index1, unsigned int index2) noexcept

C++ wrapper around shz_xmtrx_swap_rows().

Calls: shz_xmtrx_swap_rows()

static void swap_cols(unsigned int index1, unsigned int index2) noexcept

C++ wrapper around shz_xmtrx_swap_cols().

Calls: shz_xmtrx_swap_cols()

static void load(const shz_mat4x4_t &mat4) noexcept
static void load(const float cArray[16]) noexcept
static void load(const std::array< float, 16 > &array) noexcept
static void load(const shz_mat3x4_t &mat) noexcept
static void load(const shz_mat2x2_t &mat) noexcept
static void load(const shz_mat3x3_t &mat) noexcept

C++ wrapper around shz_xmtrx_load_4x4().

Calls: shz_xmtrx_load_4x4(), shz_xmtrx_load_unaligned_4x4(), shz_xmtrx_load_3x4(), shz_xmtrx_load_2x2(), shz_xmtrx_load_3x3()

static void load_transpose(const shz_mat4x4_t &mat4) noexcept
static void load_transpose(const float cArray[16]) noexcept
static void load_transpose(const std::array< float, 16 > &array) noexcept
static void load_transpose(const shz_mat3x4_t &mat) noexcept
static void load_transpose(const shz_mat3x3_t &mat) noexcept

C++ wrapper around shz_xmtrx_load_transpose_4x4().

Calls: shz_xmtrx_load_transpose_4x4(), shz_xmtrx_load_transpose_unaligned_4x4(), shz_xmtrx_load_transpose_3x4(), shz_xmtrx_load_transpose_3x3()

static void load_wxyz(const shz_mat4x4_t &mat4) noexcept

C++ wrapper around shz_xmtrx_load_wxyz_4x4().

Calls: shz_xmtrx_load_wxyz_4x4()

static void load_cols(const shz_vec4_t &c1, const shz_vec4_t &c2, const shz_vec4_t &c3, const shz_vec4_t &c4) noexcept
static void load_cols(const shz_vec3_t &c1, const shz_vec3_t &c2, const shz_vec3_t &c3, const shz_vec3_t &c4) noexcept

C++ wrapper around shz_xmtrx_load_cols_4x4().

Calls: shz_xmtrx_load_cols_4x4(), shz_xmtrx_load_cols_3x4()

static void load_rows(const shz_vec4_t &r1, const shz_vec4_t &r2, const shz_vec4_t &r3, const shz_vec4_t &r4) noexcept
static void load_rows(const shz_vec4_t &r1, const shz_vec4_t &r2, const shz_vec4_t &r3) noexcept

C++ wrapper around shz_xmtrx_load_rows_4x4().

Calls: shz_xmtrx_load_rows_4x4(), shz_xmtrx_load_rows_3x4()

static void store(shz_mat4x4_t *mat) noexcept
static void store(float cArray[16]) noexcept
static void store(shz_mat3x4_t *mat) noexcept
static void store(std::array< float, 16 > *array) noexcept
static void store(shz_mat2x2_t *mat) noexcept
static void store(shz_mat3x3_t *mat) noexcept

C++ wrapper around shz_xmtrx_store_4x4().

Calls: shz_xmtrx_store_4x4(), shz_xmtrx_store_unaligned_4x4(), shz_xmtrx_store_3x4(), shz_xmtrx_store_2x2(), shz_xmtrx_store_3x3()

static void store_transpose(shz_mat4x4_t *mat) noexcept
static void store_transpose(float cArray[16]) noexcept
static void store_transpose(std::array< float, 16 > *array) noexcept
static void store_transpose(shz_mat3x4_t *mat) noexcept
static void store_transpose(shz_mat3x3_t *mat) noexcept

C++ wrapper around shz_xmtrx_store_transpose_4x4().

Calls: shz_xmtrx_store_transpose_4x4(), shz_xmtrx_store_transpose_unaligned_4x4(), shz_xmtrx_store_transpose_3x4(), shz_xmtrx_store_transpose_3x3()

static void init_identity() noexcept

C++ wrapper around shz_xmtrx_init_identity().

Calls: shz_xmtrx_init_identity()

static void init_identity_safe() noexcept

C++ wrapper around shz_xmtrx_init_identity_safe().

Calls: shz_xmtrx_init_identity()

static void init_zero() noexcept

C++ wrapper around shz_xmtrx_init_zero().

Calls: shz_xmtrx_init_zero()

static void init_one() noexcept

C++ wrapper around shz_xmtrx_init_one().

Calls: shz_xmtrx_init_one()

static void init_fill(float value) noexcept

C++ wrapper around shz_xmtrx_init_fill().

Calls: shz_xmtrx_init_fill()

static void init_translation(float x, float y, float z) noexcept
static void init_translation(const vec3 &v) noexcept

C++ wrapper around shz_xmtrx_init_translation().

Calls: shz_xmtrx_init_translation()

static void init_scale(float x, float y, float z) noexcept
static void init_scale(const vec3 &v) noexcept

C++ wrapper around shz_xmtrx_init_scale().

Calls: shz_xmtrx_init_scale()

static void init_rotation_x(float x) noexcept

C++ wrapper around shz_xmtrx_init_rotation_x().

Calls: shz_xmtrx_init_rotation_x()

static void init_rotation_y(float y) noexcept

C++ wrapper around shz_xmtrx_init_rotation_y().

Calls: shz_xmtrx_init_rotation_y()

static void init_rotation_z(float z) noexcept

C++ wrapper around shz_xmtrx_init_rotation_z().

Calls: shz_xmtrx_init_rotation_z()

static void init_rotation_xyz(float x, float y, float z) noexcept

C++ wrapper around shz_xmtrx_init_rotation_xyz().

Calls: shz_xmtrx_init_rotation_xyz()

static void init_rotation_zyx(float z, float y, float x) noexcept

C++ wrapper around shz_xmtrx_init_rotation_zyx().

Calls: shz_xmtrx_init_rotation_zyx()

static void init_rotation_zxy(float z, float x, float y) noexcept

C++ wrapper around shz_xmtrx_init_rotation_zxy().

Calls: shz_xmtrx_init_rotation_zxy()

static void init_rotation_yxz(float y, float x, float z) noexcept

C++ wrapper around shz_xmtrx_init_rotation_yxz().

Calls: shz_xmtrx_init_rotation_yxz()

static void init_rotation(float angle, float x, float y, float z) noexcept
static void init_rotation(float angle, const vec3 &axis) noexcept

C++ wrapper around shz_xmtrx_init_rotation().

Calls: shz_xmtrx_init_rotation()

static void init_rotation_dir(float angle, const vec3 &dir) noexcept

C++ wrapper around shz_xmtrx_init_rotation_dir().

Calls: shz_xmtrx_init_rotation_dir()

static void init_diagonal(float x, float y, float z, float w) noexcept
static void init_diagonal(const vec4 &v) noexcept

C++ wrapper around shz_xmtrx_init_diagonal().

Calls: shz_xmtrx_init_diagonal()

static void init_upper_triangular(float col1, const vec2 &col2, const vec3 &col3, const vec4 &col4) noexcept

C++ wrapper around shz_xmtrx_init_upper_triangular().

Calls: shz_xmtrx_init_upper_triangular()

static void init_lower_triangular(const vec4 &col1, const vec3 &col2, const vec2 &col3, float col4) noexcept

C++ wrapper around shz_xmtrx_init_lower_triangular().

Calls: shz_xmtrx_init_lower_triangular()

static void init_symmetric_skew(float x, float y, float z) noexcept

C++ wrapper around shz_xmtrx_init_symmetric_skew().

Calls: shz_xmtrx_init_symmetric_skew()

static void init_outer_product(const vec4 &a, const vec4 &b) noexcept

C++ wrapper around shz_xmtrx_init_outer_product().

Calls: shz_xmtrx_init_outer_product()

static void init_screen(float width, float height) noexcept

C++ wrapper around shz_xmtrx_init_screen().

Calls: shz_xmtrx_init_screen()

static void init_lookat(const vec3 &eye, const vec3 &center, const vec3 &up) noexcept

C++ wrapper around shz_xmtrx_init_lookat().

Calls: shz_xmtrx_init_lookat()

static void init_ortho(float left, float right, float bottom, float top, float znear, float zfar) noexcept

C++ wrapper around shz_xmtrx_init_ortho().

Calls: shz_xmtrx_init_ortho()

static void init_frustum(float left, float right, float bottom, float top, float znear, float zfar) noexcept

C++ wrapper around shz_xmtrx_init_frustum().

Calls: shz_xmtrx_init_frustum()

static void init_perspective(float fov, float aspect, float znear) noexcept

C++ wrapper around shz_xmtrx_init_perspective().

Calls: shz_xmtrx_init_perspective()

static void init_rotation_quat(const quat &q) noexcept

C++ wrapper around shz_xmtrx_init_rotation_quat().

Calls: shz_xmtrx_init_rotation_quat()

static void init_permutation_wxyz() noexcept

C++ wrapper around shz_xmtrx_init_permutation_wxyz().

Calls: shz_xmtrx_init_permutation_wxyz()

static void init_permutation_yzwx() noexcept

C++ wrapper around shz_xmtrx_init_permutation_yzwx().

Calls: shz_xmtrx_init_permutation_yzwx()

static void init_permutation_wzyx() noexcept

C++ wrapper around shz_xmtrx_init_permutation_wzyx().

Calls: shz_xmtrx_init_permutation_wzyx()

static void apply(const shz_mat4x4_t &mat4) noexcept
static void apply(const float cArray[16]) noexcept
static void apply(const std::array< float, 16 > &array) noexcept
static void apply(const shz_mat3x4_t &mat) noexcept
static void apply(const shz_mat3x3_t &mat) noexcept

C++ wrapper around shz_xmtrx_apply_4x4().

Calls: shz_xmtrx_apply_4x4(), shz_xmtrx_apply_unaligned_4x4(), shz_xmtrx_apply_3x4(), shz_xmtrx_apply_3x3()

static void apply_transpose(const shz_mat4x4_t &mat4) noexcept
static void apply_transpose(const float cArray[16]) noexcept
static void apply_transpose(const std::array< float, 16 > &array) noexcept
static void apply_transpose(const shz_mat3x4_t &mat) noexcept
static void apply_transpose(const shz_mat3x3_t &mat) noexcept

C++ wrapper around shz_xmtrx_apply_transpose_4x4().

Calls: shz_xmtrx_apply_transpose_4x4(), shz_xmtrx_apply_transpose_unaligned_4x4(), shz_xmtrx_apply_transpose_3x4(), shz_xmtrx_apply_transpose_3x3()

static void apply_reverse(const shz_mat4x4_t &mat4) noexcept
static void apply_reverse(const float cArray[16]) noexcept
static void apply_reverse(const std::array< float, 16 > &array) noexcept
static void apply_reverse(const shz_mat3x4_t &mat) noexcept

C++ wrapper around shz_xmtrx_apply_reverse_4x4().

Calls: shz_xmtrx_apply_reverse_4x4(), shz_xmtrx_apply_reverse_unaligned_4x4(), shz_xmtrx_apply_reverse_3x4()

static void apply_reverse_transpose(const shz_mat4x4_t &mat4) noexcept
static void apply_reverse_transpose(const float cArray[16]) noexcept
static void apply_reverse_transpose(const std::array< float, 16 > &array) noexcept
static void apply_reverse_transpose(const shz_mat3x4_t &mat) noexcept

C++ wrapper around shz_xmtrx_apply_reverse_transpose_4x4().

Calls: shz_xmtrx_apply_reverse_transpose_4x4(), shz_xmtrx_apply_reverse_transpose_unaligned_4x4(), shz_xmtrx_apply_reverse_transpose_3x4()

static void apply_translation(float x, float y, float z) noexcept
static void apply_translation(const vec3 &v) noexcept

C++ wrapper around shz_xmtrx_apply_translation().

Calls: shz_xmtrx_apply_translation()

static void apply_scale(float x, float y, float z) noexcept
static void apply_scale(const vec3 &v) noexcept

C++ wrapper around shz_xmtrx_apply_scale().

Calls: shz_xmtrx_apply_scale()

static void apply_rotation_x(float x) noexcept

C++ wrapper around shz_xmtrx_apply_rotation_x().

Calls: shz_xmtrx_apply_rotation_x()

static void apply_rotation_y(float y) noexcept

C++ wrapper around shz_xmtrx_apply_rotation_y().

Calls: shz_xmtrx_apply_rotation_y()

static void apply_rotation_z(float z) noexcept

C++ wrapper around shz_xmtrx_apply_rotation_z().

Calls: shz_xmtrx_apply_rotation_z()

static void apply_rotation_xyz(float x, float y, float z) noexcept

C++ wrapper around shz_xmtrx_init_rotation_xyz().

Calls: shz_xmtrx_apply_rotation_xyz()

static void apply_rotation_zyx(float z, float y, float x) noexcept

C++ wrapper around shz_xmtrx_apply_rotation_zyx().

Calls: shz_xmtrx_apply_rotation_zyx()

static void apply_rotation_zxy(float z, float x, float y) noexcept

C++ wrapper around shz_xmtrx_apply_rotation_zxy().

Calls: shz_xmtrx_apply_rotation_zxy()

static void apply_rotation_yxz(float y, float x, float z) noexcept

C++ wrapper around shz_xmtrx_apply_rotation_yxz().

Calls: shz_xmtrx_apply_rotation_yxz()

static void apply_rotation(float angle, float x, float y, float z) noexcept
static void apply_rotation(float angle, const vec3 &axis) noexcept

Calls: shz_xmtrx_apply_rotation()

static void apply_rotation_quat(const quat &q) noexcept

C++ wrapper around shz_xmtrx_apply_rotation_quat().

Calls: shz_xmtrx_apply_rotation_quat()

static void apply_lookat(const vec3 &eye, const vec3 &center, const vec3 &up) noexcept

C++ wrapper around shz_xmtrx_apply_lookat().

Calls: shz_xmtrx_apply_lookat()

static void apply_ortho(float left, float right, float bottom, float top, float znear, float zfar) noexcept

C++ wrapper around shz_xmtrx_apply_ortho().

Calls: shz_xmtrx_apply_ortho()

static void apply_frustum(float left, float right, float bottom, float top, float znear, float zfar) noexcept

C++ wrapper around shz_xmtrx_apply_frustum().

Calls: shz_xmtrx_apply_frustum()

static void apply_perspective(float fov, float aspect, float znear) noexcept

C++ wrapper around shz_xmtrx_apply_perspective().

Calls: shz_xmtrx_apply_perspective()

static void apply_symmetric_skew(float x, float y, float z) noexcept

C++ wrapper around shz_xmtrx_apply_symmetric_skew().

Calls: shz_xmtrx_apply_symmetric_skew()

static void apply_screen(float width, float height) noexcept

C++ wrapper around shz_xmtrx_apply_screen().

Calls: shz_xmtrx_apply_screen()

static void apply_permutation_wxyz() noexcept

C++ wrapper around shz_xmtrx_apply_permutation_wxyz().

Calls: shz_xmtrx_apply_permutation_wxyz()

static void apply_permutation_yzwx() noexcept

C++ wrapper around shz_xmtrx_apply_permutation_yzwx().

Calls: shz_xmtrx_apply_permutation_yzwx()

static void apply_permutation_wzyx() noexcept

C++ wrapper around shz_xmtrx_apply_permutation_wzyx().

Calls: shz_xmtrx_apply_permutation_wzyx()

static void apply_self() noexcept

C++ wrapper around shz_xmtrx_apply_self().

Calls: shz_xmtrx_apply_self()

static void translate(float x, float y, float z) noexcept
static void translate(vec3 v) noexcept

C++ wrapper around shz_xmtrx_translate().

Calls: shz_xmtrx_translate()

static void scale(float x, float y, float z) noexcept
static void scale(vec3 v) noexcept

C++ wrapper around shz_xmtrx_scale().

Calls: shz_xmtrx_scale()

static void rotate_x(float radians) noexcept

C++ wrapper around shz_xmtrx_rotate_x().

Calls: shz_xmtrx_rotate_x()

static void rotate_y(float radians) noexcept

C++ wrapper around shz_xmtrx_rotate_x().

Calls: shz_xmtrx_rotate_y()

static void rotate_z(float radians) noexcept

C++ wrapper around shz_xmtrx_rotate_x().

Calls: shz_xmtrx_rotate_z()

static void rotate_xyz(float x, float y, float z) noexcept

C++ wrapper around shz_xmtrx_rotate_xyz().

Calls: shz_xmtrx_rotate_xyz()

static void rotate_zyx(float z, float y, float x) noexcept

C++ wrapper around shz_xmtrx_rotate_zyx().

Calls: shz_xmtrx_rotate_zyx()

static void rotate_zxy(float z, float x, float y) noexcept

C++ wrapper around shz_xmtrx_rotate_zxy().

Calls: shz_xmtrx_rotate_zxy()

static void rotate_yxz(float y, float x, float z) noexcept

C++ wrapper around shz_xmtrx_rotate_yxz().

Calls: shz_xmtrx_rotate_yxz()

static void rotate(float radians, float x, float y, float z) noexcept
static void rotate(float radians, const vec3 &axis) noexcept

C++ wrapper around shz_xmtrx_rotate().

Calls: shz_xmtrx_rotate()

static void translate_reverse(float x, float y, float z) noexcept
static void translate_reverse(const shz::vec3 &pos) noexcept

Pre-multiplies and accumulates XMTRX onto the 3D translation matrix with the given components.

Calls: shz_xmtrx_translate_reverse()

static void scale_reverse(float x, float y, float z) noexcept
static void scale_reverse(const shz::vec3 &size) noexcept

Pre-multiplies and accumulatse XMTRX onto the 3D scaling matrix with the given components.

Calls: shz_xmtrx_scale_reverse()

static void load_apply(const shz_mat4x4_t &mat1, const shz_mat4x4_t &mat2) noexcept
static void load_apply(const float matrix1[16], const float matrix2[16]) noexcept
static void load_apply(const shz_mat3x4_t &mat1, const shz_mat3x4_t &mat2) noexcept

C++ wrapper around shz_xmtrx_load_apply_4x4().

Calls: shz_xmtrx_load_apply_4x4(), shz_xmtrx_load_apply_unaligned_4x4(), shz_xmtrx_load_apply_3x4()

static void apply_store(shz_mat4x4_t *out, const shz_mat4x4_t &in) noexcept
static void apply_store(float out[16], const float in[16]) noexcept

C++ wrapper around shz_xmtrx_apply_store_4x4().

Calls: shz_xmtrx_apply_store_4x4(), shz_xmtrx_apply_store_unaligned_4x4()

static void load_apply_store(shz_mat4x4_t *dst, const shz_mat4x4_t &mat1, const shz_mat4x4_t &mat2) noexcept
static void load_apply_store(float out[16], const float matrix1[16], const float matrix2[16]) noexcept
static void load_apply_store(shz_mat3x4_t *dst, const shz_mat3x4_t &mat1, const shz_mat3x4_t &mat2) noexcept
static void load_apply_store(shz_mat3x3_t *dst, const shz_mat3x3_t &mat1, const shz_mat3x3_t &mat2) noexcept

C++ wrapper around shz_xmtrx_load_apply_store_4x4().

Calls: shz_xmtrx_load_apply_store_4x4(), shz_xmtrx_load_apply_store_unaligned_4x4(), shz_xmtrx_load_apply_store_3x4(), shz_xmtrx_load_apply_store_3x3()

static vec4 transform(const vec4 &in) noexcept
static vec3 transform(const vec3 &in) noexcept
static vec2 transform(const vec2 &in) noexcept

C++ wrapper around shz_xmtrx_transform_vec4().

Calls: shz_xmtrx_transform_vec4(), shz_xmtrx_transform_vec3(), shz_xmtrx_transform_vec2()

static vec3 transform_point(const vec3 &pt) noexcept
static vec2 transform_point(const vec2 &pt) noexcept

C++ wrapper around shz_xmtrx_transform_point3().

Calls: shz_xmtrx_transform_point3(), shz_xmtrx_transform_point2()

static void set_translation(float x, float y, float z) noexcept
static void set_translation(const vec3 &v) noexcept

C++ wrapper around shz_xmtrx_set_translation().

Calls: shz_xmtrx_set_translation()

static void set_scale(float x, float y, float z) noexcept
static void set_scale(const shz::vec3 &size) noexcept

Sets only the inner 3x3 submatrix to be a 3D scale matrix with the given components.

Calls: shz_xmtrx_set_scale()

static vec3 get_translation() noexcept

C++ wrapper around shz_xmtrx_set_translation().

Calls: shz_xmtrx_get_translation()

static vec3 get_scale() noexcept

Returns the scaling components from the inner 3x3 matrix of XMTRX, as a 3D vector.

Calls: shz_xmtrx_get_scale()

static void add(const shz_mat4x4_t &mat) noexcept

C++ wrapper around shz_xmtrx_add_4x4().

Calls: shz_xmtrx_add_4x4()

static void sub(const shz_mat4x4_t &mat) noexcept

C++ wrapper around shz_xmtrx_sub_4x4().

Calls: shz_xmtrx_sub_4x4()

static void transpose() noexcept

C++ wrapper around shz_xmtrx_transpose().

Calls: shz_xmtrx_transpose()

static void negate() noexcept

C++ wrapper around shz_xmtrx_negate().

Calls: shz_xmtrx_negate()

static void abs() noexcept

C++ wrapper around shz_xmtrx_abs().

Calls: shz_xmtrx_abs()

static quat to_quat() noexcept

C++ wrapper around shz_xmtrx_to_quat().

Calls: shz_xmtrx_to_quat()

static float determinant() noexcept

C++ wrapper around shz_xmtrx_determinant().

Calls: shz_xmtrx_determinant()

static void invert() noexcept

C++ wrapper around shz_xmtrx_invert().

Calls: shz_xmtrx_invert()

static void blend(const shz_mat4x4_t &matrix, float weight) noexcept
static void blend(const shz_mat3x4_t &matrix, float weight) noexcept

Adds and accumulates a scaled 4x4 matrix onto XMTRX.

Calls: shz_xmtrx_blend_4x4(), shz_xmtrx_blend_3x4()

FP back-bank registers comprising XMTRX.

using reg_t = reg

Non-POSIX style reg_t alias.