21 KiB
21 KiB
DirectX Tool Kit for DirectX 12
http://go.microsoft.com/fwlink/?LinkID=615561
Release available for download on GitHub
Release History
September 4, 2024
- HLSL shaders built with
-HV 2021
when using DXIL - DirectX Tool Kit for Audio update
- Add
IsValid
method to AudioEmitter and AudioListener
- Add
- Sync'd DDS.H with latest changes from DirectXTex
- CMake project updates including support for ARM64EC
- Minor code review
- Added GitHub Actions YAML files
June 4, 2024
- breaking change
CreateUploadBuffer
helper no longer takes initialState parameter as it must be a specific value - Renamed Internal namespace to ToolKitInternal for some conformance issues
- Updated D3DX12 internal copy with latest changes from DirectX-Headers GitHub
- Add
c_initialRead/UAVTargetState
to help with PC vs. Xbox validation warnings - CMake project updates
- Retired VS 2019 projects for the UWP platform
February 21, 2024
- Project updates for GDK validation
- Shaders are now built with full path for improved PIX debugging support
- CMake project updates and refactor including pkg-config file generation
- Minor code review for Clang, MinGW, and Intel compilers
December 31, 2023
- Fix WAVFileReader bugs with bounds checking
- CMake project updates
- Code review
October 28, 2023
- Added
CreateUploadBuffer
andCreateUAVBuffer
helpers - Fixed validation bug with WIC loader when using autogen and force RGBA together
- Fixed minor link issue with a Xbox PIX custom memory method
- Xbox shader compilation now uses
-HV 2021
- Additional methods for DirectX Tool Kit for Audio emitter for linear and inverse-square falloff curves
September 1, 2023
- GraphicsMemory updated to use Xbox PIX custom memory events with optional tags
- Retired ARM (32-bit) support for the UWP platform
- CMake project updates
June 13, 2023
- Root Signature updates to resolve some warnings from Xbox PIX
- CMake project updates
April 28, 2023
- Updated D3DX12 internal copy with latest changes from DirectX-Headers GitHub
- CMake project updates and fixes for clang/LLVM v16 warnings
March 30, 2023
- DirectX Tool Kit for Audio updates
- Reworked audio device enumeration for XAudio 2.9 to use MMDeviceEnumerator rather than Windows Runtime APIs
GetOutputFormat
now reports sample rate and bit-depth from the audio device properties- New method
GetOutputSampleRate
added to return the input sample rate of the mastering voice Resume
now handles device failure by switching to silent mode
- CMake project updates
- Retired VS 2017 legacy Xbox One XDK projects
February 6, 2023
- Fixed warnings when using GPU-based validation on PC
- Mouse relative mode now accumulates multiple delta updates per frame. Added new optional but recommended method
EndOfInputFrame
. - Fixed out-of-bounds read bug in the .WAV file reader.
- Additional checks added to DDSTextureLoader for planar video formats.
- CMake project updates
December 15, 2022
- DirectXHelpers updated with CreateUnorderedAccessView, CreateRenderTargetView, CreateBufferShaderResourceView, and CreateBufferUnorderedAccessView helpers
- Added EnableLighting method to
EffectFactory
to support creating unlit model materials - GamePad, Keyboard, and Mouse headers have
USING_XINPUT
,USING_GAMEINPUT
,USING_WINDOWS_GAMING_INPUT
defines - Updates for GameInputCreate failure handling on PC
- Updated D3DX12 internal copy with latest changes from DirectX-Headers GitHub
- CMake project updated to require 3.20 or later
- CMake and MSBuild project updates
- Minor MinGW code changes
- Added Azure Dev Ops Pipeline YAML files
- Test suite updated with CTest support
October 17, 2022
- Additional methods for DirectX Tool Kit for Audio emitter and listener for cone and falloff curves
- Added use of C++11 inline namespaces to make it possible to link both DX11 and DX12 versions at once
- Minor fix for
CompileShaders.cmd
to address additional 'paths with spaces' issues - Minor CMake update
July 29, 2022
- DDSTextureLoader
Ex
functions now support aDDS_LOADER_IGNORE_SRGB
flag. - Fixed Mouse race-condition with changing mode and resetting scroll wheel at the same time.
- Updates for MinGW ABI fixes in the latest DirectX-Headers.
- CMake and MSBuild project updates
- Minor code review
June 15, 2022
- GamePad, Keyboard, and Mouse updated to use GameInput on PC for the Gaming.Desktop.x64 platform
- CMake project updates
- Minor code review
May 9, 2022
- C++20 spaceship operator updates for SimpleMath
- Fixed missing VertexPositionNormal::InputLayout
- Minor updates for VS 2022 (17.2)
- CMake project updates (now supports MSVC, clang/LLVM, and MinGW)
- Updated D3DX12 internal copy with latest changes from DirectX-Headers GitHub
- Retired VS 2017 projects
- Minor code review
- Reformat source using updated .editorconfig settings
March 24, 2022
- Fixed bug in UWP implementation of Mouse that combined vertical/horizontal scroll-wheel input
- Code refactoring for input classes (GamePad, Keyboard, and Mouse)
- Update build switches for SDL recommendations
- CMake project updates and UWP platform CMakePresets
- Fixed constexpr compat issue with DEFINE_ENUM_FLAG_OPERATORS in legacy Xbox One XDK
- Dropped support for legacy Xbox One XDK prior to April 2018
February 28, 2022
- Minor fix to DescriptorHeap Increment() to return uint32_t instead of size_t
- Updated D3DX12 internal copy with latest changes from GitHub
- SimpleMath Matrix updated with ToEuler and Vector3 version of CreateFromYawPitchRoll methods
- SimpleMath Quaternion updated with ToEuler, RotateTowards, FromToRotation, LookRotation, and Angle methods
- Keyboard updated with new IME On/Off v-keys
- Win32 Mouse now uses
WM_ACTIVATE
for more robust behavior - DirectX Tool Kit for Audio updated for Advanced Format (4Kn) wavebank streaming
- Code and project review including fixing clang v13 warnings
- Added CMakePresets.json
November 8, 2021
- VS 2022 support
- Updated D3DX12 internal copy with latest change from GitHub
- Minor code and project review
October 18, 2021
- Fixed loading of skinned PBR models from SDKMESH v2
- Minor code review updates
October 13, 2021
- Added skinning support for NormalMapEffect and PBREffect
- Common states updated with support for reverse z-buffer rendering with DepthReverseZ and DepthReadReverseZ methods.
- Effect factory updates
- Updated to use
SkinnedNormalMapEffect
/SkinnedPBREffect
as appropriate. - PBR now supports 'untextured' models (always requires texture coordinates) with use of diffuse color for constant albedo, and specular power for an estimated constant roughness.
- Updated to use
- Model loader updates
- SDKMESH loader no longer requires precomputed vertex tangents for normal mapping as we don't use them.
- Added
ModelLoader_DisableSkinning
flag when dealing with legacy SDKMESH files with too many skinning bone influences for MaxBone
- Fix for BGRA auto-generation of mipmaps on some hardware
- Minor update for the Mouse implementation for GameInput
- Project and code cleanup
September 30, 2021
- Added ModelBone support for transformation hierarchies
- Rigid-body & skinned animation Draw support added to Model
- Support for loading Visual Studio
CMO
models added using BasicEffect or SkinnedEffect materials - Added type aliases
Model::EffectCollection
,ModelMeshPart::InputLayoutCollection
,GeometricPrimitive::VertexCollection
andIndexCollection
- Fixed handle leak in ResourceUploadBatch
- Updated ScopeBarrier to conform with C++14
std::initializer_list
- VS 2017 projects updated to require the Windows 10 SDK (19401) and make use of Shader Model 6.0
- Code review updates
August 1, 2021
- DebugEffect, NormalMapEffect, and PBREffect updated with instancing support
- GeometricPrimitive updated with DrawInstanced method
- ToneMapPostProcess updated with SetColorRotation method
- Added VS 2022 Preview projects
- Minor code review
June 9, 2021
- VS 2019 projects now use Shader Model 6 to build shaders (CMake has build option)
- DirectX Tool Kit for Audio updates:
- Fixed mono source panning
- Added
EnableDefaultMultiChannel
helper to AudioEmitter for multi-channel source setup - Added
GetChannelCount
accessor to SoundEffectInstance and SoundStreamInstance Apply3D
can now use X3DAUDIO_LISTENER and X3DAUDIO_EMITTER directly or the library helper structs.
- Minor code review
April 6, 2021
- DDSTextureLoader updated to accept nVidia Texture Tool v1 single-channel and dual-channel files marked as RGB instead of LUMINANCE
- Fixed ScreenGrab for reserved and MSAA resources
- Minor code and project cleanup
January 9, 2021
- Code review for improved conformance
- CMake updated to support package install
November 11, 2020
- Fixed
/analyze
warnings in GameInput usage - Updated D3DX12 internal copy with latest change from GitHub
- Sync'd DirectX Tool Kit for Audio with DX11 version
- Minor code and project cleanup
September 30, 2020
- GamePad class updated with
c_MostRecent
constant for-1
player index special behavior- For GameInput API implementation, also added
c_MergedInput
- For GameInput API implementation, also added
- Fixed bug in WICTextureLoader that resulted in
WINCODEC_ERR_INSUFFICIENTBUFFER
for some resize requests - Fixed
.wav
file reading of MIDILoop chunk - Minor code cleanup
August 15, 2020
- breaking change Converted default bool parameters on some effects to
EffectFlags
:- Added new effects flags
Specular
,Emissive
,Fresnel
, andVelocity
- Removed EnvironmentMapEffect
fresnelEnabled
,specularEnabled
parameters - Removed NormalMapEffect
specularMap
parameter - Removed PBREffect
emissive
,generateVelocity
parameters - Removed SkinnedEffect
weightsPerVertex
parameter (always uses 4 bones)
- Added new effects flags
- EnvironmentMapEffect now supports cubemaps, spherical, and dual-parabola environment maps
- Fixed bug with ScreenGrab with 'small alignment' textures
- Code review and project updates
- Added GDK projects
July 2, 2020
- Improved SpriteFont drawing performance in Debug builds
- Regenerated shaders using Windows 10 May 2020 Update SDK (19041)
- Code cleanup for some new VC++ 16.7 warnings
- CMake updates
June 15, 2020
- DescriptorHeap / DescriptorPile updated with additional ctor
- EffectTextureFactory ctor parameter updated with default value
- Code cleanup for some new VC++ 16.7 warnings and static code analysis
June 1, 2020
- Added BufferHelpers header with functions CreateStaticBuffer and CreateTextureFromMemory
- Added IsPowerOf2 helper to DirectXHelpers
- SpriteBatch now supports providing a new heap-based sampler on calls to Begin
- Converted to typed enum bitmask flags (see release notes for details on this potential breaking change)
AUDIO_ENGINE_FLAGS
,DDS_LOADER_FLAGS
,ModelLoaderFlags
,SOUND_EFFECT_INSTANCE_FLAGS
, andWIC_LOADER_FLAGS
- WICTextureLoader for
PNG
codec now checksgAMA
chunk to determine colorspace if thesRGB
chunk is not found for legacy sRGB detection. WIC_LOADER_SRGB_DEFAULT
flag added when loading image via WIC without explicit colorspace metadata- CMake project updates
May 10, 2020
- ResourceUploadBatch updated to support usage with copy & compute queues
- Transition methods added for GeometricPrimtive and Model for use with static VBs/IBs
- WICTextureLoader updated with new loader flags:
FORCE_RGBA32
,FIT_POW2
, andMAKE_SQUARE
- SimpleMath no longer forces use of d3d11.h or d3d12.h (can be used with d3d9.h for example)
- DirectX Tool Kit for Audio updated with SoundStreamInstance class for async I/O playback from XACT-style streaming wavebanks
- Code cleanup
- Updated D3DX12 internal copy to Windows 10 SDK (19041) version
April 3, 2020
- Updated D3DX12 internal copy to latest version
- SpriteFont MeasureString / MeasureDrawBounds fixes for !ignoreWhitespace
- Regenerated shaders using Windows 10 SDK (19041)
- Upgraded to use root signature 1.1 which requires Windows 10 (14393) or later
- Code review (
constexpr
/noexcept
usage) - CMake updated for PCH usage with 3.16 or later
February 24, 2020
- breaking change Model::CreateFromxxx parameter order changed and added ModelLoaderFlags
- Added
ignoreWhitespace
defaulted parameter to SpriteFont Measure methods - Sync'd DirectX Tool Kit for Audio and GamePad with DX11 version
- Fixed encoding issue with Utilities.fxh
- Code and project cleanup
- Retired VS 2015 projects
December 17, 2019
- Added ARM64 platform to VS 2019 Win32 desktop Win10 project
- Added Vector
operator/
by float scalar to SimpleMath - Added GetStatistics method to GraphicsMemory
- Reduced fence object usage in GraphicsMemory's LinearAllocator
- Updated CMake project
- Code cleaup
October 17, 2019
- Added optional
forceSRGB
parameter to SaveWICTextureToFile - GamePad updated to report VID/PID (when supported)
- Minor code cleanup
August 21, 2019
- Updated D3DX12 internal copy to latest version
- Code cleanup
June 30, 2019
- Clang/LLVM warning cleanup
- Renamed
DirectXTK_Windows10.vcxproj
to_Windows10_2017.vcxproj
- Added VS 2019 UWP project
May 30, 2019
- PBREffect updated with additional set methods
- Additional debugging output for GraphicsMemory in error cases
- Added CMake project files
- Code cleanup
April 26, 2019
- Updated auto-generated mipmaps support to make it more robust
- Added optional LoadStaticBuffers method for GeometricPrimitive
- Added VS 2019 desktop projects
- Fixed guards w.r.t. to windows.h usage in Keyboard/Mouse headers
- Added C++/WinRT SetWindow helper to Keyboard/Mouse
- Update HLSL script to use Shader Model 5.1 instead of 5.0
- Code cleanup
February 7, 2019
- Model now supports loading
SDKMESH v2
models - PBREffectFactory added to support PBR materials
- PBREffect and NormalMapEffect shaders updated to support
BC5_UNORM
compressed normal maps - SpriteFont: DrawString overloads for UTF-8 chars in addition to UTF-16LE wide chars
- Fixed bug with GraphicsMemory dtor introduced with mGPU handling
- Made library agnostic to legacy Windows SDK pix.h vs. latest pix3.h from NuGet
November 16, 2018
- VS 2017 updated for Windows 10 October 2018 Update SDK (17763)
- ARM64 platform configurations added to UWP projects
- Minor code review
October 31, 2018
- Model loader for SDKMESH now attempts to use legacy DE3CN compressed normals
- This is an approximation only and emits a warning in debug builds
- IEffectTextureFactory's CreateTexture interface method now returns the 'slot'
- This is for use with GetResource method
- Minor code review
October 25, 2018
- Use UTF-8 instead of ANSI for narrow strings
- Updated D3DX12 internal copy to latest version
- Improved debug diagnostics
- Minor code review
September 13, 2018
- Broke DescriptorHeap header dependency on D3DX12.H
August 17, 2018
- Improved validation for 16k textures and other large resources
- Improved debug output for failed texture loads and screengrabs
- Updated for VS 2017 15.8
- Code cleanup
July 3, 2018
- Model LoadStaticBuffers method to use static vs. dynamic VB/IB
- breaking change Custom Model loaders and renderers should be updated for changes to ModelMeshPart
- ModelMeshPart DrawInstanced method added
- Code and project cleanup
May 31, 2018
- VS 2017 updated for Windows 10 April 2018 Update SDK (17134)
- Regenerated shaders using Windows 10 April 2018 Update SDK (17134)
May 14, 2018
- EffectPipelineStateDescription updated with GetDesc method
- Updated for VS 2017 15.7 update warnings
- Code and project cleanup
April 23, 2018
- AlignUp, AlignDown template functions in DirectXHelpers.h
- ScopedBarrier added to DirectXHelpers.h
- Mouse support for cursor visibility
- SimpleMath and VertexTypes updated with default copy and move ctors
- SimpleMath updates to use constexpr
- Basic multi-GPU support added
- More debug object naming for PIX
- PostProcess updated with 'big triangle' optimization
- Code and project file cleanup
February 7, 2018
- Mouse fix for cursor behavior when using Remote Desktop for Win32
- Updated for a few more VS 2017 warnings
December 13, 2017
- PBREffect and DebugEffect added
- NormalMapEffect no longer requires or uses explicit vertex tangents
- Updated for VS 2017 15.5 update warnings
- Code cleanup
November 1, 2017
- VS 2017 updated for Windows 10 Fall Creators Update SDK (16299)
- Regenerated shaders using Windows 10 Fall Creators Update SDK (16299)
- Updated D3DX12 internal copy to latest version
September 22, 2017
- Updated for VS 2017 15.3 update
/permissive-
changes - ScreenGrab updated to use non-sRGB metadata for PNG
- Mouse use of
WM_INPUT
updated for Remote Desktop scenarios
July 28, 2017
- Fix for WIC writer when codec target format requires a palette
- Fix for error detection in ResourceUploadBatch::End method
- Code cleanup
June 21, 2017
- Post-processing support with the BasicPostProcess, DualPostProcess, and ToneMapPostProcess classes
- Added DescriptorPile utility class
- SDKMESH loader fix when loading legacy files with all zero materials
- DirectXTK for Audio: Minor fixes for environmental audio
- Optimized root signatures for Effects shaders
- Minor code cleanup
April 24, 2017
- Regenerated shaders using Windows 10 Creators Update SDK (15063)
- Fixed NormalMapEffect shader selection for specular texture usage
- Fixed Direct3D validation layer issues when using Creators Update
- Fixed AudioEngine enumeration when using Single Threaded Apartment (STA)
- Fixed bug with GamePad (
Windows.Gaming.Input
) when no user bound - Updated D3DX12 internal copy to latest version
April 7, 2017
- VS 2017 updated for Windows Creators Update SDK (15063)
- XboxDDSTextureLoader updates
February 10, 2017
- SpriteBatch default rasterizer state now matches DirectX 11 version
- DDSTextureLoader now supports loading planar video format textures
- GamePad now supports special value of -1 for 'most recently connected controller'
- WIC format 40bppCMYKAlpha should be converted to RGBA8 rather than RGBA16
- DDS support for L8A8 with bitcount 8 rather than 16
- Updated D3DX12 internal copy to latest version
- Minor code cleanup
December 5, 2016
- Mouse and Keyboard classes updated with IsConnected method
- Windows10 project
/ZW
switch removed to support use in C++/WinRT projection apps - VS 2017 RC projects added
- Updated D3DX12 internal copy to latest version
- Minor code cleanup
October 6, 2016
- SDKMESH loader and BasicEffects support for compressed vertex normals with biasing
- breaking change
- DDSTextureLoader Ex bool
forceSRGB
andgenerateMipsIfMissing
parmeters are now aDDS_LOADER
flag - WICTextureLoader Ex bool
forceSRGB
andgenerateMips
parameters are now aWIC_LOADER
flag - Add
vertexCount
member to ModelMeshPart
- DDSTextureLoader Ex bool
- Minor code cleanup
September 15, 2016
- Rebuild shaders using 1.0 Root Signature for improved compatibility
- Minor code cleanup
September 1, 2016
- EffectPipelineStateDescription is now in it's own header
- Additional debug object naming
- Fixed Tier 1 hardware support issues with BasicEffect and generating mipmaps
- Fixed default graphics memory alignment to resolve rendering problems on some hardware
- Added
forceSRGB
optional parameter to SpriteFont ctor - EffectFactory method EnableForceSRGB added
- Removed problematic ABI::Windows::Foundation::Rect interop for SimpleMath
- Updated D3DX12 internal copy for the Windows 10 Anniversary Update SDK (14393)
- Minor code cleanup
August 4, 2016
- GraphicsMemory fix for robustness during cleanup
- Regenerated shaders using Windows 10 Anniversary Update SDK (14393)
August 2, 2016
- Updated for VS 2015 Update 3 and Windows 10 SDK (14393)
August 1, 2016
- Model effects array is now indexed by part rather than by material
- GamePad capabilities information updated for Universal Windows and Xbox One platforms
- Specular falloff lighting computation fix in shaders
July 18, 2016
- breaking changes to CommonStates, DescriptorHeap, Effects, Model, EffectPipelineStateDescription, and SpriteBatchPipelineStateDescription
- added texture sampler control to Effects and SpriteBatch
- fixed Model control of blend and rasterizer state
- fixed problems with PerPixelLighting control (EffectFactory defaults to per-pixel lighting)
- fixed control of weights-per-vertex optimization for SkinnedEffect
- removed unnecesary "one-light" shader permutations
- fixed bug in AlphaTestEfect implementation
- improved debug messages for misconfigured effects NormalMapEffect for normal-map with optional specular map rendering
- EnvironmentMapEffect now supports per-pixel lighting
- Effects updated with SetMatrices and SetColorAndAlpha methods
- GraphicsMemory support for SharedGraphicsResource shared_ptr style smart-pointer
- PrimitiveBatch fix for DrawQuad
- ScreenGrab handles resource state transition
- SimpleMath: improved interop with DirectXMath constants
- WICTextureLoader module LoadWICTexture* methods
- Fixed bugs with GenerateMips for sRGB and BGRA formats
- Code cleanup
June 30, 2016
- Original release