Releases: microsoft/DirectXMath
DirectX SDK (March 2009)
XNA Math provides developers a cross-platform native-code method of generating SIMD instructions without having to resort to special case code. Based on the Xbox 360 SDK's Xbox math library, this set of headers supports the most common vectorized math operations used in graphics and animation. The implementation supports Windows 32-bit (x86) and Windows 64-bit (x64) targets using SSE2 intrinsics, and is fully cross-platform with the optimized Xbox 360 XDK version.
DirectX SDK (June 2010)
XNA Math version 2.03 includes the following changes:
- Addition of
XMVectorDivideto optimize SSE2 vector division operations - Unified handling of floating-point specials between the Windows SSE2 and no-intrinsics implementations
- Use of Visual Studio style SAL annotations
- Modifications to the C++ declarations for
XMFLOAT2A/3A/4A/4X3A/4X4Ato better support these types in C++ templates
See this post for known issues.
July 2012
XNA Math version 2.05 includes the following changes (primarily to be more consistent with DirectXMath):
- Template forms have been added for
XMVectorPermute,XMVectorSwizzle,XMVectorShiftLeft,XMVectorRotateLeft,XMVectorRotateRight, andXMVectorInsert - The
XM_STRICT_XMMATRIXcompilation define has been added for opaqueXMMATRIX. - Stream stride and count arguments have been changed to
size_t - The pDeterminant parameter of
XMMatrixInverseis now optional - Additional operator= overloads for
XMBYTEN4,XMBYTE4,XMUBYTEN4, andXMUBYTE4types are now available
Code written to be portable between XNA Math and DirectXMath should make use of
XM_STRICT_MATRIX&XM_STRICT_VECTOR4, and prefer the use of template forms (using 0-3 or 0-7 indices rather thanXM_PERMUTE_*orXM_SWIZZLE_*constants).
See this post.
February 2011
XNA Math version 2.04 includes the following changes:
- Addition of new data types and associated load-store functions:
XMBYTEN2, XMBYTE2, XMUBYTEN2, XMUBYTE2XMLoadByteN2, XMLoadByte2, XMLoadUByteN2, XMLoadUByte2XMStoreByteN2, XMStoreByte2, XMStoreUByteN2, XMStoreUByte2XMINT2, XMUINT2, XMINT3, XMUINT3, XMINT4, XMUINT4XMLoadSInt2, XMLoadUInt2, XMLoadSInt3, XMLoadUInt3, XMLoadSInt4, XMLoadUInt4XMStoreSInt2, XMStoreUInt2, XMStoreSInt3, XMStoreUInt3, XMStoreSInt4, XMStoreUInt4
- Marked most single-parameter C++ constructors with
explicitkeyword - Corrected range issues with SSE implementations of
XMVectorFloorandXMVectorCeiling
See this post.
DirectX SDK (February 2010)
A minor revision to the library (version 2.02), includes a number of customer-reported fixes, optimizations, and improvements. Included are notable fixes to XMStoreColor, XMQuaternionRotationMatrix, XMVectorATan2, and XMVectorATan2Est
DirectX SDK (August 2009)
XNA Math, version 2.01, now has new compiler directive, XM_STRICT_VECTOR4. This opt-in directive disallows the usage of XboxMath-like member accessors such as .x, .y, and .z. This makes it easier to write portable XNA Math code.
Additionally, XNA Math has added conversion support for the following Windows graphics formats:
- 16-bit color formats (565, 555X, 5551)
- 4-bits per channel color formats (4444)
- Unique Direct3D 10/11 formats (
DXGI_FORMAT_R9G9B9E5_SHAREDEXPandDXGI_FORMAT_R11G11B10_FLOAT)
Windows SDK for Windows 8.1 (Spring 2015 Update)
DirectXMath 3.07 in VS 2013 Update 5 and VS 2015 RTM, the Windows phone 8.1 SDK Spring 2015 update, and the Windows 10 SDK (10240).
- Fix customer reported bugs in BoundingBox methods
- Fix customer reported bug in
XMStoreFloat3SE - Fix customer reported bug in
XMVectorATan2,XMVectorATan2Est - Fix customer reported bug in
XMVectorRound
See this post.
This version is also available on NuGet.
Windows SDK For Windows 8 Developer Preview
New revision as DirectXMath (version 3.00) shipping in the ''VS 11 Developer Preview''.
- Renamed and reorganized the headers
- Introduced C++ namespaces (
DirectX,DirectX::PackedVector) - Removed the Xbox 360-specific GPU types (
HENDN3,XMHEND3,XMUHENDN3,XMUHEND3,XMDHENN3,XMDHEN3,XMUDHENN3,XMUDHEN3,XMXICON4,XMXICO4,XMICON4,XMICO4,XMUICON4,XMUICO4)
See this post.
Windows SDK for Windows 8.1 Preview
DirectXMath 3.05 shipped in the Visual Studio 2013 Preview
- Use x86/x64
__vectorcallcalling-convention when available (XM_CALLCONV, HXMVECTOR, FXMMATRIX introduced) - Fixed bug with
XMVectorFloorandXMVectorCeilingwhen given whole odd numbers (i.e. 105.0) - Improved
XMVectorRoundalgorithm - ARM-NEON optimizations for
XMVectorExp2,XMVectorLog2,XMVectorExpE, andXMVectorLogE - ARM-NEON code paths use multiply-by-scalar intrinsics when supported
- Additional optimizations for ARM-NEON Stream functions
- Fixed potential warning C4723 using operator/ or operator/=
See this post
Windows SDK For Windows 8 Consumer Preview
DirectXMath shipping for ''VS 11 Beta''
- ARM-NEON intrinsics (selected by default for the ARM platform)
- reworked
XMVectorPermute, change ofXM_PERMUTE_defines, removal ofXMVectorPermuteControl - Addition of
XM_SWIZZLE_defines - Optimizations for transcendental functions
- Template forms for permute, swizzle, shift-left, rotate-left, rotation-right, and insert
- Removal of deprecated types and functions (
XM_CACHE_LINE_SIZEdefine,XMVectorExpEst,XMVectorLogEst,XMVectorPowEst,XMVectorSinHEs,XMVectorCosHEst,XMVectorTanHEst,XMVector2InBoundsR,XMVector3InBoundsR,XMVector4InBoundsR) - Removed
XM_STRICT_VECTOR4;XMVECTORin NO-INTRINSICS always defined without .x, .y, .z, .w, .v, or .u - Additional bounding types
- SAL fixes and improvements
See this post.