Commit Graph

337 Commits

Author SHA1 Message Date
Luke Street 6e865b656a MSVC build fix for COLOR macro 2021-10-25 19:17:25 -04:00
Phillip Stephens f3630be9de
Add CVector3f->CEulerAngles constructor to CEulerAngles 2021-07-11 17:56:32 -07:00
Phillip Stephens bb9b4c83af
Fix incorrect division operator 2021-05-23 11:52:00 -07:00
Phillip Stephens 9130bf977e
Add IsNan helper function to CVector3f 2021-05-16 15:29:06 -07:00
Luke Street b3806c03a5 Fixes for MSVC arch detection & SIMD compilation 2021-02-15 21:03:44 -05:00
Luke Street 3c4bcf37d2 Update simd_neon
- Fixes m128d dot3
- Simplifies negate operations
2021-01-09 14:27:27 -05:00
Luke Street 9ea070c2d7 CVector2f: Remove unnecessary constexpr 2021-01-06 20:33:36 -05:00
Luke Street 906e7736a0 Add simd_neon.hpp to CMakeLists 2020-10-20 02:28:17 -04:00
Luke Street 566db657d9 Add NEON support & more constexpr 2020-10-20 02:25:44 -04:00
Phillip Stephens eec855018a
Add countLeadingZeros 2020-09-19 15:43:35 -07:00
Luke Street 58c8a902ac CVector3f/CVector2f: Fix isZero 2020-09-16 00:41:47 -04:00
Luke Street f99184556a CVector3f/CVector2f: Fix clamp in getAngleDiff 2020-04-19 21:01:49 -04:00
Lioncash 5520001117 General: Mark file-scope constexpr variables as inline
Allows the compiler to unify all usages of these constants down to a
single address if they're ODR used, rather than creating an individual
copy within each translation unit.

Unfortunately all file-scope variables don't have inline implied for
them by default (only for static class member variables).

Shrinks the size of the emitted binary a little bit.
2020-04-19 03:22:13 -04:00
Jack Andersen 6c46735ab1 Make zeustest work with nodiscard 2020-04-11 12:50:02 -10:00
Jack Andersen ef35789909 Exclude CMake CXX standard from MSVC 2020-04-10 19:02:01 -10:00
Phillip Stephens 6ac3066a6f
Merge pull request #22 from lioncash/nodiscard
General: Mark functions as nodiscard where applicable
2020-03-04 17:31:13 -08:00
Lioncash 81f9b4a4ee General: Mark functions as nodiscard where applicable
Given this aims to be a general purpose math library for use in various
other libraries applications for axiodl, we can annotate functions that
return by value or reference with [[nodiscard]] where it's very obvious
that not making use of the return value is a bug.

This allows the compiler to diagnose and emit warnings for these API
misuses at compile-time, preventing silent bugs from occurring.

