KTX Software Versions Save

KTX (Khronos Texture) Library and Tools

v4.1.0-rc2

1 year ago

New Features in v4.1.0

  • ARM's ASTC encoder has been added to libktx. As a result you can now use toktx to create KTX files with ASTC encoded payloads. Thanks to @wasimabbas-arm.

  • Full normal map handling has been added. 3-component normal maps can be converted to 2-component and the components separated into the RGB and alpha channels of ASTC, ETC1S or UASTC compressed textures. A --normalize option has been added to toktx to convert an input normal map to unit normals which are needed to allow the third component to be recreated in a shader. Thanks to @wasimabbas-arm.

  • A Java wrapper and JNI module for libktx has been added. Thanks to @ShukantPal.

  • An install package for Apple Silicon has been added.

  • An install package for Windows Arm-64 has been added. Thanks to @Honeybunch.

  • The formerly internal ktxStream class has been exposed enabling possibilities such as wrapping a ktxStream around a C++ stream so that textures can be created from the C++ stream's content. See sbufstream.h. Thanks to @UberLambda.

  • ktx2check now verifies BasisLZ supercompression data by performing a transcode.

Significant Changes since v4.0.0

  • Basis Universal has been updated to version 1.16.3.

    • The ETC1S encoder performance is now approximately 30% faster.
    • Optional OpenCL support has been added to the ETC1S encoder. Add -D SUPPORT_OPENCL when configuring the CMake build to enable it. As OpenCL may not be any faster when encoding individual files - it highly depends on your hardware - it is disabled in the default build and release packages.
  • Windows install packages are now signed.

  • Textures with Depth-stencil formats are now created with DFDs and alignments matching the KTX v2 specification.

  • Specifying --layers 1 to toktx now creates an array texture with 1 layer. Previously it created a non-array texture.

  • --normal_map in ktxsc and toktx has been replaced by --normal_mode which converts 3-component maps to 2-component as well as optimizing the encoding. To prevent the conversion, also specify --input_swizzle rgb1.

Known Issues in v4.1.0.

  • toktx will not read JPEG files with a width or height > 32768 pixels.

  • toktx will not read 4-component JPEG files such as those sometimes created by Adobe software where the 4th component can be used to re-create a CMYK image.

  • Users making Basisu encoded or block compressed textures for WebGL must be aware of WebGL restrictions with regard to texture size and may need to resize images appropriately using the --resize feature of toktx. In general the dimensions of block compressed textures must be a multiple of the block size and for WebGL 1.0 must be a power of 2. For portability glTF's KHR_texture_basisu extension requires texture dimensions to be a multiple of 4, the block size of the Universal texture formats.

  • Basis Universal encoding results (both ETC1S/LZ and UASTC) are non-deterministic across platforms. Results are valid but level sizes and data will differ slightly. See issue #60 in the basis_universal repository.

  • UASTC RDO results differ from run to run unless multi-threading or RDO multi-threading is disabled. In toktx use --threads 1 for the former or --uastc_rdo_m for the latter. As with the preceeding issue results are valid but level sizes will differ slightly. See issue #151 in the basis_universal repository.

  • Neither the Vulkan nor the GL loader support depth/stencil textures.

Changes since v4.0.0 (by part)

