Skip to content

v0.8.3: Clipspace Control and Performance Update

Compare
Choose a tag to compare
@recp recp released this 30 May 13:09
· 541 commits to master since this release
e5d88f2

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

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:

https://opencollective.com/cglm#backer