Game Math: DirectXMath SIMD Library

This package contains the DirectXMath library, an all inline SIMD C++ linear algebra library for use in games and graphics apps.

This code is designed to build with Visual Studio 2019 (16.11), Visual Studio 2022, or clang/LLVM for Windows. It is recommended that you make use of the latest updates.

These components are designed to work without requiring any content from the legacy DirectX SDK. For details, see Where is the DirectX SDK?.

Directory Layout


DirectXMath Files (in the DirectX C++ namespace)

  • DirectXMath.h - Core library
  • DirectXPackedVector.h - Load/Store functions and types for working with various compressed GPU formats
  • DirectXColors.h - .NET-style Color defines in sRGB and linear color space
  • DirectXCollision.h - Bounding volume collision library


Advanced instruction set variants for guarded codepaths

  • DirectXMathSSE3.h - SSE3
  • DirectXMathBE.h - Supplemental SSE3 (SSSE3)
  • DirectXMathSSE4.h - SSE4.1
  • DirectXMathAVX.h - Advanced Vector Extensions (AVX)
  • DirectXMathAVX2.h - Advanced Vector Extensions 2 (AVX2)
  • DirectXMathF16C.h - Half-precision conversions (F16C)
  • DirectXMathFMA3.h - Fused multiply-accumulate (FMA3)
  • DirectXMathFMA4.h - Fused multiply-accumulate (FMA4)


Spherical Harmonics math functions

  • DirectXSH.h - Header for SHMath functions
  • DirectXSH.cpp, DirectXSHD3D11.cpp, DirectXSHD3D12.cpp - Implementation


  • XDSP.h - Digital Signal Processing helper functions


  • Contains YAML files for the build pipelines along with some miscellaneous build files and scripts.


Documentation is available on the Microsoft Docs. Additional information can be found on the project wiki.

Compiler support

Officially the library is supported with Microsoft Visual C++ 2019 or later, clang/LLVM v12 or later, and GCC 9 or later. It should also compile with the Intel C++ and MinGW compilers.

When building with clang/LLVM or other GNU C compilers, the _XM_NO_XMVECTOR_OVERLOADS_ control define is set because these compilers do not support creating operator overloads for the XMVECTOR type. You can choose to enable this preprocessor define explicitly to do the same thing with Visual C++ for improved portability.

To build for non-Windows platforms, you need to provide a sal.h header in your include path. You can obtain an open source version from GitHub.

With GCC, the SAL annotation preprocessor symbols can conflict with the GNU implementation of the Standard C++ Library. The workaround is to include the system headers before including DirectXMath:

#include <algorithm>
#include <utility>

#include <DirectXMath.h>


All content and source code for this package are subject to the terms of the MIT License.

For the latest version of DirectXMath, bug reports, etc. please visit the project site on GitHub.

Download Details:

Author: microsoft

Official Github: 

License: MIT


Game Math: DirectXMath SIMD Library
1.45 GEEK