libktx

  • git subrepo push lib/dfdutils (dd799a9b) (@null)

  • Remove incorrect use of ktxTexture2_WriteTo... (7d91d62e) (@MarkCallow)

  • Regularize Tools (#594) (870b9fff) (@MarkCallow)

  • Fixing build for arm64 Windows (#582) (b995ac33) (@Honeybunch)

  • Update astc-encoder (#592) (a6bcd33d) (@MarkCallow)

  • Fix missing documentation and compile warning. (#591) (ed9e7253) (@MarkCallow)

  • Update astc encoder (#586) (1cb97511) (@MarkCallow)

  • Release memory before early exit. (#584) (a4fddf6b) (@kacprzak)

  • Introduce proper vulkan initialization (#570) (bb9babcb) (@rHermes)

  • Using cmake's MINGW variable to detect proper ABI (#579) (a70e831e) (@Honeybunch)

  • Fix handling of combined depth-stencil textures (#575) (e4bf1aaa) (@MarkCallow)

  • Fix build on Mingw (#574) (1f07cb07) (@Honeybunch)

  • Prepare Release 4.1. (#571) (4a52fe45) (@MarkCallow)

  • git subrepo pull (merge) lib/astc-encoder (51f47631) (@MarkCallow)

  • git subrepo pull (merge) lib/dfdutils (7c24a986) (@MarkCallow)

  • git subrepo pull (merge) lib/dfdutils (c5abc161) (@MarkCallow)

  • Farewell GYP. :-( (f1f04a7e) (@MarkCallow)

  • Miscellaneous fixes (#558) (66f6d750) (@MarkCallow)

  • Fix new in clang 13.1 (Xcode13.3) warnings (#553) (b8d462b0) (@MarkCallow)

  • Fix non-clang warnings (#549) (4e7e40a0) (@MarkCallow)

  • Split each build configuration into a separate CI job. (#546) (9d1204cc) (@MarkCallow)

  • Update to Basis1.16.3 (#543) (c65cfd0d) (@MarkCallow)

  • Remove image.hpp dependency (#542) (9fde96b9) (@wasimabbas-arm)

  • Update to Basis 1.16.1 (#541) (cb45eadc) (@MarkCallow)

  • git subrepo pull (merge) lib/astc-encoder (#540) (d98aa680) (@wasimabbas-arm)

  • git subrepo pull (merge) lib/astc-encoder (#537) (dbfeb82a) (@wasimabbas-arm)

  • Add astc perceptual mode support (#534) (57e62de1) (@wasimabbas-arm)

  • Improve Astc & BasisU normal map support (#493) (2d6ff949) (@wasimabbas-arm)

  • git subrepo pull lib/dfdutils (5ff4811c) (@MarkCallow)

  • git subrepo push lib/dfdutils (ce2a4619) (@MarkCallow)

  • Calculate dst buffer size with ZSTD_compressBound. (#527) (81d2be5c) (@MarkCallow)

  • Remove extraneous token concatenation operator. (a8f4a71d) (@MarkCallow)

  • Fix malloc/delete pair. (0a3fe5b1) (@sergeyext)

  • Manually update git-subrepo parent (929c75c3) (@wasimabbas-arm)

  • git subrepo pull (merge) lib/astc-encoder (f5daffea) (@wasimabbas-arm)

  • Fix parent commit pointer. (1a356d0e) (@MarkCallow)

  • git subrepo pull (merge) lib/basisu (24c9f7bb) (@MarkCallow)

  • Move common params out from ETC1S case. (a2ccc90e) (@MarkCallow)

  • Remove transferFunction from astc options (#482) (1f085d30) (@wasimabbas-arm)

  • Fix leak in zstd inflation. Fixes #465. (720b6cf3) (@MarkCallow)

  • Support array and 3d textures. (#468) (b0532530) (@MarkCallow)

  • Add more astc tests (#460) (14284e7d) (@wasimabbas-arm)

  • Add astc support (#433) (da435dee) (@wasimabbas-arm)

  • Actually byte swap keyAndValueByteSize values. Fix issue #447. (00118086) (@MarkCallow)

  • Add KTXmetalPixelFormat to valid list used by ktxTexture2_WriteToStream. (871f111d) (@MarkCallow)

  • Fix astc-encoder/.gitrepo parent after latest pull. (f99221eb) (@MarkCallow)

  • git subrepo pull (merge) lib/astc-encoder (66692454) (@MarkCallow)

  • Fix astc-encoder/.gitrepo parent pointer. (f39b13b1) (@MarkCallow)

  • Fix memory leak in VkUpload (#448) (2b2b48fa) (@bin)

  • Fix: if ("GL_EXT_texture_sRGB") is supported,then srgb should be supported (#446) (13f17410) (@dusthand)

  • git subrepo commit (merge) lib/astc-encoder (1264f867) (@MarkCallow)

  • git subrepo pull (merge) lib/astc-encoder (15369663) (@MarkCallow)

  • Make ktxStream public (#438) (78929f80) (@UberLambda)

  • git subrepo pull (merge) lib/astc-encoder (535c883b) (@MarkCallow)

  • Fix mismatched malloc and delete (#440) (9d42b86f) (@cperthuisoc)

  • Cleanup Vulkan SDK environment variables. (354f640e) (@MarkCallow)

  • git subrepo pull (merge) lib/astc-encoder (3e75b6a3) (@MarkCallow)

  • Remove unneeded parts of astc-encoder. (360d10bb) (@MarkCallow)

  • git subrepo clone https://github.com/ARM-software/astc-encoder.git lib/astc-encoder (db359593) (@MarkCallow)

  • Raise warning levels to /W4 & -Wall -Wextra (#418) (ca6f6e7d) (@MarkCallow)

  • Minor build tweaks (#407) (6a38a069) (@MarkCallow)

Tools

  • Allow creation of single layer array textures. (#602) (de93656b) (@MarkCallow)

  • Close file after successful load (#597) (32d26662) (@AndrewChan2022)

  • Regularize Tools (#594) (870b9fff) (@MarkCallow)

  • Fix cross-device rename failure (#593) (f020c1ba) (@MarkCallow)

  • Fix wrong alignment used when checking VK_FORMAT_UNDEFINED files (#585) (c7e4edc7) (@MarkCallow)

  • Sign Windows executables, dlls and NSIS installers. (#583) (dc231b32) (@MarkCallow)

  • Fix broken bytesPlane0 test. Add extra analysis. (#578) (243ba439) (@MarkCallow)

  • Fix handling of combined depth-stencil textures (#575) (e4bf1aaa) (@MarkCallow)

  • Farewell GYP. :-( (f1f04a7e) (@MarkCallow)

  • Miscellaneous fixes (#558) (66f6d750) (@MarkCallow)

  • Add JNI component and integrate Java build & test with CMake (#556) (e29e0996) (@MarkCallow)

  • Fix non-clang warnings (#549) (4e7e40a0) (@MarkCallow)

  • Fix VS warnings (#544) (8c6b3571) (@wasimabbas-arm)

  • Remove image.hpp dependency (#542) (9fde96b9) (@wasimabbas-arm)

  • Update to Basis 1.16.1 (#541) (cb45eadc) (@MarkCallow)

  • Improve Astc & BasisU normal map support (#493) (2d6ff949) (@wasimabbas-arm)

  • Validate BasisU Transcode (#532) (39e2d96e) (@MarkCallow)

  • Fix mismatched errors for required and optional index entries. (b8786496) (@MarkCallow)

  • fix missing -w flag for ktx2check (eade072d) (@sidsethupathi)

  • Remove transferFunction from astc options (#482) (1f085d30) (@wasimabbas-arm)

  • Ensure NUL on end of 3d orientation. (74501ef3) (@MarkCallow)

  • Support array and 3d textures. (#468) (b0532530) (@MarkCallow)

  • Fix checks for mismatched image attributes. (#466) (4eca0ef3) (@MarkCallow)

  • Add more astc tests (#460) (14284e7d) (@wasimabbas-arm)

  • Add astc support (#433) (da435dee) (@wasimabbas-arm)

  • macOS Apple Silicon support (#415) (ebab2ea8) (@atteneder)

  • Raise warning levels to /W4 & -Wall -Wextra (#418) (ca6f6e7d) (@MarkCallow)

  • Fix validation errors (#417) (78cd2b01) (@MarkCallow)

JS Wrappers

  • Farewell GYP. :-( (f1f04a7e) (@MarkCallow)

  • Update to Basis 1.16.1 (#541) (cb45eadc) (@MarkCallow)

  • Raise warning levels to /W4 & -Wall -Wextra (#418) (ca6f6e7d) (@MarkCallow)

Java Wrapper

  • Sign Windows executables, dlls and NSIS installers. (#583) (dc231b32) (@MarkCallow)

  • Workaround FindJNI searching for framework when JAVA_HOME not set. (#566) (957a198b) (@MarkCallow)

  • Miscellaneous fixes (#558) (66f6d750) (@MarkCallow)

  • Add JNI component and integrate Java build & test with CMake (#556) (e29e0996) (@MarkCallow)

  • Fix warnings in JNI library and update to latest libktx API. (#548) (6f98b3c4) (@ShukantPal)

  • Update to Basis 1.16.1 (#541) (cb45eadc) (@MarkCallow)

  • Feature: Java bindings for libktx (#481) (a7159924) (@ShukantPal)

v4.1.0-rc1

2 years ago

New Features in v4.1.0

  • ARM's ASTC encoder has been added to libktx. As a result you can now use toktx to create KTX files with ASTC encoded payloads.

  • Full normal map handling has been added. 3-component normal maps can be converted to 2-component and the components separated into the RGB and alpha channels of ASTC, ETC1S or UASTC compressed textures. A --normalize option has been added to toktx to convert an input normal map to unit normals which are needed to allow the third component to be recreated in a shader.

  • A Java wrapper and JNI module for libktx has been added.

  • An install package for Apple Silicon has been added.

  • The formerly internal ktxStream class has been exposed enabling possibilities such as wrapping a ktxStream around a C++ stream so that textures can be created from the C++ stream's content. See sbufstream.h

  • ktx2check now verifies BasisLZ supercompression data by performing a transcode.

Significant Changes since v4.0.0

  • Basis Universal has been updated to version 1.16.3.
    • The ETC1S encoder performance is now approximastely 30% faster.
    • Optional OpenCL support has been added to the ETC1S encoder. Add -D SUPPORT_OPENCL when configuring the CMake build to enable it. As OpenCL may not be any faster when encoding individual files - it highly depends on your hardware - it is disabled in the default build and release packages.

Known Issues in v4.1.0.

  • toktx will not read JPEG files with a width or height > 32768 pixels.

  • toktx will not read 4-component JPEG files such as those sometimes created by Adobe software where the 4th component can be used to re-create a CMYK image.

  • Users making Basisu encoded or block compressed textures for WebGL must be aware of WebGL restrictions with regard to texture size and may need to resize images appropriately using the --resize feature of toktx. In general the dimensions of block compressed textures must be a multiple of the block size and for WebGL 1.0 must be a power of 2. For portability glTF's KHR_texture_basisu extension requires texture dimensions to be a multiple of 4, the block size of the Universal texture formats.

  • Basis Universal encoding results (both ETC1S/LZ and UASTC) are non-deterministic across platforms. Results are valid but level sizes and data will differ slightly. See issue #60 in the basis_universal repository.

  • UASTC RDO results differ from run to run unless multi-threading or RDO multi-threading is disabled. In toktx use --threads 1 for the former or --uastc_rdo_m for the latter. As with the preceeding issue results are valid but level sizes will differ slightly. See issue #151 in the basis_universal repository.

Changes since v4.0.0 (by part)

libktx

  • git subrepo pull (merge) lib/astc-encoder (51f47631) (@MarkCallow)

  • git subrepo pull (merge) lib/dfdutils (7c24a986) (@MarkCallow)

  • git subrepo pull (merge) lib/dfdutils (c5abc161) (@MarkCallow)

  • Farewell GYP. :-( (f1f04a7e) (@MarkCallow)

  • Miscellaneous fixes (#558) (66f6d750) (@MarkCallow)

  • Fix new in clang 13.1 (Xcode13.3) warnings (#553) (b8d462b0) (@MarkCallow)

  • Fix non-clang warnings (#549) (4e7e40a0) (@MarkCallow)

  • Split each build configuration into a separate CI job. (#546) (9d1204cc) (@MarkCallow)

  • Update to Basis1.16.3 (#543) (c65cfd0d) (@MarkCallow)

  • Remove image.hpp dependency (#542) (9fde96b9) (@wasimabbas-arm)

  • Update to Basis 1.16.1 (#541) (cb45eadc) (@MarkCallow)

  • git subrepo pull (merge) lib/astc-encoder (#540) (d98aa680) (@wasimabbas-arm)

  • git subrepo pull (merge) lib/astc-encoder (#537) (dbfeb82a) (@wasimabbas-arm)

  • Add astc perceptual mode support (#534) (57e62de1) (@wasimabbas-arm)

  • Improve Astc & BasisU normal map support (#493) (2d6ff949) (@wasimabbas-arm)

  • git subrepo pull lib/dfdutils (5ff4811c) (@MarkCallow)

  • git subrepo push lib/dfdutils (ce2a4619) (@MarkCallow)

  • Calculate dst buffer size with ZSTD_compressBound. (#527) (81d2be5c) (@MarkCallow)

  • Remove extraneous token concatenation operator. (a8f4a71d) (@MarkCallow)

  • Fix malloc/delete pair. (0a3fe5b1) (@sergeyext)

  • Manually update git-subrepo parent (929c75c3) (@wasimabbas-arm)

  • git subrepo pull (merge) lib/astc-encoder (f5daffea) (@wasimabbas-arm)

  • Fix parent commit pointer. (1a356d0e) (@MarkCallow)

  • git subrepo pull (merge) lib/basisu (24c9f7bb) (@MarkCallow)

  • Move common params out from ETC1S case. (a2ccc90e) (@MarkCallow)

  • Remove transferFunction from astc options (#482) (1f085d30) (@wasimabbas-arm)

  • Fix leak in zstd inflation. Fixes #465. (720b6cf3) (@MarkCallow)

  • Support array and 3d textures. (#468) (b0532530) (@MarkCallow)

  • Add more astc tests (#460) (14284e7d) (@wasimabbas-arm)

  • Add astc support (#433) (da435dee) (@wasimabbas-arm)

  • Actually byte swap keyAndValueByteSize values. Fix issue #447. (00118086) (@MarkCallow)

  • Add KTXmetalPixelFormat to valid list used by ktxTexture2_WriteToStream. (871f111d) (@MarkCallow)

  • Fix astc-encoder/.gitrepo parent after latest pull. (f99221eb) (@MarkCallow)

  • git subrepo pull (merge) lib/astc-encoder (66692454) (@MarkCallow)

  • Fix astc-encoder/.gitrepo parent pointer. (f39b13b1) (@MarkCallow)

  • Fix memory leak in VkUpload (#448) (2b2b48fa) (@bin)

  • Fix: if ("GL_EXT_texture_sRGB") is supported,then srgb should be supported (#446) (13f17410) (@dusthand)

  • git subrepo commit (merge) lib/astc-encoder (1264f867) (@MarkCallow)

  • git subrepo pull (merge) lib/astc-encoder (15369663) (@MarkCallow)

  • Make ktxStream public (#438) (78929f80) (@UberLambda)

  • git subrepo pull (merge) lib/astc-encoder (535c883b) (@MarkCallow)

  • Fix mismatched malloc and delete (#440) (9d42b86f) (@cperthuisoc)

  • Cleanup Vulkan SDK environment variables. (354f640e) (@MarkCallow)

  • git subrepo pull (merge) lib/astc-encoder (3e75b6a3) (@MarkCallow)

  • Remove unneeded parts of astc-encoder. (360d10bb) (@MarkCallow)

  • git subrepo clone https://github.com/ARM-software/astc-encoder.git lib/astc-encoder (db359593) (@MarkCallow)

  • Raise warning levels to /W4 & -Wall -Wextra (#418) (ca6f6e7d) (@MarkCallow)

  • Minor build tweaks (#407) (6a38a069) (@MarkCallow)

Tools

  • Farewell GYP. :-( (f1f04a7e) (@MarkCallow)

  • Miscellaneous fixes (#558) (66f6d750) (@MarkCallow)

  • Add JNI component and integrate Java build & test with CMake (#556) (e29e0996) (@MarkCallow)

  • Fix non-clang warnings (#549) (4e7e40a0) (@MarkCallow)

  • Fix VS warnings (#544) (8c6b3571) (@wasimabbas-arm)

  • Remove image.hpp dependency (#542) (9fde96b9) (@wasimabbas-arm)

  • Update to Basis 1.16.1 (#541) (cb45eadc) (@MarkCallow)

  • Improve Astc & BasisU normal map support (#493) (2d6ff949) (@wasimabbas-arm)

  • Validate BasisU Transcode (#532) (39e2d96e) (@MarkCallow)

  • Fix mismatched errors for required and optional index entries. (b8786496) (@MarkCallow)

  • fix missing -w flag for ktx2check (eade072d) (@sidsethupathi)

  • Remove transferFunction from astc options (#482) (1f085d30) (@wasimabbas-arm)

  • Ensure NUL on end of 3d orientation. (74501ef3) (@MarkCallow)

  • Support array and 3d textures. (#468) (b0532530) (@MarkCallow)

  • Fix checks for mismatched image attributes. (#466) (4eca0ef3) (@MarkCallow)

  • Add more astc tests (#460) (14284e7d) (@wasimabbas-arm)

  • Add astc support (#433) (da435dee) (@wasimabbas-arm)

  • macOS Apple Silicon support (#415) (ebab2ea8) (@atteneder)

  • Raise warning levels to /W4 & -Wall -Wextra (#418) (ca6f6e7d) (@MarkCallow)

  • Fix validation errors (#417) (78cd2b01) (@MarkCallow)

JS Wrappers

  • Farewell GYP. :-( (f1f04a7e) (@MarkCallow)

  • Update to Basis 1.16.1 (#541) (cb45eadc) (@MarkCallow)

  • Raise warning levels to /W4 & -Wall -Wextra (#418) (ca6f6e7d) (@MarkCallow)

Java Wrapper

  • Workaround FindJNI searching for framework when JAVA_HOME not set. (#566) (957a198b) (@MarkCallow)

  • Miscellaneous fixes (#558) (66f6d750) (@MarkCallow)

  • Add JNI component and integrate Java build & test with CMake (#556) (e29e0996) (@MarkCallow)

  • Fix warnings in JNI library and update to latest libktx API. (#548) (6f98b3c4) (@ShukantPal)

  • Update to Basis 1.16.1 (#541) (cb45eadc) (@MarkCallow)

  • Feature: Java bindings for libktx (#481) (a7159924) (@ShukantPal)

v4.0.0

3 years ago

Release Notes

Version 4.0.0

Significant Changes since Release Candidate 1

  • Basis Universal has been updated to version 1.15.

  • Errors in both ktx2check and ktxinfo causing bogus out of memory messages when there is no metadata or an empty value have been fixed.

  • An issue in msc_basis_transcoder causing intermittent Javascript "Cannot perform Construct on a detached ArrayBuffer" errors has been fixed. NOTE: that msc_basis_transcoder is deprecated and will be replaced by the transcoder wrapper from the Basis Universal repository.

Known Issues in v4.0.0.

  • toktx will not read JPEG files with a width or height > 32768 pixels.

  • toktx will not read 4-component JPEG files such as those sometimes created by Adobe software where the 4th component can be used to re-create a CMYK image.

  • Emscripten versions greater than 2.0.15 have an issue that causes the Javascript wrapper for libktx to fail. The downloadable package KTX-Software-4.0.0-rc1-Web-libktx.zip has been built with Emscripten 2.0.15. You only need to be aware of this if building the wrapper yourself with your own installed emsdk.

  • Users making Basisu encoded or block compressed textures for WebGL must be aware of WebGL restrictions with regard to texture size and may need to resize images appropriately using the --resize feature of toktx. In general the dimensions of block compressed textures must be a multiple of the block size and, if WEBGL_compressed_texture_s3tc on WebGL 1.0 is expected to be one of the targets, then the dimensions must be a power of 2. For portability glTF's KHR_texture_basisu extension requires texture dimensions to be a multiple of 4, the block size of the Universal texture formats.

  • Basis Universal encoding results (both ETC1S/LZ and UASTC) are non-deterministic across platforms. Results are valid but level sizes and data will differ slightly. See issue #60 in the basis_universal repository.

  • UASTC RDO results differ from run to run unless multi-threading or RDO multi-threading is disabled. In toktx use --threads 1 for the former or --uastc_rdo_m for the latter. As with the preceeding issue results are valid but level sizes will differ slightly. See issue #151 in the basis_universal repository.

Changes since v4.0.0-rc1 (by part)

libktx

  • Adapt for Basisu 1.15. (a0642fa1) (@MarkCallow)

    • Use zstd included in basisu.
    • Regen reference images with updated ETC1S encoder and newer zstd version.
  • git subrepo pull lib/basisu (c7211336) (@MarkCallow)

    subrepo: subdir: "lib/basisu" merged: "5337227c" upstream: origin: "https://github.com/BinomialLLC/basis_universal.git" branch: "master" commit: "5337227c" git-subrepo: version: "0.4.3" origin: "https://github.com/MarkCallow/git-subrepo.git" commit: "c1f1132"

  • Point .gitsubrepo at correct parent. (02c43d57) (@MarkCallow)

  • Minor reformat (#399) (a78c3b46) (@lexaknyazev)

  • Handle PVRTC1 minimum 2 block requirement. Fixes issue #390. (#398) (2034ce71) (@MarkCallow)

  • Fix: Handle metadata with empty values. (02652303) (@MarkCallow)

    Incidental to the main fix, fix memory leaks in texturetests.

  • Fix: properly handle 0 length kvdata. (aee7a1c5) (@MarkCallow)

  • Fix error in example. (b7563ea6) (@MarkCallow)

  • 2 small fixes: (50000ca6) (@MarkCallow)

    • Raise error in GLUpload on attempted upload of universal texture.
    • In ktx2check don't combine FLOAT & NORM when checking VK_FORMAT name.

Tools

  • Copy all image attributes when resampling. (83518cdc) (@MarkCallow)

  • Skip mipPadding also when no sgd or kvd. Fixes #395. (#396) (fa739a2d) (@MarkCallow)

  • 2 small fixes: (50000ca6) (@MarkCallow)

    • Raise error in GLUpload on attempted upload of universal texture.
    • In ktx2check don't combine FLOAT & NORM when checking VK_FORMAT name.

JS Wrappers

  • Obtain HEAP references after resizing vectors. (5bf11d8f) (@MarkCallow)

    Possible fix for issue #371.

v4.0.0-rc1

3 years ago

Release Notes

Version 4.0.0-rc1

Significant Changes

toktx's Handling of 1- or 2-component input files has been changed. In accordance with the PNG and JPEG specifications describing files as luminance, it now creates luminance textures.

The following options have been added to toktx:

  • --assign_oetf lets you override the oetf from the input file.
  • --convert_oetf lets you convert the input image to a different oetf.
  • --assign_primaries lets you override the color primaries from the input file.
  • --input_swizzle lets you specify a component swizzling to be applied to the input image before it is used to create a KTX file.
  • --swizzle lets you specify swizzle metadata to be written to a created KTX v2 file.
  • --target_type lets you modify the number of components of the input image or override the default handling of 1- or 2-component textures.

See the toktx man page for details.

Changes since v4.0.0-beta8 (by part)

libktx

  • Make luminance{,_alpha} default for greyscale{,-alpha} input images. Add new features. (#387) (2ffdc81a) (@MarkCallow)

    New features include:

    --input\_swizzle & --swizzle
    --target\_type
    --assign\_oetf
    --convert\_oetf
    

    The PR also includes documentation fixes for ktxTexture2_CompressBasisEx.

  • git subrepo pull lib/dfdutils (7afa86a5) (@MarkCallow)

    subrepo: subdir: "lib/dfdutils" merged: "659a739b" upstream: origin: "https://github.com/KhronosGroup/dfdutils.git" branch: "master" commit: "659a739b" git-subrepo: version: "0.4.3" origin: "https://github.com/MarkCallow/git-subrepo.git" commit: "c1f1132"

  • git subrepo pull lib/dfdutils (f5310bdd) (@MarkCallow)

    subrepo: subdir: "lib/dfdutils" merged: "c95d443a" upstream: origin: "https://github.com/KhronosGroup/dfdutils.git" branch: "master" commit: "c95d443a" git-subrepo: version: "0.4.3" origin: "https://github.com/MarkCallow/git-subrepo.git" commit: "c1f1132"

  • Fix commit of last pull. (9ccf88fd) (@MarkCallow)

  • git subrepo clone https://github.com/KhronosGroup/dfdutils.git lib/dfdutils (22d09c26) (@MarkCallow)

    subrepo: subdir: "lib/dfdutils" merged: "bf8b9961" upstream: origin: "https://github.com/KhronosGroup/dfdutils.git" branch: "master" commit: "bf8b9961" git-subrepo: version: "0.4.3" origin: "https://github.com/MarkCallow/git-subrepo.git" commit: "c1f1132"

  • Remove git subrepo clone of dfdutils ktxsw branch. (0101d6d4) (@MarkCallow)

Tools

  • Make luminance{,_alpha} default for greyscale{,-alpha} input images. Add new features. (#387) (2ffdc81a) (@MarkCallow)

    New features include:

    --input\_swizzle & --swizzle
    --target\_type
    --assign\_oetf
    --convert\_oetf
    

    The PR also includes documentation fixes for ktxTexture2_CompressBasisEx.

v4.0.0-beta8

3 years ago

Release Notes

Version 4.0.0-beta8

Significant Changes

Incoporates Basis Universal 1.13 bringing the latest ETC1S and UASTC encoders.

The ETC1S encoder is 3x faster with no quality loss (toktx option --clevel 2) and 4.5x faster with a very slight quality loss (--clevel 1). Note that the default compressionLevel parameter in the libktx API has been changed from 1 to 2. However the default in toktx remains 1, to match basisu_tool.

The UASTC RDO encoder has greatly improved quality per bit making lower bitrates more usable. As part of this toktx's --uastc_rdo_q option has been renamed --uastc_rdo_l (for lamda) to reflect the new implementation. The range of values to try has changed too. The UASTC RDO dictionary size default and minimum allowed size have changed. There are now options to control the new smooth block detector and an option to disable RDO multithreading for determinism. See the toktx man page for details.

Changes since v4.0.0-beta7 (by part)

libktx

  • git subrepo push lib/dfdutils (5d1acb19) (@null)

  • Ignore noSSE when SSE support not compiled in. (5a1f9e6c) (@MarkCallow)

  • git subrepo pull lib/basisu (edac0216) (@MarkCallow)

  • Restore previous value of sse support. (41e23d02) (@MarkCallow)

  • Expose new BU encoder options in libktx & apps. (7d0e9641) (@MarkCallow)

  • git subrepo pull lib/basisu (69017842) (@MarkCallow)

  • Integrate Basis changes into build. (231e828a) (@MarkCallow)

  • git subrepo pull --force lib/basisu (8621a855) (@MarkCallow)

  • Remove copies of moved and deleted files. (0bc26125) (@MarkCallow)

  • Fix compile warnings passing args to new basisu API. (1bdc1eca) (@MarkCallow)

  • Support video in cube maps to match relaxation in KTX spec. (#381) (f6c5f548) (@MarkCallow)

Tools

  • Remove workaround for issue with basisu_resampler.h. (d74c679f) (@MarkCallow)

  • Expose new BU encoder options in libktx & apps. (7d0e9641) (@null)

  • Fix MSVC confusion & error over intended iterator. (8a00c9c2) (@null)

  • Remove copies of moved and deleted files. (0bc26125) (@null)

  • Support video in cube maps to match relaxation in KTX spec. (#381) (f6c5f548) (@null)

v4.0.0-beta7

3 years ago

Release Notes

Version 4.0.0-beta7

Significant Changes

  • An error that prevented KTX files created from PNG files with tRNS chunks having alpha channels was fixed.

Changes since v4.0.0-beta6 (by part)

libktx

  • Properly detect presence of a tRNS chunk. Fixes #356. (#370) (08eed131) (@MarkCallow)

  • Fix first INVALID_OPERATION reason. Fixes #358. (4013b1f0) (@MarkCallow)

  • Expose BasisU compressor status_output via a --verbose opt. (#368) (9f40914f) (@MarkCallow)

  • Disable status output from BasisU compressor. (97bdfcaf) (@MarkCallow)

  • Update for latest BasisU API & deprecate msc_basis_transcoder. (ce766b78) (@MarkCallow)

  • git subrepo commit (merge) lib/basisu (c2776ffe) (@MarkCallow)

    subrepo: subdir: "lib/basisu" merged: "61785924" upstream: origin: "https://github.com/BinomialLLC/basis_universal.git" branch: "master" commit: "ef70ddd7" git-subrepo: version: "0.4.0" origin: "https://github.com/MarkCallow/git-subrepo.git" commit: "65b6406"

Tools

  • Fix reporting of jpeg decoder errors. (79d3f354) (@MarkCallow)

  • Properly detect presence of a tRNS chunk. Fixes #356. (#370) (08eed131) (@MarkCallow)

  • Rescale to 8-bits when encoding to UASTC. Fixes #360. (6c792d94) (@MarkCallow)

  • Update for latest BasisU API & deprecate msc_basis_transcoder. (ce766b78) (@MarkCallow)

JS Wrappers

  • Add BC7_RGBA. Deprecate other BC7 enums. Fixes #369. (a5a812ec) (@MarkCallow)

  • Fix duplicate call in transcode example code. (15731f5f) (@MarkCallow)

  • Update for latest BasisU API & deprecate msc_basis_transcoder. (ce766b78) (@MarkCallow)

v4.0.0-beta6

3 years ago

Release Notes

Version 4.0.0-beta6

New Features

Notable Changes

Known Issues

  • Users making Basisu encoded or block compressed textures for WebGL must be aware of WebGL restrictions with regard to texture size and may need to resize images appropriately using the --resize feature of toktx. In general the dimensions of block compressed textures must be a multiple of the block size and, if WEBGL_compressed_texture_s3tc on WebGL 1.0 is expected to be one of the targets, then the dimensions must be a power of 2.

  • Basis Universal encoding results (both ETC1S/LZ and UASTC) are non-deterministic across platforms. Results are valid but level sizes and data will differ slightly. See issue #60 in the basis_universal repository.

  • UASTC RDO results differ from run to run unless multi-threading is disabled. As with the preceeding issue results are valid but level sizes will differ slightly. See issue #151 in the basis_universal repository.

Changes since v4.0.0-beta5 (by part)

libktx

  • Fix handling of E5R9G9B9 format in initFromDFD. (#353) (5d19bb83) (@MarkCallow)

    Fixes #343.

Tools

  • Fix an issue with the generated KtxTargets.cmake (#325) (9131fba1) (@UX3D-becher)

    Make it possible to use the find_package functionality of cmake to use libktx as imported target.

v4.0.0-beta5

3 years ago

Version 4.0.0-beta5

New Features

  • The build system now supports building a version libktx with only functionality for reading KTX files.

  • The build system now has a configuration option to build a static library on Linux, macOS and Windows.

Notable Changes

  • A bug in the swizzle functionality internal to libktx has been fixed. This bug caused some textures to be improperly swizzled before encoding to BasisLZ/ETC1S and UASTC. The net result is that R textures were swizzled to R,0,0,255 instead of R,R,R,255 and RG textures or those with separateRGToRGB_A specified were swlzzled to R,R,0,255 instead of R,R,R,G.

  • A bug that prevented zstd compressed textures with packed image formats from being loaded has been fixed.

Known Issues

  • Users making Basisu encoded or block compressed textures for WebGL must be aware of WebGL restrictions with regard to texture size and may need to resize images appropriately using the --resize feature of toktx. In general the dimensions of block compressed textures must be a multiple of the block size and, if WEBGL_compressed_texture_s3tc on WebGL 1.0 is expected to be one of the targets, then the dimensions must be a power of 2.

  • Basis Universal encoding results (both ETC1S/LZ and UASTC) are non-deterministic across platforms. Results are valid but level sizes and data will differ slightly. See issue #60 in the basis_universal repository.

  • UASTC RDO results differ from run to run unless multi-threading is disabled. As with the preceeding issue results are valid but level sizes will differ slightly. See issue #151 in the basis_universal repository.

Changes since v4.0.0-beta4 (by part)

libktx

  • Move swizzle def to write exports. Fix VS warnings. (8942c6d4) (@MarkCallow)

  • Export swizzzle_to_rgba. (f37f8772) (@MarkCallow)

  • Fix swizzle_to_rgba and ETC1S channel ids. (1bb78e9d) (@MarkCallow)

  • Match examples to actual usage (#339) (02423933) (@ErixenCruz)

  • fix: Linking static ktx_read now succeeds on Windows. Fixed by splitting up write-related exported symbols (that are not part of ktx_read) in separate .def file. (#336) (6822201b) (@atteneder)

  • fix: double "the" typo (#333) (d5d5708f) (@atteneder)

  • Fix Writing BasisLZ/ETC1S example. Fixes #329. (19785767) (@MarkCallow)

  • KTX read-only and static libraries (#324) (58c8e981) (@atteneder)

  • fixed some typos in doc strings (#322) (c92b946b) (@atteneder)

  • Recreate bytesPlane0 for supercompressed textures. (#321) (07a2ea9f) (@MarkCallow)

Tools

  • KTX read-only and static libraries (#324) (58c8e981) (@atteneder)

  • fix: forcing a transfer function with multiple mipmap levels provided (#323) (6f32ea8f) (@atteneder)

  • fixed some typos in doc strings (#322) (c92b946b) (@atteneder)

v4.0.0-beta4

3 years ago

New Features

  • toktx now supports 16-bit per component images as input for Basis Universal encoding. Previously they could only be used to create 16-bit format textures. It also supports using paletted images as input. These will be expanded to RGB8 or RGBA8 depending on presence of alpha.

  • The WASM modules for the libktx and msc_basis_transcoder JS bindings now include the BC7 and ETC_RG11 transcoders.

Notable Changes

  • A bug in ktx2check that caused some files with invalid data format descriptors to be passed as valid has been fixed.

  • CompressBasisEx in libktx now requires explicit setting of the compressionLevel in its params argument. To get the same behavior as before callers should set this field to KTX_DEFAULT_ETC1S_COMPRESSION_LEVEL.

  • The JS wrappers are now compiled with -O3 optimization leading to about a 2x performance increase at the cost of a small size increase.

Known Issues

  • Users making Basisu encoded or block compressed textures for WebGL must be aware of WebGL restrictions with regard to texture size and may need to resize images appropriately using the --resize feature of toktx. In general the dimensions of block compressed textures must be a multiple of the block size and, if WEBGL_compressed_texture_s3tc on WebGL 1.0 is expected to be one of the targets, then the dimensions must be a power of 2.

  • Basis Universal encoding results (both ETC1S/LZ and UASTC) are non-deterministic across platforms. Results are valid but level sizes and data will differ slightly. See issue #60 in the basis_universal repository.

  • UASTC RDO results differ from run to run unless multi-threading is disabled. As with the preceeding issue results are valid but level sizes ``will differ slightly. See issue #151 in the basis_universal repository.

Changes since v4.0.0-beta3 (by part)

libktx

  • Implement KTXwriterScParams metadata (#315) (082d1b67) (@MarkCallow)

  • Fix: identifier printing could overrun the identifier (#306) (5182a5e3) (@MarkCallow)

  • Bring repository into REUSE compliance (#291) (3c1fa2ab) (@oddhack)

  • Update for latest vulkan_core.h. (0062e172) (@MarkCallow)

  • git subrepo pull (merge) lib/dfdutils (5b20f0f9) (@MarkCallow)

  • git subrepo pull (merge) lib/dfdutils (355fce8c) (@MarkCallow)

  • Fix parent which changed due to a squash merge. (020e43e9) (@MarkCallow)

  • Don't set dllexport outside libktx. (32a1a287) (@MarkCallow)

  • Require explicit setting of ktxBasisParams.compressionLevel. (46bdc7cc) (@MarkCallow)

  • Simplify --qlevel. Remove --no_multithreading. Fixes #275. (da5c204a) (@MarkCallow)

  • Support PNG files with only gAMA and cHRM chunks. (#282) (0d851050) (@MarkCallow)

  • Check support of enough levels & layers for format. (10ce7454) (@MarkCallow)

  • Return early on empty hashlist. (fc73f886) (@MarkCallow)

  • Fix compile and Doxygen warnings. (2c40ba4d) (@MarkCallow)

Tools

  • Implement KTXwriterScParams metadata (#315) (082d1b67) (@MarkCallow)

  • Fixed loading PPM files where maxval in not equal to 255 or 65535 for 2 byte color component (#311) (1259580f) (@kacprzak)

  • Fix: inverted memcmp result cause some invalid files to pass. Fixes #309 (#310) (9a0a12bf) (@MarkCallow)

  • Fix: identifier printing could overrun the identifier (#306) (5182a5e3) (@MarkCallow)

  • Fixed levelCount check when levelCount is 0 (d85bdb66) (@pdaehne)

  • Fixed missing check for bytes/plane == 0 when supercompressing standard Vulkan texture formats (#299) (f5e05425) (@pdaehne)

  • Fix for wrong error message in ktx2check (#297) (96e41fdc) (@pdaehne)

  • Bring repository into REUSE compliance (#291) (3c1fa2ab) (@oddhack)

  • Update for latest vulkan_core.h. (0062e172) (@MarkCallow)

  • fix: By default create 1D texture when height == 1 (a3971738) (@kacprzak)

  • Simplify --qlevel. Remove --no_multithreading. Fixes #275. (da5c204a) (@MarkCallow)

  • Support PNG files with only gAMA and cHRM chunks. (#282) (0d851050) (@MarkCallow)

  • Fix more MSVS compile warnings. (e6cc8963) (@MarkCallow)

  • Support 16-bit and paletted images. (8283ea50) (@MarkCallow)

  • Remove PreAllocator<> and std::vector hacks from ImageT (d1e1b8f7) (@zeux)

  • Fix assertion in MSVC Debug (cd62c227) (@zeux)

  • Derive toktx from scapp/ktxapp & capture sc args in metadata (#256) (67855d1e) (@MarkCallow)

  • Fix compile and Doxygen warnings. (2c40ba4d) (@MarkCallow)

JS Wrappers

  • Bring repository into REUSE compliance (#291) (3c1fa2ab) (@oddhack)

  • Add missing BC7_RGBA enum. Deprecate others. (571973e5) (@MarkCallow)

v4.0.0-beta3

4 years ago