-----------------------------------------------
DirectXTK - the DirectX Tool Kit for DirectX 12
-----------------------------------------------
Copyright (c) Microsoft Corporation. All rights reserved.
October 17, 2019
This package contains the "DirectX Tool Kit", a collection of helper classes for
writing Direct3D 12 C++ code for Universal Windows Platform (UWP) apps, Win32
desktop applications for Windows 10, and Xbox One.
This code is designed to build with Visual Studio 2015 Update 3, Visual Studio 2017,
or Visual Studio 2019. It is recommended that you make use of VS 2015 Update 3,
Windows Tools 1.4.1, and the Windows 10 Anniversary Update SDK (14393) -or-
VS 2017 (15.9 update) / VS 2019 with the Windows 10 October 2018 Update SDK (17763).
Inc\
Public Header Files (in the DirectX C++ namespace):
Audio.h - low-level audio API using XAudio2 (DirectXTK for Audio public header)
CommonStates.h - common D3D state combinations
DDSTextureLoader.h - light-weight DDS file texture loader
DescriptorHeap.h - helper for managing DX12 descriptor heaps
DirectXHelpers.h - misc C++ helpers for D3D programming
EffectPipelineStateDescription.h - helper for creating PSOs
Effects.h - set of built-in shaders for common rendering tasks
GamePad.h - gamepad controller helper using XInput
GeometricPrimitive.h - draws basic shapes such as cubes and spheres
GraphicsMemory.h - helper for managing dynamic graphics memory allocation
Keyboard.h - keyboard state tracking helper
Model.h - draws meshes loaded from .SDKMESH or .VBO files
Mouse.h - mouse helper
PostProcess.h - set of built-in shaders for common post-processing operations
PrimitiveBatch.h - simple and efficient way to draw user primitives
RenderTargetState.h - helper for communicating render target requirements when creating PSOs
ResourceUploadBatch.h - helper for managing texture resource upload to the GPU
ScreenGrab.h - light-weight screen shot saver
SimpleMath.h - simplified C++ wrapper for DirectXMath
SpriteBatch.h - simple & efficient 2D sprite rendering
SpriteFont.h - bitmap based text rendering
VertexTypes.h - structures for commonly used vertex data formats
WICTextureLoader.h - WIC-based image file texture loader
XboxDDSTextureLoader.h - Xbox One exclusive apps variant of DDSTextureLoader
Src\
DirectXTK source files and internal implementation headers
Audio\
DirectXTK for Audio source files and internal implementation headers
NOTE: MakeSpriteFont and XWBTool can be found in the DirectX Tool Kit for
DirectX 11 package.
All content and source code for this package are subject to the terms of the
MIT License. <http://opensource.org/licenses/MIT>.
Documentation is available at <https://github.com/Microsoft/DirectXTK12/wiki>.
For the latest version of DirectX Tool Kit, bug reports, etc. please visit the
project site. <http://go.microsoft.com/fwlink/?LinkID=615561>
This project has adopted the Microsoft Open Source Code of Conduct. For more
information see the Code of Conduct FAQ or contact opencode@microsoft.com with
any additional questions or comments.
https://opensource.microsoft.com/codeofconduct/
--------
XBOX ONE
--------
* Developers using the Xbox One XDK need to generate the
Src\Shaders\Compiled\XboxOne*.inc files to build the library as they are not
included in the distribution package. They are built by running the script
in Src\Shaders - "CompileShaders xbox" from the "Xbox One XDK Command Prompt".
They are XDK version-specific. While they will continue to work if outdated,
a mismatch will cause runtime compilation overhead that would otherwise be
avoided.
---------------------------------
COMPARISONS TO DIRECTX 11 VERSION
---------------------------------
* No support for loading .CMO models or DGSL effect shaders (i.e. DGSLEffect)
* VertexTypes does not include VertexPositionNormalTangentColorTexture or
VertexPositionNormalTangentColorTextureSkinning which were intended for use
with the DGSL pipeline.
* DirectX Tool Kit for DirectX 11 supports Feature Level 9.x, while DirectX 12
requires Direct3D Feature Level 11.0. There are no expected DirectX 12 drivers
for any lower feature level devices.
* The library assumes it is building for Windows 10 (aka _WIN32_WINNT=0x0A00)
so it makes use of XAudio 2.9 and WIC2 as well as DirectX 12.
* DirectX Tool Kit for Audio, GamePad, Keyboard, Mouse, and SimpleMath are
identical to the DirectX 11 version.
-------------
RELEASE NOTES
-------------
* The VS 2017/2019 projects make use of /permissive- for improved C++ standard
conformance. Use of a Windows 10 SDK prior to the Fall Creators Update (16299)
or an Xbox One XDK prior to June 2017 QFE 4 may result in failures due to
problems with the system headers. You can work around these by disabling this
switch in the project files which is found in the <ConformanceMode> elements.
* The VS 2017 projects require the 15.5 update or later. For UWP and Win32
classic desktop projects with the 15.5 - 15.7 updates, you need to install the
standalone Windows 10 SDK (17763) which is otherwise included in the 15.8.6 or
later update. Older VS 2017 updates will fail to load the projects due to use
of the <ConformanceMode> element. If using the 15.5 or 15.6 updates, you will
see "warning D9002: ignoring unknown option '/Zc:__cplusplus'" because this
switch isn't supported until 15.7. It is safe to ignore this warning, or you
can edit the project files <AdditionalOptions> elements.
* The UWP projects include configurations for the ARM64 platform. These require
VS 2017 (15.9 update) or VS 2019 to build.
---------------
RELEASE HISTORY
---------------
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 agonstic 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
Added DescriptorPile utility
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 and generateMipsIfMissing parmeters are now a DDS_LOADER flag
WICTextureLoader Ex bool forceSRGB and generateMips parameters are now a WIC_LOADER flag
Add vertexCount member to ModelMeshPart
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