DirectXMath

DirectXMath is an all inline SIMD C++ linear algebra library for use in games and graphics apps

MIT License

Stars
1.5K
Committers
9

Bot releases are visible (Hide)

DirectXMath - Windows 10 Creators Update SDK (15063)

Published by walbourn over 7 years ago

DirectXMath 3.10 is included with the Windows 10 Creators Update SDK (15063) that comes with the VS 2017 (15.1 update)

  • Added XMVectorSum for horizontal adds
  • ARMv8 intrinsics use for ARM64 platform (division, rounding, half-precision conversion)
  • Added SSE3 codepaths using opt-in _XM_SSE3_INTRINSICS_
  • XMVectorRound fix for no-intrinsics to match round-to-nearest (even)
  • XMStoreFloat3SE fix when max channel isn't a perfect power of 2
  • constexpr conformance fix and workaround for compiler bug in VS 2015 RTM
  • Remove support for VS 2012 compilers
  • Remove __vector4i deprecated type

See this post

This version is also available on NuGet.

DirectXMath - Windows 10 Creators Update SDK Preview

Published by walbourn almost 8 years ago

This is a preview of DirectXMath 3.10 that was shipped in the Windows 10 Creators Update SDK Preview builds (15003, 15021,15042,15052).

DirectXMath - Windows 10 Anniversary Update SDK (14393)

Published by walbourn about 8 years ago

DirectXMath 3.09 released in the Windows 10 Anniversary Update SDK (14393) and is included in Visual Studio 2015 Update 3 with Windows Tools 1.4.1.

  • Includes support for additional optimizations when built with /arch:AVX or /arch:AVX2
  • Added use of constexpr for type constructors, XMConvertToRadians, and XMConvertToDegrees
  • Marked __vector4i, XMXDEC4, XMDECN4, XMDEC4, and associated Load & Store functions as deprecated.
    • These are vestiges of Xbox 360 support and will be removed in a future release.
  • Renamed parameter in XMMatrixPerspectiveFov* to reduce user confusion when relying on IntelliSense
  • XMU565, XMUNIBBLE4 constructors take uint8_t instead of int8_t

See this post.

This version is also available on NuGet.

DirectXMath - May 2016

Published by walbourn over 8 years ago

DirectXMath 3.08 is now available under the MIT license

This version is also available on NuGet.

DirectXMath - Windows 10 SDK November 2015 update (10586)

Published by walbourn over 8 years ago

DirectXMath 3.08 released in Visual Studio 2015 Update 1 with Windows Tools 1.2.

  • Added use of _mm_sfence for Stream methods
  • Fixed bug with non-uniform scaling transforms for BoundingOrientedBox
  • Added asserts for Near/FarZ in XMMatrix* methods
  • Added use of =default for PODs with VS 2013/2015
  • Additional SSE and ARM-NEON optimizations for PackedVector functions

See this post.

This version is also available on NuGet.

DirectXMath - Windows SDK for Windows 8.1 (Spring 2015 Update)

Published by walbourn over 8 years ago

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.

DirectXMath - Windows SDK for Windows 8.1

Published by walbourn over 8 years ago

DirectXMath 3.06 shipped in Visual Studio 2013 RTM

  • Fixed load/store of XMFLOAT3SE to properly match the DXGI_FORMAT_R9G9B9E5_SHAREDEXP
  • Added XMLoadUDecN4_XR and XMStoreUDecN4_XR to match DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
  • Added XMColorRGBToSRGB and XMColorSRGBToRGB to convert linear RGB <-> sRGB

See this post, as well as this post for known issues.

This version is also available on NuGet

DirectXMath - Windows SDK for Windows 8.1 Preview

Published by walbourn over 8 years ago

DirectXMath 3.05 shipped in the Visual Studio 2013 Preview

  • Use x86/x64 __vectorcall calling-convention when available (XM_CALLCONV, HXMVECTOR, FXMMATRIX introduced)
  • Fixed bug with XMVectorFloor and XMVectorCeiling when given whole odd numbers (i.e. 105.0)
  • Improved XMVectorRound algorithm
  • ARM-NEON optimizations for XMVectorExp2, XMVectorLog2, XMVectorExpE, and XMVectorLogE
  • 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

DirectXMath - March 2013

Published by walbourn over 8 years ago

