Vladimír Vondruš
7072befbdb
Math: generalize slicing and expanding to arbitrarily-sized matrices.
...
Originally was done only for square matrices, but now I need that for
converting 3x3 -> 3x4 and back (UBO packing, ugh ugh), so let's
generalize.
5 years ago
Vladimír Vondruš
a347a2b3bd
Math: make it possible to create an identity RectangularMatrix as well.
5 years ago
Vladimír Vondruš
7413d2053f
Math: doc++
5 years ago
Vladimír Vondruš
3d136503d8
Updated copyright year.
5 years ago
Vladimír Vondruš
5a1f43f20b
Switch to the new & optimized GenerateSequence from Corrade.
...
This should help slightly with compiler memory usage, on GCC 10 the huge
Trade::MaterialData test used "only" 309 instead of 318 MB after this
change.
5 years ago
Vladimír Vondruš
1026aee80e
Moved the NoInit tag from Math to the root namespace.
...
The old one is deprecated, and will be removed in a future release.
Unfortunately, to avoid deprecation warnings, all use of NoInit in the
Math library temporarily have to be Magnum::NoInit This will be cleaned
up when the deprecated alias is removed.
6 years ago
Vladimír Vondruš
19e0e96d74
Updated copyright year.
6 years ago
Vladimír Vondruš
22118c754d
Math: attempt to deconfuse orthogonalization/orthonormalization a bit.
6 years ago
Vladimír Vondruš
f74fd5cb08
Add typedefs for half-float and 8-/16-bit packed matrices.
6 years ago
Vladimír Vondruš
a920722839
doc: label deprecated APIs and stuff new since 2019.10 with version info.
...
Should make new things more discoverable, avoid confusion when a
documented API isn't there and reduce the need for maintaining multiple
separate versions of the docs.
7 years ago
Vladimír Vondruš
de3f8858f0
Math: now that we have a standalone cofactor(), inline its internals.
...
Apparently this gives a nearly three-times speed up compared to before.
Didn't expect that.
Starting Magnum::Math::Test::MatrixBenchmark with 16 test cases...
INFO Benchmarking a debug build.
BENCH [01] 95.33 ± 4.52 ns multiply3()@499x10000 (wall time)
BENCH [02] 183.99 ± 9.29 ns multiply4()@499x10000 (wall time)
BENCH [03] 110.17 ± 8.50 ns comatrix3()@49x10000 (wall time)
BENCH [04] 161.54 ± 10.13 ns invert3()@49x10000 (wall time)
BENCH [05] 471.44 ± 19.40 ns invert3GaussJordan()@49x10000 (wall time)
BENCH [06] 320.65 ± 13.23 ns invert3Rigid()@49x10000 (wall time)
BENCH [07] 206.27 ± 9.80 ns invert3Orthogonal()@49x10000 (wall time)
BENCH [08] 321.25 ± 18.82 ns comatrix4()@49x10000 (wall time)
BENCH [09] 445.50 ± 15.18 ns invert4()@49x10000 (wall time)
BENCH [10] 828.55 ± 16.96 ns invert4GaussJordan()@49x10000 (wall time)
BENCH [11] 533.23 ± 21.75 ns invert4Rigid()@49x10000 (wall time)
BENCH [12] 345.56 ± 10.16 ns invert4Orthogonal()@49x10000 (wall time)
BENCH [13] 63.72 ± 6.85 ns transformVector3()@999x10000 (wall time)
BENCH [14] 62.28 ± 4.43 ns transformPoint3()@999x10000 (wall time)
BENCH [15] 82.05 ± 7.96 ns transformVector4()@999x10000 (wall time)
BENCH [16] 79.32 ± 2.41 ns transformPoint4()@999x10000 (wall time)
Finished Magnum::Math::Test::MatrixBenchmark with 0 errors out of 5500 checks.
7 years ago
Vladimír Vondruš
515637c76a
Math: implement a robust and faster Matrix4::normalMatrix().
...
This change makes the operations split into a bunch of separate
functions, making the parts easier to document, however with a slight
negative effect on debug performance:
Starting Magnum::Math::Test::MatrixBenchmark with 16 test cases...
INFO Benchmarking a debug build.
BENCH [01] 94.54 ± 3.62 ns multiply3()@499x10000 (wall time)
BENCH [02] 183.47 ± 7.50 ns multiply4()@499x10000 (wall time)
BENCH [03] 318.11 ± 11.59 ns comatrix3()@49x10000 (wall time)
BENCH [04] 379.51 ± 12.17 ns invert3()@49x10000 (wall time)
BENCH [05] 448.23 ± 17.61 ns invert3GaussJordan()@49x10000 (wall time)
BENCH [06] 338.96 ± 11.61 ns invert3Rigid()@49x10000 (wall time)
BENCH [07] 206.37 ± 10.59 ns invert3Orthogonal()@49x10000 (wall time)
BENCH [08] 879.40 ± 20.03 ns comatrix4()@49x10000 (wall time)
BENCH [09] 1.16 ± 0.03 µs invert4()@49x10000 (wall time)
BENCH [10] 825.40 ± 17.34 ns invert4GaussJordan()@49x10000 (wall time)
BENCH [11] 534.86 ± 15.73 ns invert4Rigid()@49x10000 (wall time)
BENCH [12] 347.36 ± 11.62 ns invert4Orthogonal()@49x10000 (wall time)
BENCH [13] 65.70 ± 6.73 ns transformVector3()@999x10000 (wall time)
BENCH [14] 62.56 ± 3.09 ns transformPoint3()@999x10000 (wall time)
BENCH [15] 81.25 ± 2.78 ns transformVector4()@999x10000 (wall time)
BENCH [16] 82.14 ± 4.26 ns transformPoint4()@999x10000 (wall time)
Finished Magnum::Math::Test::MatrixBenchmark with 0 errors out of 5500 checks.
7 years ago
Vladimír Vondruš
4b4b8efc1b
Math: doc++
...
Fixing Engrish while doing the Python bindings.
7 years ago
Vladimír Vondruš
3fb90cdf5c
Math: remove obsolete Doxygen workarounds.
7 years ago
Vladimír Vondruš
36ba5f4333
Math: ensure ZeroInit and IdentityInit constructors are explicit.
...
Like NoInit ones. Not sure what I was doing there.
7 years ago
Vladimír Vondruš
b61f8262e9
Math: inline a helper function.
7 years ago
Vladimír Vondruš
e4e90bd75c
Math: explicitly specialize 3x3 matrix determinant.
...
Together with the operator[] deinilining that makes matrix inverse
almost six times faster than before. Now 2x faster in debug builds than
GLM (was 3x slower before).
7 years ago
Vladimír Vondruš
05b1cefda5
Math: avoid operator[] calls where possible (and not too verbose).
...
In debug builds (where nothing is inlined), this makes matrix
multiplication run in 33% of the time and matrix inversion roughly twice
as fast.
7 years ago
Vladimír Vondruš
64bc7f9c8e
Math: moved configuration value parsers to a dedicated header.
...
There's a lot of string operations and that's nothing good to have
included everywhere. Should speed up the compilation quite a bit.
7 years ago
Vladimír Vondruš
5fc246b908
Math: compile forgotten code snippets.
7 years ago
Vladimír Vondruš
e6b7aa12fa
Updated copyright year.
7 years ago
Vladimír Vondruš
f5e30bb5d3
Math: minor coding style cleanup.
8 years ago
Borislav Stanimirov
f7f2ab8cb5
Math: added StrictWeakOrdering for math types
8 years ago
Vladimír Vondruš
0cf65741ae
Math: helpfully print the offending values in all assertions.
8 years ago
Vladimír Vondruš
8d5454b8ff
Math: ability to slice or expand square matrices.
8 years ago
Vladimír Vondruš
eabe118266
Math: doc++
8 years ago
Vladimír Vondruš
ddde4a3277
Math: removed long-deprecated Matrix::Identity and Matrix::Zero tags.
...
Use Math::IdentityInit and Math::ZeroInit instead.
8 years ago
Vladimír Vondruš
2136466f0f
Math: doc++, add search aliases for GLSL functions.
8 years ago
Vladimír Vondruš
623fa97970
Updated copyright year.
8 years ago
Vladimír Vondruš
05bb8b419a
Math: updates for the new documentation theme.
8 years ago
Vladimír Vondruš
7a16273e5d
Updated copyright year.
9 years ago
Vladimír Vondruš
ae9095de16
Remove most of the "MSVC 2015 can't handle {} here" workarounds.
9 years ago
Vladimír Vondruš
025ef780b2
Workaround for that one damn Doxygen bug.
9 years ago
Vladimír Vondruš
aa69bbcc19
Math: ability to create matrices with one value for all components.
...
In order to do that with the previous API, one had to write an
abomination like
auto a = Matrix4x4::fromVector(Math::Vector<16, Float>{0.5f});
Ugh.
9 years ago
Vladimír Vondruš
6e10b2e205
Math: doc++
...
The TODOs were removed and put into GitHub projects to be a bit more
visible to random strangers.
9 years ago
Vladimír Vondruš
28c31bfc96
Math: I don't see why we should have those overloads.
...
The compiler does that for us. Probably a brain fart from 2010. On the
other hand, the ConfigurationValue specializations need to be there,
because the type is used explicitly as template parameter.
10 years ago
Vladimír Vondruš
1fdd532910
Math: return proper subclass from Matrix::transposed().
10 years ago
Vladimír Vondruš
56e75295be
Math: mention more useful dot product and determinant properties.
10 years ago
Vladimír Vondruš
a2e3c3a3f4
Math: added Algorithms::gaussJordanInverted().
10 years ago
Vladimír Vondruš
3764f5b830
Math: don't zero-initialize output variables if not necessary.
...
Could possibly save some cycles.
10 years ago
Vladimír Vondruš
40d60f6a3f
Math: make all constructor noexcept and test their behavior.
10 years ago
Vladimír Vondruš
23646e6690
Hell, this project is big.
10 years ago
Vladimír Vondruš
b777135116
MSVC 2015 Update 1: in-class constexpr initialization works now.
11 years ago
Vladimír Vondruš
6e8c16c960
MSVC 2015 Update 1: fixed nearly all constexpr bugs.
11 years ago
Vladimír Vondruš
d91cb8f9e8
Disallow default construction of tag types.
...
Caused ambiguous overload problems when using {} in function calls. The tags
should be always specified explicitly.
11 years ago
Vladimír Vondruš
0aa16595eb
Use new-style debug operators everywhere.
11 years ago
Vladimír Vondruš
d805e87f21
MSVC 2015 compatibility: Math conversion constructor constexpr issues.
...
Some could be worked around, but the rest is prevented by inability to
delegate constexpr constructors.
11 years ago
Vladimír Vondruš
d2d0943ffa
MSVC 2015 compatibility: broken multiple definitions of template aliases.
...
Causes the compiler to forget random type declarations. How is that even
possible.
11 years ago
Vladimír Vondruš
0cd3b20ba3
MSVC 2015 compatibility: in-class init of constexpr is not implemented.
...
Breaks backward compatibility in one place, but I think that feature
wasn't widely used anyway so I'm not fixing that.
11 years ago
Vladimír Vondruš
371adc63f9
MSVC 2015 compatibility: the issues with {} are eternal.
...
Aargh.
11 years ago