Skip to content

v2.0.0

Latest
Compare
Choose a tag to compare
@bvisness bvisness released this 20 Feb 19:11
· 20 commits to master since this release

After far too long, we are happy to release Handmade Math 2.0. Handmade Math 2.0 introduces the following new features and changes:

  • A concise naming scheme. Handmade Math 1.0 has extremely verbose names. For version 2, we've reworked them to use a terse naming scheme that will make expressions much more readable. Here are some examples:

    • HMM_MultiplyMat4ByVec4 -> HMM_MulM4V4
    • HMM_MultiplyVec3f -> HMM_MulV3F
    • HMM_EqualsVec4 -> HMM_EqV4

    This is obviously an extremely breaking change, but to ease the transition, we provide a tool to automatically rename Handmade Math functions and types in your codebase. See the update folder of the repo.

  • Matrix inverses. We are happy to finally provide our most long-requested feature. We now have a variety of functions for matrix inverses.

  • 2x2 and 3x3 matrices. We now provide types HMM_Mat2 and HMM_Mat3.

  • C11 generics. C programmers can now use "overloaded" functions like HMM_Add instead of HMM_AddV2, HMM_AddV3, etc. Your expressions can now be a little more readable!

  • Consistent (and configurable) angle units. Handmade Math 1.0 used radians for some operations and degrees for others. Handmade Math 2.0 makes all functions use the same angle units - but also makes those units configurable, so you can choose to use radians, degrees, or turns across your codebase. See the documentation in HandmadeMath.h.

  • Left-handed and right-handed operations. Handmade Math 2.0 has both left-handed and right-handed versions of all operations where handedness applies.

This release would not be possible without the help of @dev-dwarf. Many thanks for his contributions!

Other breaking changes:

  • If you use Handmade Math without the standard library, the way you provide custom math functions has changed. You must now #define HANDMADE_MATH_PROVIDE_MATH_FUNCTIONS in addition to #define HMM_SINF etc.
  • HMM_ExpF, HMM_LogF, HMM_Power, and HMM_PowerF have been removed. They were not used internally and provided no benefit.
  • HMM_PREFIX has been removed. If you wish to use a different prefix, find and replace within HandmadeMath.h.
  • Semi-breaking: HMM_InvSqrtF (formerly HMM_RSquareRootF) no longer does a fast inverse square root under any circumstances. It now always does a full-precision square root. This is to ensure consistent results on all platforms.