Any cases where not using the return value is desirable may still be
casted to void in order to silence warnings.
2020-03-04 03:07:54 -05:00
Phillip Stephens 97cec53046
Merge branch 'master' of ssh+git://git.axiodl.com/AxioDL/zeus 2020-03-03 16:48:12 -08:00
Phillip Stephens 82c2a2d85b
Minor fixes 2020-03-03 16:47:59 -08:00
Phillip Stephens c70243ff32
Merge pull request #21 from encounter/sse4a
Add SSE4a CPUID check
2019-12-10 20:48:34 -08:00
Luke Street c3671245e2 Add SSE4a CPUID check 2019-12-10 17:09:24 -05:00
Phillip Stephens bf416af1ed
Merge pull request #20 from lioncash/local
CQuaternion: Remove unnecessary local in slerp()
2019-09-21 05:46:07 -07:00
Lioncash 9409825ace CQuaternion: Remove unnecessary local in slerp()
We can turn this assignment into a direct return expression, tidying up
the code a little bit.
2019-09-20 21:01:17 -04:00
Phillip Stephens 949dbff9b8
Merge pull request #19 from lioncash/constexpr
CVector2i: Make CVector2f-related constructor non-constexpr
2019-09-06 00:59:47 -07:00
Lioncash 9045766c52 CVector2i: Make CVector2f-related constructor non-constexpr
These make use of SIMD accessors, which aren't constexpr.
2019-09-06 02:25:33 -04:00
Phillip Stephens 419c1369ee
Merge pull request #18 from lioncash/color
CColor: Correct luminance setting within toHSL()
2019-09-05 19:36:32 -07:00
Lioncash 9f0c1e8218 CColor: Correct luminance setting within toHSL()
The function wasn't setting the luminance out reference, this corrects
that.
2019-09-05 21:27:37 -04:00
Lioncash 53c6c115fe CColor: Use initializer_list version of std::min/std::max where applicable
Same behavior, but less verbose.
2019-09-05 21:21:35 -04:00
Phillip Stephens 63ecd31813
Merge pull request #16 from lioncash/rot
Global: Remove unused rotr/rotl functions
2019-09-04 19:35:25 -07:00
Phillip Stephens 4d0e4f21ab
Merge pull request #15 from lioncash/noexcept
Global: Mark hash_combine_impl() as noexcept
2019-09-04 19:33:47 -07:00
Phillip Stephens 85035bc178
Merge pull request #17 from lioncash/matrix
CMatrix4f: Make copy assignment constexpr
2019-09-04 19:32:56 -07:00
Lioncash 29399159e9 CMatrix4f: Make copy assignment constexpr
Matches the constexpr copy constructor.
2019-09-04 11:59:53 -04:00
Lioncash 76a7129d80 Global: Remove unused rotr/rotl functions
These don't appear to be used by anything, so they can be removed.
2019-09-04 10:37:21 -04:00
Lioncash 3d14be889c Global: Mark hash_combine_impl() as noexcept
This is used with hashes that are declared noexcept, so this should also
be noexcept.
2019-09-04 10:35:27 -04:00
Phillip Stephens 2206497e35
Merge pull request #14 from lioncash/vec
CVector2i: Make interface constexpr where applicable
2019-09-04 01:03:42 -07:00
Lioncash 890c1e28e0 CVector2i: Add static assert for enforcing vector size
Provides compile-time guarantees about struct layout.
2019-09-04 03:05:28 -04:00
Lioncash c39186d3ba CVector2i: Make conversions to float explicit 2019-09-04 02:53:29 -04:00
Lioncash 056515b2d3 CVector2i: Make interface constexpr where applicable
These are just manipulating two integral values, so they can be made
constexpr. While we're at it, we can also apply the noexcept specifier.
2019-09-04 02:53:06 -04:00
Lioncash 3083285c79 CVector2i: Implement operator!= in terms of operator==
Same behavior, but without duplicated inverted logic.
2019-09-04 02:42:58 -04:00
Lioncash 5f892dda81 CVector2i: Remove use of union and unnamed struct
Nothing uses the v data array, so we can remove it entirely. This
removes the use of a compiler extension (anonymous struct), and
simplifies the underlying data within the vector.
2019-09-04 02:41:28 -04:00
Phillip Stephens 35127116f8
Merge pull request #9 from lioncash/docs
General: Amend documentation comments
2019-09-03 19:52:56 -07:00
Phillip Stephens f0a7db2282
Merge pull request #10 from lioncash/using
CColor: Use using where applicable
2019-09-03 19:52:07 -07:00
Phillip Stephens 55ead1bada
Merge pull request #11 from lioncash/array
CFrustum: Use std::array where applicable
2019-09-03 19:51:16 -07:00
Phillip Stephens 7e737b7e26
Merge pull request #13 from lioncash/rel-angle
CRelAngle: Make member functions constexpr where applicable
2019-09-03 19:50:46 -07:00
Phillip Stephens 3d4d304db5
Merge pull request #12 from lioncash/matrix
CMatrix3f/CMatrix4f: Use std::array where applicable
2019-09-03 19:50:12 -07:00
Lioncash a88e50e296 CRelAngle: Make member functions constexpr where applicable
Many of these member functions can be made constexpr, given their
manipulation of a simple internal float.
2019-09-03 16:32:50 -04:00
Lioncash dca23c69d2 CMatrix4f: Use std::array where applicable
Makes for stronger typing and also allows querying the size directly.
2019-09-03 15:06:35 -04:00
Lioncash f03714bdbd CMatrix3f: Use std::array where applicable 2019-09-03 14:49:28 -04:00
Lioncash 0e516b9f0b CFrustum: Use std::array where applicable
Makes the array stronger-typed. We can also use it to convert a few
loops into algorithms.
2019-09-03 14:29:36 -04:00
Lioncash 9058b6bbcc CColor: Use using where applicable
We can also simplify RGBA32's declaration. This also allows the type to
be forward declared.
2019-09-03 14:11:56 -04:00