From 56f84f0d49eface1dec12d8a9b4653cb117dd976 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Tue, 27 Jun 2017 12:17:03 +0300 Subject: [PATCH] add function, type and macros in header to top of header --- include/cglm-affine-mat.h | 6 ++++++ include/cglm-affine.h | 25 +++++++++++++++++++++++ include/cglm-cam.h | 28 +++++++++++++++++++++++++ include/cglm-euler.h | 18 ++++++++++++++++ include/cglm-io.h | 10 +++++++++ include/cglm-mat.h | 31 ++++++++++++++++++++++++++++ include/cglm-mat3.h | 22 ++++++++++++++++++++ include/cglm-quat.h | 17 ++++++++++++++++ include/cglm-util.h | 10 +++++++++ include/cglm-vec-ext.h | 25 +++++++++++++++++++++++ include/cglm-vec.h | 43 +++++++++++++++++++++++++++++++++++++++ 11 files changed, 235 insertions(+) diff --git a/include/cglm-affine-mat.h b/include/cglm-affine-mat.h index 98f92db..9443f81 100644 --- a/include/cglm-affine-mat.h +++ b/include/cglm-affine-mat.h @@ -5,6 +5,12 @@ * Full license can be found in the LICENSE file */ +/* + Functions: + CGLM_INLINE void glm_mul(mat4 m1, mat4 m2, mat4 dest); + CGLM_INLINE void glm_inv_tr(mat4 mat); + */ + #ifndef cglm_affine_mat_h #define cglm_affine_mat_h diff --git a/include/cglm-affine.h b/include/cglm-affine.h index d194c41..01128b8 100644 --- a/include/cglm-affine.h +++ b/include/cglm-affine.h @@ -5,6 +5,31 @@ * Full license can be found in the LICENSE file */ +/* + Functions: + CGLM_INLINE void glm_translate_to(mat4 m, vec3 v, mat4 dest); + CGLM_INLINE void glm_translate(mat4 m, vec3 v); + CGLM_INLINE void glm_translate_x(mat4 m, float to); + CGLM_INLINE void glm_translate_y(mat4 m, float to); + CGLM_INLINE void glm_translate_z(mat4 m, float to); + CGLM_INLINE void glm_translate_make(mat4 m, vec3 v); + CGLM_INLINE void glm_scale_to(mat4 m, vec3 v, mat4 dest); + CGLM_INLINE void glm_scale_make(mat4 m, vec3 v); + CGLM_INLINE void glm_scale(mat4 m, vec3 v); + CGLM_INLINE void glm_scale1(mat4 m, float s); + CGLM_INLINE void glm_rotate_x(mat4 m, float rad, mat4 dest); + CGLM_INLINE void glm_rotate_y(mat4 m, float rad, mat4 dest); + CGLM_INLINE void glm_rotate_z(mat4 m, float rad, mat4 dest); + CGLM_INLINE void glm_rotate_ndc_make(mat4 m, float angle, vec3 axis_ndc); + CGLM_INLINE void glm_rotate_make(mat4 m, float angle, vec3 axis); + CGLM_INLINE void glm_rotate_ndc(mat4 m, float angle, vec3 axis_ndc); + CGLM_INLINE void glm_rotate(mat4 m, float angle, vec3 axis); + CGLM_INLINE void glm_decompose_scalev(mat4 m, vec3 s); + CGLM_INLINE bool glm_uniscaled(mat4 m); + CGLM_INLINE void glm_decompose_rs(mat4 m, mat4 r, vec3 s); + CGLM_INLINE void glm_decompose(mat4 m, vec4 t, mat4 r, vec3 s); + */ + #ifndef cglm_affine_h #define cglm_affine_h diff --git a/include/cglm-cam.h b/include/cglm-cam.h index 8750da1..9bf32b1 100644 --- a/include/cglm-cam.h +++ b/include/cglm-cam.h @@ -5,6 +5,34 @@ * Full license can be found in the LICENSE file */ +/* + Functions: + CGLM_INLINE void glm_frustum(float left, + float right, + float bottom, + float top, + float near, + float far, + mat4 dest); + CGLM_INLINE void glm_ortho(float left, + float right, + float bottom, + float top, + float near, + float far, + mat4 dest); + CGLM_INLINE void glm_ortho_default(float aspect, mat4 dest); + CGLM_INLINE void glm_ortho_default_s(float aspect, float size, mat4 dest); + CGLM_INLINE void glm_perspective(float fovy, + float aspect, + float near, + float far, + mat4 dest); + CGLM_INLINE void glm_perspective_default(float aspect, mat4 dest); + CGLM_INLINE void glm_perspective_resize(float aspect, mat4 proj); + CGLM_INLINE void glm_lookat(vec3 eye, vec3 center, vec3 up, mat4 dest); + */ + #ifndef cglm_vcam_h #define cglm_vcam_h diff --git a/include/cglm-euler.h b/include/cglm-euler.h index 001021a..2a657a4 100644 --- a/include/cglm-euler.h +++ b/include/cglm-euler.h @@ -5,6 +5,24 @@ * Full license can be found in the LICENSE file */ +/* + Types: + enum glm_euler_sq + + Functions: + CGLM_INLINE glm_euler_sq glm_euler_order(int newOrder[3]); + CGLM_INLINE void glm_euler_angles(mat4 m, vec3 dest); + CGLM_INLINE void glm_euler(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_zyx(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_zxy(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_xzy(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_yzx(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_yxz(vec3 angles, mat4 dest); + CGLM_INLINE void glm_euler_by_order(vec3 angles, + glm_euler_sq axis, + mat4 dest); + */ + #ifndef cglm_euler_h #define cglm_euler_h diff --git a/include/cglm-io.h b/include/cglm-io.h index e3dca02..293889a 100644 --- a/include/cglm-io.h +++ b/include/cglm-io.h @@ -5,6 +5,16 @@ * Full license can be found in the LICENSE file */ +/* + Functions: + CGLM_INLINE void glm_mat4_print(mat4 matrix, FILE *ostream); + CGLM_INLINE void glm_mat3_print(mat3 matrix, FILE *ostream); + CGLM_INLINE void glm_vec4_print(vec4 vec, FILE *ostream); + CGLM_INLINE void glm_vec3_print(vec3 vec, FILE *ostream); + CGLM_INLINE void glm_ivec3_print(ivec3 vec, FILE *ostream); + CGLM_INLINE void glm_versor_print(versor vec, FILE *ostream); + */ + #ifndef cglm_io_h #define cglm_io_h diff --git a/include/cglm-mat.h b/include/cglm-mat.h index a99e63d..38be3ba 100644 --- a/include/cglm-mat.h +++ b/include/cglm-mat.h @@ -10,6 +10,37 @@ * if available. You dont need to call/incude SIMD headers manually */ +/* + Macros: + GLM_MAT4_IDENTITY_INIT + GLM_MAT4_ZERO_INIT + GLM_MAT4_IDENTITY + GLM_MAT4_ZERO + glm_mat4_udup(mat, dest) + glm_mat4_dup(mat, dest) + + Functions: + CGLM_INLINE void glm_mat4_ucopy(mat4 mat, mat4 dest); + CGLM_INLINE void glm_mat4_copy(mat4 mat, mat4 dest); + CGLM_INLINE void glm_mat4_identity(mat4 mat); + CGLM_INLINE void glm_mat4_pick3(mat4 mat, mat3 dest); + CGLM_INLINE void glm_mat4_pick3t(mat4 mat, mat3 dest); + CGLM_INLINE void glm_mat4_ins3(mat3 mat, mat4 dest); + CGLM_INLINE void glm_mat4_mul(mat4 m1, mat4 m2, mat4 dest); + CGLM_INLINE void glm_mat4_mulN(mat4 *matrices[], int len, mat4 dest); + CGLM_INLINE void glm_mat4_mulv(mat4 m, vec4 v, vec4 dest); + CGLM_INLINE void glm_mat4_mulv3(mat4 m, vec3 v, vec3 dest); + CGLM_INLINE void glm_mat4_transpose_to(mat4 m, mat4 dest); + CGLM_INLINE void glm_mat4_transpose(mat4 m); + CGLM_INLINE void glm_mat4_scale_p(mat4 m, float s); + CGLM_INLINE void glm_mat4_scale(mat4 m, float s); + CGLM_INLINE float glm_mat4_det(mat4 mat); + CGLM_INLINE void glm_mat4_inv(mat4 mat, mat4 dest); + CGLM_INLINE void glm_mat4_inv_precise(mat4 mat, mat4 dest); + CGLM_INLINE void glm_mat4_swap_col(mat4 mat, int col1, int col2); + CGLM_INLINE void glm_mat4_swap_row(mat4 mat, int row1, int row2); + */ + #ifndef cglm_mat_h #define cglm_mat_h diff --git a/include/cglm-mat3.h b/include/cglm-mat3.h index 1575e55..6c1adce 100644 --- a/include/cglm-mat3.h +++ b/include/cglm-mat3.h @@ -5,6 +5,28 @@ * Full license can be found in the LICENSE file */ +/* + Macros: + GLM_MAT3_IDENTITY_INIT + GLM_MAT3_ZERO_INIT + GLM_MAT3_IDENTITY + GLM_MAT3_ZERO + glm_mat3_dup(mat, dest) + + Functions: + CGLM_INLINE void glm_mat3_copy(mat3 mat, mat3 dest); + CGLM_INLINE void glm_mat3_identity(mat3 mat); + CGLM_INLINE void glm_mat3_mul(mat3 m1, mat3 m2, mat3 dest); + CGLM_INLINE void glm_mat3_transpose_to(mat3 m, mat3 dest); + CGLM_INLINE void glm_mat3_transpose(mat3 m); + CGLM_INLINE void glm_mat3_mulv(mat3 m, vec3 v, vec3 dest); + CGLM_INLINE void glm_mat3_scale(mat3 m, float s); + CGLM_INLINE float glm_mat3_det(mat3 mat); + CGLM_INLINE void glm_mat3_inv(mat3 mat, mat3 dest); + CGLM_INLINE void glm_mat3_swap_col(mat3 mat, int col1, int col2); + CGLM_INLINE void glm_mat3_swap_row(mat3 mat, int row1, int row2); + */ + #ifndef cglm_mat3_h #define cglm_mat3_h diff --git a/include/cglm-quat.h b/include/cglm-quat.h index 1bb7233..20fd1ad 100644 --- a/include/cglm-quat.h +++ b/include/cglm-quat.h @@ -5,6 +5,23 @@ * Full license can be found in the LICENSE file */ +/* + Macros: + GLM_QUAT_IDENTITY_INIT + GLM_QUAT_IDENTITY + + Functions: + CGLM_INLINE void glm_quat_identity(versor q); + CGLM_INLINE void glm_quat(versor q, float angle, float x, float y, float z); + CGLM_INLINE void glm_quatv(versor q, float angle, vec3 v); + CGLM_INLINE float glm_quat_norm(versor q); + CGLM_INLINE void glm_quat_normalize(versor q); + CGLM_INLINE float glm_quat_dot(versor q, versor r); + CGLM_INLINE void glm_quat_mulv(versor q1, versor q2, versor dest); + CGLM_INLINE void glm_quat_mat4(versor q, mat4 dest); + CGLM_INLINE void glm_quat_slerp(versor q, versor r, float t, versor dest); + */ + #ifndef cglm_quat_h #define cglm_quat_h diff --git a/include/cglm-util.h b/include/cglm-util.h index 7633b7f..6212938 100644 --- a/include/cglm-util.h +++ b/include/cglm-util.h @@ -5,6 +5,16 @@ * Full license can be found in the LICENSE file */ +/* + Functions: + CGLM_INLINE int glm_sign(int val); + CGLM_INLINE float glm_rad(float deg); + CGLM_INLINE float glm_deg(float rad); + CGLM_INLINE void glm_make_rad(float *deg); + CGLM_INLINE void glm_make_deg(float *rad); + CGLM_INLINE float glm_pow2(float x); + */ + #ifndef cglm_util_h #define cglm_util_h diff --git a/include/cglm-vec-ext.h b/include/cglm-vec-ext.h index 02c030a..4a18e3d 100644 --- a/include/cglm-vec-ext.h +++ b/include/cglm-vec-ext.h @@ -9,6 +9,31 @@ * @brief SIMD like functions */ +/* + Functions: + vec3: + CGLM_INLINE void glm_vec_mulv(vec3 a, vec3 b, vec3 d); + CGLM_INLINE void glm_vec_broadcast(float val, vec3 d); + CGLM_INLINE bool glm_vec_eq(vec3 v, float val); + CGLM_INLINE bool glm_vec_eq_eps(vec4 v, float val); + CGLM_INLINE bool glm_vec_eq_all(vec3 v); + CGLM_INLINE bool glm_vec_eqv(vec3 v1, vec3 v2); + CGLM_INLINE bool glm_vec_eqv_eps(vec3 v1, vec3 v2); + CGLM_INLINE float glm_vec_max(vec3 v); + CGLM_INLINE float glm_vec_min(vec3 v); + + vec4: + CGLM_INLINE void glm_vec4_mulv(vec4 a, vec4 b, vec4 d); + CGLM_INLINE void glm_vec4_broadcast(float val, vec4 d); + CGLM_INLINE bool glm_vec4_eq(vec4 v, float val); + CGLM_INLINE bool glm_vec4_eq_eps(vec4 v, float val); + CGLM_INLINE bool glm_vec4_eq_all(vec4 v); + CGLM_INLINE bool glm_vec4_eqv(vec4 v1, vec4 v2); + CGLM_INLINE bool glm_vec4_eqv_eps(vec3 v1, vec3 v2); + CGLM_INLINE float glm_vec4_max(vec4 v); + CGLM_INLINE float glm_vec4_min(vec4 v); + */ + #ifndef cglm_vec_ext_h #define cglm_vec_ext_h diff --git a/include/cglm-vec.h b/include/cglm-vec.h index 0c02c71..8154cf8 100644 --- a/include/cglm-vec.h +++ b/include/cglm-vec.h @@ -10,6 +10,49 @@ * all functions without suffix are vec3 functions */ +/* + Macros: + glm_vec_dup(v, dest) + glm_vec4_dup3(v, dest) + glm_vec4_dup(v, dest) + + Functions: + vec3: + CGLM_INLINE void glm_vec_copy(vec3 a, vec3 dest); + CGLM_INLINE float glm_vec_dot(vec3 a, vec3 b); + CGLM_INLINE void glm_vec_cross(vec3 a, vec3 b, vec3 d); + CGLM_INLINE float glm_vec_norm2(vec3 v); + CGLM_INLINE float glm_vec_norm(vec3 vec); + CGLM_INLINE void glm_vec_add(vec3 v1, vec3 v2, vec3 dest); + CGLM_INLINE void glm_vec_sub(vec3 v1, vec3 v2, vec3 dest); + CGLM_INLINE void glm_vec_scale(vec3 v, float s, vec3 dest); + CGLM_INLINE void glm_vec_scale_as(vec3 v, float s, vec3 dest); + CGLM_INLINE void glm_vec_flipsign(vec3 v); + CGLM_INLINE void glm_vec_normalize(vec3 v); + CGLM_INLINE void glm_vec_normalize_to(vec3 vec, vec3 dest); + CGLM_INLINE float glm_vec_distance(vec3 v1, vec3 v2); + CGLM_INLINE float glm_vec_angle(vec3 v1, vec3 v2); + CGLM_INLINE void glm_vec_rotate(vec3 v, float angle, vec3 axis); + CGLM_INLINE void glm_vec_rotate_m4(mat4 m, vec3 v, vec3 dest); + CGLM_INLINE void glm_vec_proj(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec_center(vec3 v1, vec3 v2, vec3 dest); + + vec4: + CGLM_INLINE void glm_vec4_copy3(vec4 a, vec3 dest); + CGLM_INLINE void glm_vec4_copy(vec4 v, vec4 dest); + CGLM_INLINE float glm_vec4_dot(vec4 a, vec4 b); + CGLM_INLINE float glm_vec4_norm2(vec4 v); + CGLM_INLINE float glm_vec4_norm(vec4 vec); + CGLM_INLINE void glm_vec4_add(vec4 v1, vec4 v2, vec4 dest); + CGLM_INLINE void glm_vec4_sub(vec4 v1, vec4 v2, vec4 dest); + CGLM_INLINE void glm_vec4_scale(vec4 v, float s, vec4 dest); + CGLM_INLINE void glm_vec4_scale_as(vec4 v, float s, vec4 dest); + CGLM_INLINE void glm_vec4_flipsign(vec4 v); + CGLM_INLINE void glm_vec4_normalize(vec4 v); + CGLM_INLINE void glm_vec4_normalize_to(vec4 vec, vec4 dest); + CGLM_INLINE float glm_vec4_distance(vec4 v1, vec4 v2); + */ + #ifndef cglm_vec_h #define cglm_vec_h