diff --git a/include/cglm/call/vec3.h b/include/cglm/call/vec3.h index bb5a5d7..89a9e4e 100644 --- a/include/cglm/call/vec3.h +++ b/include/cglm/call/vec3.h @@ -321,7 +321,11 @@ glmc_vec3_abs(vec3 v, vec3 dest); CGLM_EXPORT void glmc_vec3_fract(vec3 v, vec3 dest); - + +CGLM_EXPORT +void +glmc_vec3_floor(vec3 v, vec3 dest); + CGLM_EXPORT float glmc_vec3_hadd(vec3 v); diff --git a/include/cglm/struct/vec3-ext.h b/include/cglm/struct/vec3-ext.h index 1a3e88a..212953f 100644 --- a/include/cglm/struct/vec3-ext.h +++ b/include/cglm/struct/vec3-ext.h @@ -230,6 +230,20 @@ glms_vec3_(fract)(vec3s v) { return r; } +/*! + * @brief floor of each vector item + * + * @param[in] v vector + * @return dest destination vector + */ +CGLM_INLINE +vec3s +glms_vec3_(floor)(vec3s v) { + vec3s r; + glm_vec3_floor(v.raw, r.raw); + return r; +} + /*! * @brief vector reduction by summation * @warning could overflow diff --git a/src/vec3.c b/src/vec3.c index c1316dc..8427236 100644 --- a/src/vec3.c +++ b/src/vec3.c @@ -442,6 +442,12 @@ glmc_vec3_fract(vec3 v, vec3 dest) { glm_vec3_fract(v, dest); } +CGLM_EXPORT +void +glmc_vec3_floor(vec3 v, vec3 dest) { + glm_vec3_floor(v, dest); +} + CGLM_EXPORT float glmc_vec3_hadd(vec3 v) {