crossxtex/HISTORY.md
2020-06-15 00:22:20 -07:00

437 lines
19 KiB
Markdown

# DirectXTex texture processing library
http://go.microsoft.com/fwlink/?LinkId=248926
Release available for download on [GitHub](https://github.com/microsoft/DirectXTex/releases)
## Release History
### June 15, 2020
* Code cleanup for some new VC++ 16.7 warnings and static code analysis
* texconv: Updated with support for Portable Pix Map (ppm) & Portable Float Map (pfm) file formats
### June 1, 2020
* Converted to typed enum bitmask flags (see release notes for details on this potential *breaking change*)
+ **ComputePitch**, **xxxDDSxxx**, **xxxWICxxx**, **FlipRotate**, **Resize**, **Convert**, **GenerateMipMaps**, **GenerateMipMaps3D**, **PremultiplyAlpha**, **Compress**, **ComputeNormalMap**, **CopyRectangle**, **ComputeMSE**
* ``WIC_FLAGS_DEFAULT_SRGB`` / ``WIC_LOADER_SRGB_DEFAULT`` flag added when loading image via WIC without explicit colorspace metadata
* WIC loader for ``PNG`` codec now checks ``gAMA`` chunk to determine colorspace if the ``sRGB`` chunk is not found for legacy sRGB detection.
* Fixed conformance issues when using ``/Zc:preprocessor``
* CMake project updates
### May 10, 2020
* HDR (RGBE Radiance) file format writer updated to accept half16 input
* Code cleanup
* Updated D3DX12 internal copy to Windows 10 SDK (19041) version
* texassemble, texconv, texdiag: Updated with ``-l`` switch for case-sensitive file systems
* texconv: Added ``-dx9`` switch to force legacy compatible DDS files
* texconv: Collapsed ``-bcuniform``, ``-bcdither``, ``-bcquick``, and ``-bcmax`` into one ``-bc`` switch
* Updates to **DDSTextureLoader**, **ScreenGrab**, and **WICTextureLoader** including new DX9 version
### April 3, 2020
* Updated D3DX12 internal copy to latest version
* DDS loader updated for another BC7 FourCC variant
* Code review (``constexpr`` / ``noexcept`` usage)
* CMake updated for PCH usage with 3.16 or later
### February 14, 2020
* Fixed quality bug in BC4S/BC5S compressor
* Guard for divide-by-zero case in **PremultiplyAlpha**
* texconv: added ``-at`` switch for alpha threshold value with BC1 compression
* texconv: Fixed ``-nmap`` when outputting compressed UNORM formats
* Code and project cleaup
* Retired VS 2015 projects
### December 17, 2019
* Added ARM64 platform to VS 2019 Win32 desktop Win10 project
* Updated CMake project
* Code cleaup
### October 17, 2019
* Codec readers updated to return ``TEX_ALPHA_MODE_OPAQUE`` if reader returned an alpha channel due to conversion
* Added DDS reader support for 'non-standard' BC6H/BC7 FourCC codes used by nVidia texture tools
* TGA codec updated for TGA 2.0
* Minor code review
* Updated ScreenGrab module
* texconv: Added ``-fixbc4x4switch``
### August 21, 2019
* Updated D3DX12 internal copy to latest version
* Added texassemble, texconv, and texdiag to CMake project
* Code cleanup
### June 30, 2019
* Additional validation for Direct3D 11 texture loaders
* Clang/LLVM warning cleanup
* Renamed ``DirectXTex_Windows10.vcxproj`` to ``_Windows10_2017.vcxproj``
* Added VS 2019 UWP project
### May 30, 2019
* Regenerated shaders using Windows 10 April 2019 Update SDK (18362)
* Added CMake project files
* Code cleanup
### April 26, 2019
* Added VS 2019 desktop projects
* Code cleanup for texture loaders
* Officially dropped Windows Vista support
* Minor code cleanup
### February 7, 2019
* Added **ScaleMipMapsAlphaForCoverage** function to the library
* WIC Writer now has two new flags: ``WIC_FLAGS_FORCE_SRGB`` and ``WIC_FLAGS_FORCE_LINEAR``
* texassemble: added ``array-strip`` command
* texconv: added ``-inverty``, ``-keepcoverage`` switches
### November 16, 2018
* VS 2017 updated for Windows 10 October 2018 Update SDK (17763)
* ARM64 platform configurations added to UWP projects
### October 25, 2018
* Use UTF-8 instead of ANSI for narrow strings
* Updated D3DX12 internal copy to latest version
* Minor code cleanup
### August 17, 2018
* Fixed problem loading legacy DDS files containing FOURCC pixel formats with ``ALPHAPIXELS`` also set
* Fixed ``FlipRotate`` bug when doing 180 degree rotation
* Updated for VS 2017 15.8
### August 5, 2018
* Improved support and validation for 16k textures (requires x64 native)
* ``ComputePitch`` now returns an HRESULT
* Fix BC7 GPU shaders on WARP device
### July 3, 2018
* BC7 CPU codec fix for 3subsets/``-bcmax`` and minor optimization
* BC7 GPU codec quantize fix and pbit optimization
* BC6H CPU codec bounds checking fix
* Code and project cleanup
### May 31, 2018
* Fix for **IsAlphaAllOpaque** for 'near opaque' values
* VS 2017 updated for Windows 10 April 2018 Update SDK (17134)
### May 11, 2018
* Workaround for WIC issue doing FP32->FP16 conversions
* Updated for VS 2017 15.7 update warnings
* Code and project cleanup
* Retired VS 2013 projects
### April 23, 2018
* Code cleanup
* texconv: Updated with support reading "Extended BMP" files using DXTn
* texconv: Updated to handle non-power-of-2 volume textures with mipmaps
* texassemble, texconv, texdiag: support format name aliases like DXT3, RGBA, BGRA, FP16, etc. in addition to truncated ``DXGI_FORMAT_`` values
### February 9, 2018
* HDR (RGBE Radiance) file format reader updated to support ``#?RGBE`` signature
* texconv: Added ``-rotatecolor`` and ``-nits`` switches
* texassemble: Added merge and gif commands
* texdiag: added dumpdds command
### February 7, 2018
* Fixed bug with GPU BC7 encoding (mode 1, fixup 6)
* Updated for a few more VS 2017 warnings
* Code cleanup
### December 13, 2017
* Updated for VS 2017 15.5 update warnings
* Support building library with ``_XM_NO_XMVECTOR_OVERLOADS_``
* Code cleanup
### November 1, 2017
* VS 2017 updated for Windows 10 Fall Creators Update SDK (16299)
### September 22, 2017
* Updated for VS 2017 15.3 update ``/permissive-`` changes
* WIC writer and ScreenGrab updated to use non-sRGB metadata for PNG
* texassemble, texconv, texdiag: added ``-flist`` option
### July 26, 2017
* Support for reading non-standard DDS files written by nVidia Texture Tools (NVTT)
* Fix for **ComputeMSE** when using ``CMSE_IMAGE2_X2_BIAS``
* Fix for WIC writer then codec target format requires a palette
* Code cleanup
### April 24, 2017
* VS 2017 project updates
* Regenerated shaders using Windows 10 Creators Update SDK (15063)
* Updated D3DX12 internal copy to latest version
### April 7, 2017
* VS 2017 updated for Windows Creators Update SDK (15063)
* texassemble: ``-tonemap`` switch
* texconv: ``-wicmulti`` switch
### January 31, 2017
* DirectX 12 versions of **IsSupported**, **CreateTexture** (PrepareUpload), and **CaptureTexture**
* Update to DirectX 11 version of **IsSupported**
* WIC format 40bppCMYKAlpha should be converted to RGBA8 rather than RGBA16
* DDS support for L8A8 with bit-count 8 rather than 16
* ``DXGI_FORMAT_R32G8X24_TYPELESS`` and ``DXGI_FORMAT_R24G8_TYPELESS`` should be IsDepthStencil formats
* Updates to DDSTextureLoader, ScreenGrab, and WICTextureLoader
* Minor code cleanup
### December 5, 2016
* Fixed over-validation in DDS header parsing
* VS 2017 RC projects added
* Minor code cleanup
### October 5, 2016
* *breaking change* Renamed Evaluate to **EvaluateImage**, Transform to **TransformImage**
* texdiag: new command-line tool for texture debugging
* texconv: ``-bcmax``, ``-bcquick``, ``-tonemap``, and ``-x2bias`` switches
* texconv: overwrite writing and ``-y`` switch
* texconv/texassemble: optional OpenEXR support
* texassemble: command syntax with support for generating strip and cross images from cubemap
* Updates to DDSTextureLoader, WICTextureLoader, and ScreenGrab
* Minor code cleanup
### September 14, 2016
* [HDR (RGBE Radiance)](https://en.wikipedia.org/wiki/RGBE_image_format) file format reader and writer
* **Evaluate** and **Transform** functions for computing user-defined functions on images
* Fix BC6H GPU shaders on WARP device
* Fix for alignment issues on ARM devices in software compression codec
* Added ``TEX_THRESHOLD_DEFAULT`` (0.5f) constant default alpha threshold value for Convert & Compress
* Minor **CaptureTexture** optimization
* texconv/texassemble: Support for .hdr file format
* texconv: added ``-gpu`` switch to specify adapter to use for GPU-based compression codecs
* texconv: added ``-badtails`` switch to enable loading of legacy DXTn DDS files with incomplete mipchain tails
* texconv: added ``-c`` switch for old-school colorkey/chromakey transparency to alpha conversion
* texconv: added ``-alpha`` switch for reverse premultiply along with ``TEX_PMALPHA_REVERSE`` flag
* texconv: added wildcard support for input filename and optional ``-r`` switch for recursive search
### August 4, 2016
* ``CompileShader`` script updated to build external pdbs
* 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
* Workaround for bug in XMStoreFloat3SE (impacts conversions to ``DXGI_FORMAT_R9G9B9E5_SHAREDEXP``)
* **DDSTextureLoader12**, **WICTextureLoader12**, and **ScreenGrab12** for Direct3D 12 support
* Minor code cleanup
### June 27, 2016
* texconv command-line tool ``-wicq`` and ``-wiclossless`` switches
* Code cleanup
### April 26, 2016
* Optional callback from WIC reader functions to query additional metadata
* Retired obsolete adapter code
* Minor code cleanup
### February 23, 2016
* Fix to clean up partial or zero-length image files on failed write
* Retired VS 2012 projects
### November 30, 2015
* texconv command-line tool ``-fl`` switch now supports 12.0 and 12.1 feature levels
* Updated for VS 2015 Update 1 and Windows 10 SDK (10586)
### October 30, 2015
* DDS support for legacy bumpmap formats (V8U8, Q8W8V8U8, V16U16)
* Fix for buffer overread in BC CPU compressor
* Minor code cleanup
### August 18, 2015
* Added **GetWICFactory** and **SetWICFactory**
* Updates for new DXGI 1.3 types
* Xbox One platform updates
### July 29, 2015
* Fixed rounding problem with 32-bit RGBA/BGRA format conversions
* texconv: use CPU parallel compression for BC1-BC5 (``-singleproc`` disables)
* Updated for VS 2015 and Windows 10 SDK RTM
* Retired VS 2010 and Windows 8.0 Store projects
### June 18, 2015
* New ``BC_FLAGS_USE_3SUBSETS`` option for BC7 compressors; now defaults to skipping 3 subset blocks
* Fixed bug with **MakeTypeless** and ``A8_UNORM``
* Fixed file length validation problem in **LoadDDSFromFile**
### March 27, 2015
* Added projects for Windows apps Technical Preview
* Fixed bug with WIC-based mipmap generation for non-WIC supported formats
* Fixed bug with WIC multiframe loader when resizing required
* texconv: Added ``-nmap``/``-nmapamp`` for generating normal maps from height maps
* texconv/texassemble: Updated to load multiframe WIC files (tiff, gif)
* Minor code cleanup
### November 24, 2014
* Updates for Visual Studio 2015 Technical Preview
* Minor code cleanup
### September 22, 2014
* Format conversion improvements and bug fixes (depth/stencil, alpha-only, float16, RGB -> 1 channel)
* Fixed issue when BC decompressing non-standard compressed rowPitch images
* Explicit calling-convention annotation for all 'public' functions
* Code cleanup
* Xbox One platform updates
### July 15, 2014
* texconv command-line tool fixes
* Fixed problem with 'wide' images with CPU **Compress**
* Updates to Xbox One platform support
### April 3, 2014
* Windows phone 8.1 platform support
### February 24, 2014
* Direct3D 11 video and Xbox One extended format support
* New APIs: **IsPlanar**, **IsPalettized**, **IsDepthStencil**, **ConvertToSinglePlane**
* Added 'alphaWeight' parameter to GPU **Compress** *breaking change*
* texconv ``-aw`` switch to control the alpha weighting for the BC7 GPU compressor
* Fixed bug with ordered dithering in non-WIC conversion codepaths
* Fixed **SaveToDDSxxx** functions when using arbitrary row pitch values
### January 24, 2014
* Added sRGB flags for **Compress** (``TEX_COMPRESS_SRGB*``)
* Added 'compress' flag parameter to GPU versions of **Compress** *breaking change*
* Minor fix for potential rounding problem in GPU **Compress**
* Code cleanup (removed ``DXGI_1_2_FORMATS`` control define; ``ScopedObject`` typedef removed)
* Dropped VS 2010 support without the Windows 8.1 SDK (removed ``USE_XNAMATH`` control define)
### December 24, 2013
* texconv updated with ``-fl`` and ``-pow2`` command-line switches
* Fixed bug in **Resize** when doing custom filtering which occurred when exactly doubling the image size
* Added move operators to **ScratchImage** and **Blob** classes
* Xbox One platform support
### October 21, 2013
* Updated for Visual Studio 2013 and Windows 8.1 SDK RTM
* **PremultiplyAlpha** updated with new 'flags' parameter and to use sRGB correct blending
* Fixed colorspace conversion issue with DirectCompute compressor when compressing for BC7 SRGB
### August 13, 2013
* DirectCompute 4.0 BC6H/BC7 compressor integration
* texconv utility uses DirectCompute compression by default for BC6H/BC7, ``-nogpu`` disables use of DirectCompute
### August 1, 2013
* Support for BC compression/decompression of non-power-of-2 mipmapped textures
* Fixes for BC6H / BC7 codecs to better match published standard
* Fix for BC4 / BC5 codecs when compressing RGB images
* Minor fix for the BC1-3 codec
* New optional flags for **ComputeMSE** to compare UNORM vs. SNORM images
* New WIC loading flag added to control use of WIC metadata to return sRGB vs. non-sRGB formats
* Code cleanup and /analyze fixes
* Project file cleanup
* texconv utility uses parallel BC compression by default for BC6H/BC7, ``-singleproc`` disables multithreaded behavior
### July 1, 2013
* VS 2013 Preview projects added
* SaveToWIC functions updated with new optional ``setCustomProps`` parameter
### June 15, 2013
* Custom filtering implementation for **Resize** & **GenerateMipMaps(3D)** - Point, Box, Linear, Cubic, and Triangle
+ ``TEX_FILTER_TRIANGLE`` finite low-pass triangle filter
+ ``TEX_FILTER_WRAP``, ``TEX_FILTER_MIRROR`` texture semantics for custom filtering
+ ``TEX_FILTER_BOX`` alias for ``TEX_FILTER_FANT WIC``
* Ordered and error diffusion dithering for non-WIC conversion
* sRGB gamma correct custom filtering and conversion
* ``DDS_FLAGS_EXPAND_LUMINANCE`` - Reader conversion option for L8, L16, and A8L8 legacy DDS files
* Added use of WIC metadata for sRGB pixel formats
* Added **BitsPerColor** utility function
* Fixed **Convert** threshold parameter usage
* Non-power-of-2 volume map support, fixed bug with non-square volume maps
* texconv utility update with ``-xlum``, ``-wrap``, and ``-mirror`` options; reworked ``-if`` options for improved dithering
* texassemble utility for creating cubemaps, volume maps, and texture arrays
* DDSTextureLoader and WICTextureLoader sync'd with DirectXTK versions
### April 16, 2013
* Updated alpha-mode metadata details in .DDS files
* Added new control flags for **Convert**
* Added new optional flags for **ComputeMSE**
* Fixed conversion handling for sRGB formats
* Fixed internal routines for handling ``R10G10B10_XR_BIAS_A2_UNORM``, ``R9G9B9E5_SHAREDEXP``, and ``FORMAT_R1_UNORM``
* Fixed WIC I/O for ``GUID_WICPixelFormat32bppRGBE``4 pixel format files (HD Photo)
* Fixed non-square image handling in **GenerateMipMaps3D**
* Fixed some error handling in the DDS load code
### March 22, 2013
* Supports reading and writing alpha-mode (straight, premultiplied, etc.) metadata in .DDS files
* Added build option to use WICCreateImagingFactory_Proxy instead of ``CoCreateInstance`` to obtain WIC factory
### January 29, 2013
* Added **PremultiplyAlpha** to DirectXTex; ``-pmalpha`` switch for texconv command-line tool
* Fixed problem with forceSRGB implementation for Ex versions of CreateTexture, CreateShaderResourceView, DDSTextureLoader and WICTextureLoader
### December 11, 2012
* Ex versions of **CreateTexture**, **CreateShaderResourceView**, **DDSTextureLoader** and **WICTextureLoader**
* Fixed BC2 and BC3 decompression issue for unusual color encoding case
* Converted annotation to SAL2 for improved VS 2012 /analyze experience
* Updated DirectXTex, DDSView, and Texconv with VS 2010 + Windows 8.0 SDK project using official 'property sheets'
### November 15, 2012
* Added support for WIC2 when available on Windows 8 and Windows 7 with KB 2670838
* Added optional ``targetGUID`` parameter to SaveWIC* APIs to influence final container pixel format choice
* Fixed bug in **SaveDDSxxx** which was generating invalid DDS files for 1D dimension textures
* Improved robustness of **CaptureTexture** when resolving MSAA source textures
* Sync'd DDSTextureLoader, ScreenGrab, and WICTextureLoader standalone versions with latest DirectXTK release
### September 28, 2012
* Added **ScreenGrab** module for creating runtime screenshots
* Renamed project files for better naming consistency
* New Typeless utilities for DirectXTex
* Some minor code cleanup for DirectXTex's WIC writer function
* Bug fixes and new ``-tu``/``-tf`` options for texconv
### June 22, 2012
* Moved to using XNA Math 2.05 instead of XNA Math 2.04 for ``USE_XNAMATH`` builds
* Fixed BGR vs. RGB color channel swizzle problem with 24bpp legacy .DDS files in DirectXTex
* Update to DirectXTex WIC and WICTextureLoader for additional 96bpp float format handling on Windows 8
### May 31, 2012
* Minor fix for DDSTextureLoader's retry fallback that can happen with 10level9 feature levels
* Switched to use ``_DEBUG`` instead of ``DEBUG`` and cleaned up debug warnings
* added Windows Store style application project files for DirectXTex
### April 20, 2012
* DirectTex's WIC-based writer opts-in for the Windows 8 BMP encoder option for writing 32 bpp RGBA files with the ``BITMAPV5HEADER``
### March 30, 2012
* WICTextureLoader updated with Windows 8 WIC pixel formats
* DirectXTex updated with limited non-power-of-2 texture support and ``TEX_FILTER_SEPARATE_ALPHA`` option
* Texconv updated with ``-sepalpha`` command-line option
* Added ``USE_XNAMATH`` control define to build DirectXTex using either XNAMath or DirectXMath
* Added VS 2012 project files (which use DirectXMath instead of XNAMath and define ``DXGI_1_2_FORMATS``)
### March 15, 2012
* Fix for resource leak in **CreateShaderResourceView** Direct3D 11 helper function in DirectXTex
### March 5, 2012
* Fix for too much temp memory allocated by WICTextureLoader; cleaned up legacy 'min/max' macro usage in DirectXTex
### February 21, 2012
* WICTextureLoader updated to handle systems and device drivers without BGRA or 16bpp format support
### February 20, 2012
* Some code cleanup for DirectXTex and DDSTextureLoader
* Fixed bug in 10:10:10:2 format fixup in the **LoadDDSFromMemory** function
* Fixed bugs in "non-zero alpha" special-case handling in **LoadTGAFromFile**
* Fixed bug in ``_SwizzleScanline`` when copying alpha channel for BGRA<->RGBA swizzling
### February 11, 2012
* Update of DDSTextureLoader to also build in Windows Store style apps; added **WICTextureLoader**
* Added CMYK WIC pixel formats to the DirectXTex conversion table
### January 30, 2012
* Minor code-cleanup for DirectXTex to enable use of PCH through 'directxtexp.h' header
### January 24, 2012
* Some code-cleanup for DirectXTex
* Added DXGI 1.2 implementation for DDSTextureLoader and DirectXTex guarded with ``DXGI_1_2_FORMATS`` compilation define
### December 16, 2011
* Fixed x64 compilation warnings in DDSTextureLoader
### November 30, 2011
* Fixed some of the constants used in **IsSupportedTexture**
* added ability to strip off top levels of mips in DDSTextureLoader
* changed DirectXTex to use CoCreateInstance rather than LoadLibrary to obtain the WIC factory
* a few minor ``/analyze`` related annotations for DirectXTex
### October 27, 2011
* Original release