Releases: recp/cglm
v0.9.6: add missing call/aabb2d.h to auto tools build
- add missing
call/aabb2d.h
to auto tools buildinstall
- see previous release for more: https://github.com/recp/cglm/releases/tag/v0.9.5
Full Changelog: v0.9.5...v0.9.6
Known or Possible Issues for Next Versions:
❤️ Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp
v0.9.5: optimizations, noise and many improvements
🚀 More Optimizations and SIMD fixes for MSVC & ARM
In this release more optimizations and fixes added:
📌 msvc, simd: fix simd headers for _M_ARM64EC
📌 arm, neon: fix neon support on GCC ARM
📌 msvc bug: dont align types due to "ARM32 = C2719: formal parameter ..."
📌 more optimizations for mat4 / mat3 inv
📌 sse: make use of int domain as default behavior if possible ( compiler may ignore it )
📌 avx: implement transpose with AVX
📌 avx: optimize avx mat4 scale and mat4 mul
📌 win: suppress C4996; use snprintf() instead of sprintf()
and many others improvements and bugfixes
🎓 Noise
Now we have perlin noise ( thanks to @MarcinKonowalczyk )
🛠️ Bugfixes and Improvements:
- #416: added quat_slerp_longest ( thanks to @telephone001 )
glm_quat_slerp_longest()
: similar toglm_quat_slerp()
but always takes the longest path
- #420: Fixed 'missing-prototypes' warnings for some vec2 funcs ( thanks to @not-kaz )
- #421: mat4: wasm simd128 for glm_mat4_inv ( thanks to @myfreeer )
- #423: Reduce typo count ( thanks to @waywardmonkeys )
- #430: Bump CMake minimum version to 3.13 ( thanks to @nitrix )
- #438: Remove .vscode and .gitmodules ( thanks to @master30f )
- #437: Restructure and rephrase README ( thanks to @master30f )
- #442: Rename struct/aabb2d.h functions to match aabb2d.h, add tests ( thanks to @duarm )
glms_aabb2d_size()
->glms_aabb2d_diag()
: distance between of min and max
- #441: Implement Perlin noise ( thanks to @MarcinKonowalczyk )
float glmc_perlin_vec[2|3|4](vec[2|3|4] point)
:
- #441: Add Some missing vec funcs, tests and doc ( thanks to @MarcinKonowalczyk )
- rename
glm_vec3_step_uni()
-->glm_vec3_steps()
glm_vec4_stepr()
similar toglm_vec4_step()
but reverse- add missing
_floor
,_fract
,_swizzle
,_mods
...
- rename
- #444: Fix numbering - opengl matrix uniform examples (docs) ( thanks to @wethu )
- #413: More Optimizations and SIMD fixes for MSVC & ARM
- take -pedantic into account to validate CGLM_USE_ANONYMOUS_STRUCT
- fix refract
- suppress warns about va-args
- supress fast-math warns
- suppress param-name warns
- add missing newlines at the eof
- documentation improvements
- add missing files to build
New Contributors
- @not-kaz made their first contribution in #420
- @master30f made their first contribution in #438
- @MarcinKonowalczyk made their first contribution in #441
- @wethu made their first contribution in #444
Full Changelog: v0.9.4...v0.9.5
Known or Possible Issues for Next Versions:
❤️ Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp
v0.9.4: critical bug fixes
🐞bug fixes
Non-Square matrices are fixed ( many thanks to @EasyIP2023 ). Also now SSE can work without SSE2 which may not available on 32bit devices e.g. i686. Some fast math issues also fixed. Func param name conflicts with a macro, again! Now fixed.
In this release lot of critic bugs are fixed. Feel free to report any bugs, we are here for them 🐛
🛠️ Bugfixes and Improvements:
- #402: Struct API glms_ray_at incorrect dir param ( thanks to @nitrix )
- dont use I macro defined in standard ( fixes #404, thanks @olifre for reporting it )
- #403: mat2x3: fix multiplication functions ( many thanks to @EasyIP2023 )
- #405: mat2x4: fix multiplication functions ( many thanks to @EasyIP2023 )
- #407: mat3x2: fix multiplication functions ( many thanks to @EasyIP2023 )
- #408: mat3x4: fix multiplication functions ( many thanks to @EasyIP2023 )
- #410: mat4x2: fix multiplication functions ( many thanks to @EasyIP2023 )
- #411: mat4x3: fix multiplication functions ( many thanks to @EasyIP2023 )
- docs: improve docs ( many thanks to @EasyIP2023 )
- #412: separate SSE and SSE2 ( thanks @aryalaadi for reporting this )
- make Fasth math work both on SSE and SSE2, make -0.0f run on SSE + fast math
- make some failing test pass when fast math is on
- tests: dont validate nan and inf on fast math
- docs: add note to enable config where may not work is some environments
- docs: alignment
- fix some doc typos & warnings
Known or Possible Issues for Next Versions:
❤️ Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp
v0.9.3: ray update and many improvements
🎓 ray, struct and ci
Now we have some missing functionalities:
📌 ray sphere intersection, reflect, refract, face forward
📌 additional CI via GitHub Actions ( many thanks to @waywardmonkeys )
📌 struct API for ivec2, ivec3, and ivec4 ( many thanks to @tarhses )
📌 struct API improvements ( many thanks to @duarm, @waywardmonkeys )
📌 add new functions for ivec2 and ivec3 ( many thanks to @vitassuper )
glm_ray_sphere(origin, dir, s, &t1, &t2)) -> bool
ray sphere intersectionglm_ray_at(orig, dir, t, &point)
point by parameterglm_vec3_faceforward(N, I, Nref, dest)
glm_vec[2|3|4]_reflect(I, N, &dest)
reflectglm_vec[2|3|4]_refract(I, N, eta, &dest)
refract
glm_ray_sphere()
:
- t1 > 0, t2 > 0: ray intersects the sphere at t1 and t2 both ahead of the origin
- t1 < 0, t2 > 0: ray starts inside the sphere, exits at t2
- t1 < 0, t2 < 0: no intersection ahead of the ray
- the caller can check if the intersection points (t1 and t2) fall within a specific range (for example, tmin < t1, t2 < tmax) to determine if the intersections are within a desired segment of the ray
and many others improvements and bug fixes, thanks to those who help to make the library more robust and better than before.
🛠️ Bugfixes and Improvements:
- #378: win32, simd: ensure we are on msvc when checking MSVC specific headers
- win32, tests: fix drand48() error on mingw
- #379: simd: min / max helpers
- docs: update read the docs package versions
- #381: add new functions for ivec2 and ivec3 ( dot, norm, norm2, div, divs, mod... ) ( thanks to @vitassuper )
- #383: implement struct API for ivec2, ivec3, and ivec4 ( thanks to @tarhses )
- #384: docs, fix typos ( thanks to @waywardmonkeys )
- #386: add additional CI via GitHub Actions ( thanks to @waywardmonkeys )
- #388: ci: Remove appveyor ( thanks to @waywardmonkeys )
- #387: suppress warnings ( thanks to @waywardmonkeys )
- #389: aabb2d: fix struct api ( thanks to @waywardmonkeys )
- #390: doc improvements ( thanks to @waywardmonkeys )
- #391: ci: Add ARM64 UWP for WindowsStore ( thanks to @waywardmonkeys )
- #392: aabb2d_zero, aabb2d_diagonal and aabb2d_size ( thanks to @duarm )
- #395: use NDEBUG to check DEBUG mode, update cmake to respect DEBUG
- suppress warnings: C4244: 'function': conversion from 'int' to 'float'
- test: fix ivec2 and ivec3 comparison and suppress warnings
- #398: allow passing const float* to make functions ( thanks to @waywardmonkeys )
- #397: clarify some rotation rules, update docs to explain rotate() a bit more
- #399: some missing ray functions (
glm_ray_sphere
,glm_ray_at
,glm_vec3_faceforward
,glm_vec[2|3|4]_reflect
,glm_vec[2|3|4]_refract
- normalize: norm == 0.0f to norm < FLT_EPSILON, improving handling of very small vectors to prevent instability and overflow
- build: add missing files
- fix some doc typos & warnings
Known or Possible Issues for Next Versions:
❤️ Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp
v0.9.2: aabb2d, euler and many improvements
🎓 aabb2d and euler to quat
Now we have some missing functionalities:
📌 aabb2d ( many thanks to @duarm )
📌 euler to quat functionality ( many thanks to @telephone001 )
📌 new subtraction family of vector functions ( many thanks to @BeeverFeever )
and many others improvements and bugfixes, thanks to @v1993, @myfreeer, @gottfriedleibniz and others to make the library more robust and better than before.
🛠️ Bugfixes and Improvements:
- #345: fix
glms_mat4_ins3()
( thanks to @telephone001 ) - #346: eqv, eq, fill for ivec2 and ivec3, new print functions for ivec2 and ivec4, documentation fixes ( thanks @duarm )
- #350: add
glm_vec2_center()
( thanks @duarm ) - #354: doc fixes ( thanks to @One234Fi )
- #356: fix simd check ( thanks @havrik)
- #357: use the appropriate version of
alignof
( thanks to @v1993 ) - #361: wasm: prefer pmin/pmax ( thanks to @myfreeer )
- #362: ci: initial support of meson and emscripten ( thanks to @myfreeer )
- #360: meson: don't build by default if used in a subproject ( thanks to @v1993 )
- #355: aabb2d ( thanks to @duarm )
- #367: fix struct clipspace headers ( thanks to @v1993 )
- #372: documentation fixes ( thanks to @EasyIP2023 )
- #364: new subtraction family of vector functions ( thanks to @BeeverFeever and @gottfriedleibniz )
- #373: ivec += and -= functions ( thanks to @BeeverFeever )
- #369, #377: euler to quat functions ( thanks to @telephone001 and @gottfriedleibniz )
- fix
glmm_fmsub()
on arm-neon ( thanks to @gottfriedleibniz ) - fix glm_ivec2|3_fill and glm_ivec2|3_eq params
- build: add missing files
- tests: fix comparing integers in tests
- fix some doc typos & warnings
- struct: fix glms_rotate_atm signature
- struct: add missing glms_project_z()
Known or Possible Issues for Next Versions:
❤️ Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp
v0.9.1: New Matrix Types and Many Improvements
🎓 New Matrix Types
📌 Now we have mat2x3, mat2x4, mat3x2, mat3x4, mat4x2 and mat4x3 types and its functions ( many thanks to @EasyIP2023 )
Each one has its own header e.g mat3x4.h, including one of them:
- cglm/cglm.h
- cglm/call.h
- cglm/struct.h
will include all matrix headers. Feel free to share any bugs found to fix them.
🛠️ Bugfixes and Improvements:
- #295: README: add build docs for WebAssembly ( thanks to @myfreeer )
- #303: io: fix test runner.c implicit declaration glm_arch_print ( thanks to @EasyIP2023 )
- #309: fix and improve CGLM_USE_ANONYMOUS_STRUCT definition with more robust compiler version check
- #311: suppress sign conversion warnings
- #313: ci: update mymindstorm/setup-emsdk to v12 ( thanks to @myfreeer )
- #317: Implement missing 3D Affine Transforms in the Struct API ( thanks to @FrostKiwi )
- #328: drop "-Werror" to allow skip warnings on production build
- #341: more robust __builtin_assume_aligned detection ( thanks to @Akaricchi )
- #299, #301, #302, #321, #325, #326, #324 and more: add new _make functions for vectors, quat and matrices ( thanks to @EasyIP2023 )
- fix struct api namespace definition in box header which cause build error ( thanks to @Nonesence999 and @gottfriedleibniz )
- reduce glms_mat[4|3|2]_make()'s dest parameter
- fix and improve printing arch name in tests
- make GLM_TESTS_NO_COLORFUL_OUTPUT work on non-test print colors too
- README: update meson option for running test ( thanks to @EasyIP2023 )
- Documentation, README and commens enhancements ( thanks to @EasyIP2023, @FrostKiwi )
Known or Possible Issues for Next Versions:
❤️ Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp
v0.9.0: WASM 128 SIMD + Struct Api Namespace Configuration + Bug Fixes
🚀 WASM 123 SIMD Support
Now we have WASM 128 SIMD support ( many thanks to @myfreeer ).
Compiling
Currently the tests can be cross-compiled to wasi using clang and wasi-sdk with cmake arguments below:
-DCMAKE_C_FLAGS="-msimd128"
-DCMAKE_TOOLCHAIN_FILE=/path/to/wasi-sdk-19.0/share/cmake/wasi-sdk.cmake
-DWASI_SDK_PREFIX=/path/to/wasi-sdk-19.0
-DCGLM_USE_TEST=ON
Where /path/to/wasi-sdk-19.0/
is the path to extracted wasi sdk.
🚀 Struct API Namespace Configuration
Now we can omit or change namespace of struct api which was ( and still as default ) glms_
. We can omit the namespace completely to use like mat4_mul(mat4_mul(m1, m2), m3)
... or option to use like mat4s_mul(mat4s_mul(m1, m2), m3)
...
This makes things more flexible & readable for struct api.
now we can omit glms_ like:
/* previous / default */
return glms_vec3_normalized(glms_vec3_cross(a, b));
/* this must be defined before cglm inc especially common.h */
#define CGLM_OMIT_NS_FROM_STRUCT_API /* or define at compiler settings */
/* new!! */
return vec3_normalized(vec3_cross(a, b));
/* if CGLM_STRUCT_API_NAME_SUFFIX is defined as `s` */
return vec3s_normalized(vec3s_cross(a, b));
new options:
CGLM_OMIT_NS_FROM_STRUCT_API
, omits CGLM_STRUCT_API_NS (glms_) namespace completely if there is sub namespace e.g mat4_, vec4_ ... DEFAULT is not definedCGLM_STRUCT_API_NS
: define name space for struct api, DEFAULT isglms
CGLM_STRUCT_API_NAME_SUFFIX
: define name suffix, DEFAULT is empty e.gdefining it as #define CGLM_STRUCT_API_NAME_SUFFIX s
will adds
suffix tomat4_mul -> mat4s_mul
🛠️ Bugfixes and Improvements:
- #279: Check for builtin before using it ( thanks to @NeRdTheNed )
- #280: fix building ARM NEON on windows & msvc ( thanks to @gottfriedleibniz )
- #286: Wasm simd128 support ( thanks to @myfreeer also @kzhsw, @gottfriedleibniz )
- #290: provide option to omit or configure struct api namespace
- #291: simd, sse: use 0x80000000 insteaf of -0.f to fix
/fp:fast
on msvc ( thanks to @gottfriedleibniz, @deadwanderer ) see #289 - #292: wasm: replace usage of -0.f to 0x80000000 ( thanks to @myfreeer )
- utility to print selected simd path
- fix building tests
- fix struct api calls
- update documentations ( thanks to @ransel117 @krishna2803 )
- and some improvements may not listed here
❤️ Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp
v0.8.9: build fixes and some improvements
Bugfixes and Improvements:
- #274: adding initialization macros for ivec types ( thanks to @duarm )
- #272: revert "fix: simplified pkgconfig generation" ( thanks to @Artturin, also @eli-schwartz, @jtojnar, @q234rty, @bobvanderlinden )
- #273: make implicit double promotion/casting explicit (fixes #228) ( thanks to @JulianSchoenbaechler )
- #276: prevent overriding CMAKE_BUILD_TYPE if it is subdirectory
- see previous releases for more
Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp
v0.8.8: abs for ivec & bug fixes and improvements
New features:
Bugfixes and Improvements:
- #266: fix assertion in test_clamp on x86 ( thanks to @bl4ckb0ne )
- #269: fix missing abs declaration on Emscripten ( thanks to @KivApple )
- #270: switch CMAKE_BINARY_DIR to CMAKE_CURRENT_BINARY_DIR for cmake.pc ( thanks to @michael-santiago-tfs @suicvne )
- see previous releases for more
Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp
v0.8.7: add missing struct affine functions and headers
- fix build: add missing struct affine functions and headers
- see previous release for more: https://github.com/recp/cglm/releases/tag/v0.8.6
Sponsorship: Consider become a sponsor for cglm
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/cglm#backer
https://patreon.com/recp