DirectXMath 3.04

  • XMVectorExp2, XMVectorLog2, XMVectorExpE, and XMVectorLogE functions added to provide base-e support in addition to the existing base-2 support
  • XMVectorExp and XMVectorLog are now aliases for XMVectorExp2 and XMVectorLog2
  • Additional optimizations for Stream functions
  • XMVector3Cross now ensures w component is zero on ARM
  • XMConvertHalfToFloat and XMConvertFloatToHalf now use IEEE 754 standard float16 behavior for INF/QNAN
  • Updated matrix version Transform for BoundingOrientedBox and BoundingFrustum to handle scaling
DirectXMath - Windows SDK for Windows 8

Published by walbourn over 8 years ago

DirectXMath 3.03 shipping for Visual Studio 2012

  • Breaking change: Removed union members from XMMATRIX type to make it a fully 'opaque' type
  • Marked single-parameter C++ constructors for XMFLOAT2, XMFLOAT2A, XMFLOAT3, XMFLOAT3A, XMFLOAT4, and XMFLOAT4A explicit

See this post, and this post for known issues.

This version is also available on NuGet.

DirectXMath - Windows SDK For Windows 8 Consumer Preview

Published by walbourn over 8 years ago

DirectXMath shipping for ''VS 11 Beta''

  • ARM-NEON intrinsics (selected by default for the ARM platform)
  • reworked XMVectorPermute, change of XM_PERMUTE_ defines, removal of XMVectorPermuteControl
  • 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_SIZE define, XMVectorExpEst, XMVectorLogEst, XMVectorPowEst, XMVectorSinHEs, XMVectorCosHEst, XMVectorTanHEst, XMVector2InBoundsR, XMVector3InBoundsR, XMVector4InBoundsR)
  • Removed XM_STRICT_VECTOR4; XMVECTOR in NO-INTRINSICS always defined without .x, .y, .z, .w, .v, or .u
  • Additional bounding types
  • SAL fixes and improvements

See this post.

DirectXMath - Windows SDK For Windows 8 Developer Preview

Published by walbourn over 8 years ago

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.

DirectXMath - July 2012

Published by walbourn over 8 years ago

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, and XMVectorInsert
  • The XM_STRICT_XMMATRIX compilation define has been added for opaque XMMATRIX.
  • Stream stride and count arguments have been changed to size_t
  • The pDeterminant parameter of XMMatrixInverse is now optional
  • Additional operator= overloads for XMBYTEN4, XMBYTE4, XMUBYTEN4, and XMUBYTE4 types 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 than XM_PERMUTE_* or XM_SWIZZLE_* constants).

See this post.

DirectXMath - February 2011

Published by walbourn over 8 years ago

XNA Math version 2.04 includes the following changes:

  • Addition of new data types and associated load-store functions:
    • XMBYTEN2, XMBYTE2, XMUBYTEN2, XMUBYTE2
    • XMLoadByteN2, XMLoadByte2, XMLoadUByteN2, XMLoadUByte2
    • XMStoreByteN2, XMStoreByte2, XMStoreUByteN2, XMStoreUByte2
    • XMINT2, XMUINT2, XMINT3, XMUINT3, XMINT4, XMUINT4
    • XMLoadSInt2, XMLoadUInt2, XMLoadSInt3, XMLoadUInt3, XMLoadSInt4, XMLoadUInt4
    • XMStoreSInt2, XMStoreUInt2, XMStoreSInt3, XMStoreUInt3, XMStoreSInt4, XMStoreUInt4
  • Marked most single-parameter C++ constructors with explicit keyword
  • Corrected range issues with SSE implementations of XMVectorFloor and XMVectorCeiling

See this post.

DirectXMath - DirectX SDK (June 2010)

Published by walbourn over 8 years ago

XNA Math version 2.03 includes the following changes:

  • Addition of XMVectorDivide to 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/4X4A to better support these types in C++ templates

See this post for known issues.

DirectXMath - DirectX SDK (February 2010)

Published by walbourn over 8 years ago

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

DirectXMath - DirectX SDK (August 2009)

Published by walbourn over 8 years ago

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_SHAREDEXP and DXGI_FORMAT_R11G11B10_FLOAT)
DirectXMath - DirectX SDK (March 2009)

Published by walbourn over 8 years ago

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.