Tool to create BCn-compressed KTX2 format textures
Find a file
2023-04-28 19:37:02 +03:00
build Initial code commit 2023-04-28 15:47:06 +03:00
Source GCC/clang cpuid intrinsic instead of inline asm 2023-04-28 19:37:02 +03:00
.gitignore Add gitignore file 2023-04-28 19:05:42 +03:00
LICENSE Fix LICENSE file conflict. Thanks github, very helpful. 2023-04-28 16:29:20 +03:00
meson.build Initial code commit 2023-04-28 15:47:06 +03:00
README.md Added note about linear/SRGB encoding to README.md 2023-04-28 19:16:41 +03:00

TextureTaffy

A utility to create compressed textures, in BC1 (DXT1), BC3 (DXT5), BC4, BC5, BC6(U)H and BC7 compression formats, with the KTX File Format Version 2.0 (KTX2) file format.

Requirements

Building

meson setup build [--buildtype=release] -Dcpp_std=c++17
meson compile -C build

Notes and limitations

  • Uses stb_image for image loading. Therefore only supports radiance HDR images, not OpenEXR.
  • KTX2 writer probably isn't the most robust, but it works for what I need in my pipeline.
  • ispc_texcomp doesn't appear to have seperate options for encoding linear BC1, BC3 and BC7 textures. The only difference is the method I use for scaling and the format header. Therefore the linear textures I output are probably very non-optimal. BC4/BC5/BC6 is probably best for linear data.
  • Tested with LDR and HDR single images and cubemaps. May work with 3D textures and arrays, but not tested.
  • Only supports BC1, BC3, BC4, BC5, BC6H and BC7 compression formats, ETC and ASTC are implemented by ispc_texcomp, but I haven't had a need for them yet. Pull requests welcome!
  • Based on my testing, the SSE4 code path is faster than AVX2 on modern AMD processors, but AVX2 is faster on intel. from what I've read, AMD implements AVX2 in slow microcode. ISPC doesn't allow easily selecting the instruction set at runtime, so I've added a little hack to detect AMD and use SSE4 in that case.
  • Only supports x86/x64 processors. In theory ispc_texcomp has support for ARM NEON extensions for example, but I haven't had time to look at that.