Basis Universal .KTX2/.DDS Studio v2.50

This tool uses the Basis Universal C++ transcoder (compiled to WebAssembly using Emscripten) to transcode a .ktx2 file to:
FORMAT

About Basis Universal .KTX2/.DDS Studio

The viewer is implemented in WebGL and renders a single textured quad. It also supports encoding .PNG, .JPG, .QOI, .EXR or .HDR files to LDR or HDR .KTX2 files.

Additional image formats (.WebP, .AVIF, .GIF, .BMP, .TIFF, .HEIC, .HEIF, .JXL) are supported via browser-assisted decoding (browser support varies by format).

Thanks to Evan Parker for providing webgl-texture-utils and this test bed. Go back.

Notes: Enable your browser debug console (F12 on Chrome/Firefox) to see debug output. The largest image resolution that can be compressed in the browser with this library is limited to either 16 megapixels or 4 megapixels (depending on format and WASM64/WASM32) to avoid running out of WASM memory.


Supported WebGL formats:



Use Multithreading (if available)
Additional Worker Threads (Max 32):


Source Image / File Input:

Drag and drop a .KTX2, .DDS, or image file here, or click to select a file.


.ktx2 file:
Loaded: (none)

.png/.jpg/.webp/.exr/.hdr file:
Loaded: (none)




Encoding Settings Preset:
KTX2 Texture Format to Encode:

XUASTC LDR Syntax:

XUBC7 RDO Level (higher=smaller): 0

Primary compression quality/effort options:
Use unified quality/effort options (overrides many below low-level options):
3

80

Display/Visualization Options:


Disabled
1.0000
1x
0
0
0
Canvas Bilinear Filtering:

XUASTC/ASTC LDR: Visualize GPU deblocking edge weights:

Transcoder Options (Decode Flags):

Apply deblocking filter to all block sizes when forced, not just to large block sizes:
ETC1S: No BC7 Chroma Artifact Filtering (faster transcoding):
XUASTC LDR 4x4/6x6/8x6: No direct BC7 transcoding (slower/higher quality):
Prefer higher quality transcoding when supported (slower):
Transcode alpha to opaque (ETC1/PVRTC1_RGB):

Mipmap Generation Options Generate mipmap levels:



Mip Wrapping: Mip Renormalize:

.DDS/.KTX Developer Tools
Export encoded .KTX2 to .DDS:
Export encoded .KTX2 to .KTX (v1):
Encode loaded source image directly to .DDS:

DDS Texture Format to Encode:






Low-level XUASTC/ASTC LDR 4x4-12x12 Options
2
80


256

Bounded/windowed RDO lossy supercompression:
No RGB dual plane (lower quality, faster encoding/BC7 transcoding):
No 2-3 subset usage (lower quality, faster encoding/BC7 transcoding):
Enable prefiltering/blurred candidates (higher quality, slower):
Heavy subset usage (higher quality at lowest bitrates, slower):






ASTC/XUASTC LDR Bounded/Windowed RDO Params:
Opaque:




Alpha:




Low-level XUBC7 Options
8



2

Low-level ETC1S LDR Options
ETC1S Quality: 255
1

Low-level UASTC LDR 4x4 Options
UASTC LDR RDO: 1.0
1

Low-level UASTC HDR 4x4 Options
0

Low-level ASTC/UASTC HDR 6x6 Options
0
RDO Quality (Lambda, 0-50k, try 0-5k, higher=smaller):
REC 2020 Colorspace (impacts error metrics, KTX2 DFD Gamut):

LDR->HDR Upconversion Options
Convert LDR images to linear light:
LDR to HDR Upconversion Nit Multiplier:

Other Options:
Image is sRGB/use sRGB perceptual metrics:
Y flip source image:

Channel Weights (XUASTC/ASTC/XUBC7/DDS bc7e_scalar):


Channel Swizzle (each output channel's source index 0-3; default 0,1,2,3 = no swizzle):


Debug Output (See Dev Console):
Clear Dev Console on each encode:
Encode on worker thread by default (on image load):
Auto-close encode progress dialog when done (uncheck to study debug output):
Compute Stats (slower encoding):
Print Stats:
Development Log Output
Encoding…