tag:github.com,2008:https://github.com/HandmadeMath/HandmadeMath/releases Release notes from HandmadeMath 2023-02-20T19:03:46Z tag:github.com,2008:Repository/49993383/v2.0.0 2023-02-20T21:32:39Z v2.0.0 <p>After far too long, we are happy to release Handmade Math 2.0. Handmade Math 2.0 introduces the following new features and changes:</p> <ul> <li> <p><strong>A concise naming scheme.</strong> 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:</p> <ul> <li><code>HMM_MultiplyMat4ByVec4</code> -&gt; <code>HMM_MulM4V4</code></li> <li><code>HMM_MultiplyVec3f</code> -&gt; <code>HMM_MulV3F</code></li> <li><code>HMM_EqualsVec4</code> -&gt; <code>HMM_EqV4</code></li> </ul> <p>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 <code>update</code> folder of the repo.</p> </li> <li> <p><strong>Matrix inverses.</strong> We are happy to finally provide our most long-requested feature. We now have a variety of functions for matrix inverses.</p> </li> <li> <p><strong>2x2 and 3x3 matrices.</strong> We now provide types <code>HMM_Mat2</code> and <code>HMM_Mat3</code>.</p> </li> <li> <p><strong>C11 generics.</strong> C programmers can now use "overloaded" functions like <code>HMM_Add</code> instead of <code>HMM_AddV2</code>, <code>HMM_AddV3</code>, etc. Your expressions can now be a little more readable!</p> </li> <li> <p><strong>Consistent (and configurable) angle units.</strong> 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 <code>HandmadeMath.h</code>.</p> </li> <li> <p><strong>Left-handed and right-handed operations.</strong> Handmade Math 2.0 has both left-handed and right-handed versions of all operations where handedness applies.</p> </li> </ul> <p>This release would not be possible without the help of <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dev-dwarf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dev-dwarf">@dev-dwarf</a>. Many thanks for his contributions!</p> <p>Other breaking changes:</p> <ul> <li>If you use Handmade Math without the standard library, the way you provide custom math functions has changed. You must now <code>#define HANDMADE_MATH_PROVIDE_MATH_FUNCTIONS</code> in addition to <code>#define HMM_SINF</code> etc.</li> <li><code>HMM_ExpF</code>, <code>HMM_LogF</code>, <code>HMM_Power</code>, and <code>HMM_PowerF</code> have been removed. They were not used internally and provided no benefit.</li> <li><code>HMM_PREFIX</code> has been removed. If you wish to use a different prefix, find and replace within <code>HandmadeMath.h</code>.</li> <li>Semi-breaking: <code>HMM_InvSqrtF</code> (formerly <code>HMM_RSquareRootF</code>) 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.</li> </ul> bvisness tag:github.com,2008:Repository/49993383/v2.0.0-rc2 2023-01-27T09:52:42Z v2.0.0-rc2 <p><strong>This is a release candidate for Handmade Math 2.0.</strong> Please try it out and give us feedback.</p> <hr> <p>Changes from last release candidate:</p> <ul> <li>The <code>HANDMADE_MATH_USE_NDC_Z01</code> define has been removed. NDC options are now explicit in the function names, just like handedness. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1556119029" data-permission-text="Title is private" data-url="https://github.com/HandmadeMath/HandmadeMath/issues/154" data-hovercard-type="pull_request" data-hovercard-url="/HandmadeMath/HandmadeMath/pull/154/hovercard" href="https://github.com/HandmadeMath/HandmadeMath/pull/154">#154</a>)</li> <li>Issues with the order of operations for SIMD were resolved. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1552509889" data-permission-text="Title is private" data-url="https://github.com/HandmadeMath/HandmadeMath/issues/152" data-hovercard-type="issue" data-hovercard-url="/HandmadeMath/HandmadeMath/issues/152/hovercard" href="https://github.com/HandmadeMath/HandmadeMath/issues/152">#152</a>)</li> <li>The update tool was rewritten.</li> </ul> <hr> <p>After far too long, we are happy to release Handmade Math 2.0. Handmade Math 2.0 introduces the following new features and changes:</p> <ul> <li> <p><strong>A concise naming scheme.</strong> 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:</p> <ul> <li><code>HMM_MultiplyMat4ByVec4</code> -&gt; <code>HMM_MulM4V4</code></li> <li><code>HMM_MultiplyVec3f</code> -&gt; <code>HMM_MulV3F</code></li> <li><code>HMM_EqualsVec4</code> -&gt; <code>HMM_EqV4</code></li> </ul> <p>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 <code>update</code> folder of the repo.</p> </li> <li> <p><strong>Matrix inverses.</strong> We are happy to finally provide our most long-requested feature. We now have a variety of functions for matrix inverses.</p> </li> <li> <p><strong>2x2 and 3x3 matrices.</strong> We now provide types <code>HMM_Mat2</code> and <code>HMM_Mat3</code>.</p> </li> <li> <p><strong>C11 generics.</strong> C programmers can now use "overloaded" functions like <code>HMM_Add</code> instead of <code>HMM_AddV2</code>, <code>HMM_AddV3</code>, etc. Your expressions can now be a little more readable!</p> </li> <li> <p><strong>Consistent (and configurable) angle units.</strong> 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 <code>HandmadeMath.h</code>.</p> </li> <li> <p><strong>Left-handed and right-handed operations.</strong> Handmade Math 2.0 has both left-handed and right-handed versions of all operations where handedness applies.</p> </li> </ul> <p>This release would not be possible without the help of <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dev-dwarf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dev-dwarf">@dev-dwarf</a>. Many thanks for his contributions!</p> <p>Other breaking changes:</p> <ul> <li>If you use Handmade Math without the standard library, the way you provide custom math functions has changed. You must now <code>#define HANDMADE_MATH_PROVIDE_MATH_FUNCTIONS</code> in addition to <code>#define HMM_SINF</code> etc.</li> <li><code>HMM_ExpF</code>, <code>HMM_LogF</code>, <code>HMM_Power</code>, and <code>HMM_PowerF</code> have been removed. They were not used internally and provided no benefit.</li> <li><code>HMM_PREFIX</code> has been removed. If you wish to use a different prefix, find and replace within <code>HandmadeMath.h</code>.</li> <li>Semi-breaking: Vector length and normalization now uses fast inverse square root by default. This reduces precision, but should still be precise enough for games and graphics applications. (It's also the same level of precision as GLM.)</li> </ul> bvisness tag:github.com,2008:Repository/49993383/2.0.0-rc1 2023-01-23T04:02:24Z 2.0.0-rc1 <p><strong>This is a release candidate for Handmade Math 2.0.</strong> Please try it out and give us feedback.</p> <hr> <p>After far too long, we are happy to release Handmade Math 2.0. Handmade Math 2.0 introduces the following new features and changes:</p> <ul> <li> <p><strong>A concise naming scheme.</strong> 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:</p> <ul> <li><code>HMM_MultiplyMat4ByVec4</code> -&gt; <code>HMM_MulM4V4</code></li> <li><code>HMM_MultiplyVec3f</code> -&gt; <code>HMM_MulV3F</code></li> <li><code>HMM_EqualsVec4</code> -&gt; <code>HMM_EqV4</code></li> </ul> <p>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 <code>update</code> folder of the repo.</p> </li> <li> <p><strong>Matrix inverses.</strong> We are happy to finally provide our most long-requested feature. We now have a variety of functions for matrix inverses.</p> </li> <li> <p><strong>2x2 and 3x3 matrices.</strong> We now provide types <code>HMM_Mat2</code> and <code>HMM_Mat3</code>.</p> </li> <li> <p><strong>C11 generics.</strong> C programmers can now use "overloaded" functions like <code>HMM_Add</code> instead of <code>HMM_AddV2</code>, <code>HMM_AddV3</code>, etc. Your expressions can now be a little more readable!</p> </li> <li> <p><strong>Consistent (and configurable) angle units.</strong> 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 <code>HandmadeMath.h</code>.</p> </li> <li> <p><strong>Left-handed and right-handed operations.</strong> Handmade Math 2.0 has both left-handed and right-handed versions of all operations where handedness applies.</p> </li> </ul> <p>This release would not be possible without the help of <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dev-dwarf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dev-dwarf">@dev-dwarf</a>. Many thanks for his contributions!</p> <p>Other breaking changes:</p> <ul> <li>If you use Handmade Math without the standard library, the way you provide custom math functions has changed. You must now <code>#define HANDMADE_MATH_PROVIDE_MATH_FUNCTIONS</code> in addition to <code>#define HMM_SINF</code> etc.</li> <li><code>HMM_ExpF</code>, <code>HMM_LogF</code>, <code>HMM_Power</code>, and <code>HMM_PowerF</code> have been removed. They were not used internally and provided no benefit.</li> <li><code>HMM_PREFIX</code> has been removed. If you wish to use a different prefix, find and replace within <code>HandmadeMath.h</code>.</li> <li>Semi-breaking: Vector length and normalization now uses fast inverse square root by default. This reduces precision, but should still be precise enough for games and graphics applications. (It's also the same level of precision as GLM.)</li> </ul> bvisness tag:github.com,2008:Repository/49993383/v1.13.0 2021-09-01T00:16:34Z 1.13.0 No content. strangezakary tag:github.com,2008:Repository/49993383/1.12.0 2021-03-07T00:40:43Z 1.12.0 <p>Added Unary Minus operator for <code>HMM_Vec2</code>, <code>HMM_Vec3</code>, and <code>HMM_Vec4</code>.</p> bvisness tag:github.com,2008:Repository/49993383/1.11.1 2020-07-09T13:55:40Z 1.11.1 <ul> <li>Added HMM_PREFIX to a few functions that were missing it (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="653582913" data-permission-text="Title is private" data-url="https://github.com/HandmadeMath/HandmadeMath/issues/120" data-hovercard-type="pull_request" data-hovercard-url="/HandmadeMath/HandmadeMath/pull/120/hovercard" href="https://github.com/HandmadeMath/HandmadeMath/pull/120">#120</a>)</li> </ul> bvisness tag:github.com,2008:Repository/49993383/1.11.0 2020-04-06T15:03:37Z 1.11.0 <ul> <li>Added ability to customize or remove the default <code>HMM_</code> prefix on function names by defining a macro called <code>HMM_PREFIX(name)</code>.</li> </ul> bvisness tag:github.com,2008:Repository/49993383/1.10.0 2019-07-10T18:27:57Z 1.10.0 <ul> <li>Made HMM_Perspective use vertical FOV instead of horizontal FOV for consistency with other graphics APIs.</li> </ul> bvisness tag:github.com,2008:Repository/49993383/1.9.0 2019-03-11T18:19:17Z 1.9.0 <ul> <li>Added SSE versions of quaternion operations.</li> </ul> <p>Thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AntonDan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AntonDan">@AntonDan</a> for his contributions.</p> bvisness tag:github.com,2008:Repository/49993383/1.8.0 2019-03-11T18:18:04Z 1.8.0 <ul> <li>Added fast vector normalization routines that use fast inverse square roots.</li> </ul> bvisness