KTX is an excellent image format with a number of graphic features useful when it comes to using it for textures and 3D:
-
Can utilize GPU compression (images are compressed not only on disk, but also in GPU memory). We support these GPU-compressed formats in KTX:
-
S3TC (DXT* formats, often available on desktops),
-
ATITC (ATI compression, available on some mobile devices),
-
PVRTC (PowerVR compression, available on some mobile devices),
-
ETC1 (Ericsson compression, often available on mobile devices, but without alpha support).
-
More compressed formats can be trivially added, just submit a bugreport with a sample KTX file.
-
Float-based formats are fully supported. When encountered, KTX files with float-based data will be read to engine float-based formats, and passed as floats to the GPU (so your shaders can enjoy data that has higher-precision and is not bounded to the [0, 1] range):
-
Textures can have explicit mipmaps (allows texture have better quality when viewer from far away).
-
Volume (3D) textures.
-
Configurable orientation of the image data in file. KTX data may be specified in top-to-bottom or bottom-to-top order. For 3D images, the slices can additionally be in front-to-back or back-to-front order. We support all these possibilities.
-
Cube map can be stored — this means that we effectively have 6 images (for skyboxes, reflections, etc.). TODO: We don’t support cubemap yet, but we plan to add it. Submit a bugreport with a sample KTX file to make it happen sooner!
We support KTX 1 right now. We plan to support KTX 2 (with KHR_texture_basisu) in the future too.