BigUglySpider / EmuLibs

Selection of libraries designed to be used with Emu projects. This was originally a Math library only, but has since been changed to hold all Emu libraries to enable consistency in changes to dependencies (such as EmuCore modifications).
https://biguglyspider.github.io/math
0 stars 0 forks source link

Matrix update misc math | FastVector #49

Closed BigUglySpider closed 2 years ago

BigUglySpider commented 2 years ago

Regarding the merge of unrelated features

FastVector was added as a spur of the moment change of priorities, due to a solid concept having been designed and wanting to be developed on instead of the very-boiler-plate Matrix functionalities in the MiscMath branch.

For the development of FastVector, it was decided best to branch off from the MiscMath branch to keep any TMP features that may have been added in case their functionality was needed.

Similarly, because there was such a significant difference between MatrixUpdate as a whole and the main dev branch in terms of TMP, the main branch would end up inevitably receiving a double merge of both Matrix and FastVector, so this is simply introducing the double merge.

The actual features

FastVector

A template Vector type which works with Vector templates in a similar relationship to DirectX::XMFLOATX and DirectX::XMVECTOR in the DirectX Math library. The base Vector template retains its adaptive nature when interacting the FastVector, but the FastVector's own interactions are somewhat more restrictive to minimise implicit performance costs and enable the explicit use of SIMD registers.

More information may be found in the FastVector pull request #48, which contains more detail than will be placed here.

Matrix - Miscellaneous Math

Provides miscellaneous mathematics functionalities for the Matrix type, and provides the same common interface for Matrix with similar semantics to Vector.

Provided is a list of included functionalities. Note that for every list entry, there is also a Range- and RangeNoCopy-suffixed variant, C-style function variants as well as the named member functions, and are const-qualified. If there is an exception to any of these, they will be stated explicitly.