v0.8.3: Clipspace Control and Performance Update
Major New Feature: Clipspace Control (#198) 🎉
cglm now supports different clipspace configurations.
Many many thanks to @raedwulf and @michael-g to provide this feature to cglm which was in TODOs long time. There are missing tests for now but tests will or should be added as soon as possible. Also thanks to @hartenfels and @bwhmather fixing build files...
Options
#define CGLM_FORCE_DEPTH_ZERO_TO_ONE
#define CGLM_FORCE_LEFT_HANDED
#define CGLM_CLIPSPACE_INCLUDE_ALL
/* auto created in cglm */
#define CGLM_CONFIG_CLIP_CONTROL
#define CGLM_CLIP_CONTROL_LH_ZO
#define CGLM_CLIP_CONTROL_LH_NO
#define CGLM_CLIP_CONTROL_RH_ZO
#define CGLM_CLIP_CONTROL_RH_NO
New functions
Now there are _no
, _zo
, _lh
, _rh
... vesions of projection and view functions. No need to paste all of them here, they are placed in include/cglm/clipspace/
, include/cglm/struct/clipspace/
and include/cglm/call/clipspace/
folders.
if CGLM_CLIPSPACE_INCLUDE_ALL
is defined then all clipspace headers are icluded in cam.h or related main headers, otherwise only related clipspace headers will be included to avoid including unused headers...
New Features
- #195 nlerp for quaternions ( thanks to @legends2k )
Bugfix and Improvements
- simd: optimize glm_mat4_zero() with simd
- simd, sse: optimize mat4 inv with sse
- reduce a few shufflees
- re-oder instructions for ILP
- simd, sse: optimize mat4 mul with sse
- simd, sse: optimize mat4 mul-v with sse
- arm neon: optimize mat4 mul with neon
- arm neon: optimize affine with neon
- sse: optimize affine with sse
- sse: optimize glm_quat_mul with sse
- sse: optimize glm_mat2_mul_sse2 with sse
- sse2: optimize glm_mat3_mul_sse2() with sse2
- simd, sse: reduce some computation at glm_mul_rot_sse2()
- arm, neon: impove hadd performance
- arm, neon: use negate instruction instead of xor in glm_inv_tr_neon()
- style: rename nearVal, farVal to nearZ and farZ
- #192 fix function param type ( thanks to @Winter091 )
- other improvements may not be mentioned 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: