blob: 231147db5868f7bec9e6712d6dec655685dd3a1e [file] [log] [blame] [edit]
Basis Universal LDR/HDR GPU Texture Supercompression System v1.65.0 (x64)
Copyright (C) 2019-2026 Binomial LLC, All rights reserved
Usage: basisu filename [filename ...] <options>
See project and wiki at: https://github.com/BinomialLLC/basis_universal
The default processing mode is compression of one or more .PNG/.TGA/.JPG/.QOI/
.DDS/.EXR/.HDR files to a LDR or HDR .KTX2 file. Alternate modes:
-unpack: Use transcoder to unpack a .basis/.KTX2 file to one or more .KTX,
.DDS, .PNG, .ASTC, etc. files.
-info: Display high-level information about a .basis/.KTX2 file
-validate: Validate and display information about a .basis/.KTX2 file
-compare: Compare two LDR PNG/BMP/TGA/JPG/QOI images specified with -file,
output PSNR and SSIM statistics and RGB/A delta images
-compare_hdr: Compare two HDR .EXR/.HDR images specified with -file, output
PSNR statistics and RGB delta images
-tonemap: Tonemap an HDR or EXR image to PNG at multiple exposures, use -file
to specify filename
-peek_astc: Read an .astc file and calculate statistics (for testing/dev)
-version or --version: Print version and exit
--- Intro:
This tool compresses LDR/SDR and HDR images and textures to a Basis Universal
supercompressed GPU texture, which can be written to supercompressed .basis or
standard .KTX2 files. It supports a number of SDR and HDR codecs, each with
different quality, transcoding performance, and bitrate tradeoffs. A SDR/HDR
mipmap generator is also included. This tool can also examine and
unpack .KTX2/.basis files to .PNG, .KTX (v1), .ASTC, or .DDS files using its
single source file transcoder library.
The list of supported texture/supercompressed texture codecs:
-LDR: ETC1S (SDR default), RDO UASTC LDR 4x4, ASTC or XUASTC LDR 4x4-12x12
-HDR: UASTC HDR 4x4 (HDR default), RDO ASTC HDR 6x6, UASTC HDR 6x6
RDO=Rate-Distortion Optimization. Two key parameters (quality and effort) have
been unified across all the codecs:
- The -quality X parameter, where X ranges from [0, 100], controls the
compression quality vs. bitrate (output file size) tradeoff for those codecs
supporting supercompression or RDO (Rate-distortion optimization). 100=max
quality, and lower levels produce smaller files with more distortion.
- The -effort X parameter, where X ranges from [0, 10], controls the
compression speed (and max CPU usage) vs. max achievable quality tradeoff.
Low efforts result in more distortion/artifacts, but faster compression. Lower
efforts result in less utilization of the underlying GPU block format's
capabilities.
Key Definitions:
"Quality" controls the explicit tradeoff between output distortion and output
file bitrate (in bits per pixel or target). At max quality (100) each
compressor will output the lowest distortion it's capable of at its currently
configured effort level.
"Effort" controls how intensely a compressor uses the CPU to focus on each
block format's encoding capabilities. Low effort levels only target a set of
core or basic capabilities (specific to each output target format), while
higher effort levels allow each compressor to explore more of each target's
features (at the cost of higher CPU time). Lower effort levels result in more
brittle compression (higher distortion on tough image/texture features).
Effort=0 fastest compression, effort=10=extremely slow.
Unless an explicit mode is specified, if one or more files have the .basis
or .KTX2 extension this tool defaults to unpack mode.
By default, the compressor assumes the input is in the sRGB colorspace (like
typical photos/albedo textures). If the input is NOT sRGB (like a normal map),
be sure to specify -linear for less artifacts. Depending on the content type,
some experimentation may be needed.
The TinyEXR library is used to read .EXR images. Crucially, this small library
does not support all .EXR compression methods. For unsupported images, you can
use a tool like ImageMagick to convert them to uncompressed .EXR.
For .DDS source files: Mipmapped or plain 2D textures (but not cubemaps) are
supported. Only uncompressed 32-bit RGBA/BGRA, half float RGBA, or float
RGBA .DDS files are supported. In -tex_array mode, if a .DDS file is specified,
all source files must be in .DDS format.
Filenames prefixed with a @ symbol are read as filename listing files. Listing
text files specify which actual filenames to process (one filename per line).
--- High-Level Texture Mode (Codec) Selection:
1. -etc1s: Encode to supercompressed ETC1S LDR (the default for SDR/LDR
inputs). Roughly .8-2.5 bpp. Supports temporal texture supercompression
(texture video) with skip blocks (Conditional Replenishment), with global
codebooks shared across all frames.
2. -uastc/-uastc_ldr: UASTC LDR 4x4. Encode to UASTC LDR 4x4, a custom high
quality virtual texture format designed for fast transcoding to numerous
GPU texture formats. Roughly 5-8 bpp. Supports RDO encoding using -lambda X
option - see options below. In this mode the multi-target compressor
optimizes for a balance of transcoded ASTC 4x4 LDR and BC7 quality.
3. -hdr/-hdr_4x4: UASTC HDR 4x4. Encode input as UASTC HDR 4x4 (the default if
any input file has the .EXR or .HDR extension, or if any .DDS file is HDR).
Output is standard, but constrained, ASTC HDR 4x4. Roughly 5-8 bpp. In this
mode the dual-target compressor optimizes for a balance of transcoded ASTC
4x4 HDR and BC6H quality.
4. -hdr_6x6: ASTC HDR 6x6. Encode input as RDO or highest quality standard
ASTC HDR 6x6. Use -quality (preferred) or -lambda X (low-level, try
100-20000 or higher) option to enable RDO ASTC HDR 6x6, where x controls
the quality vs. size tradeoff. Roughly 1.2-3.2 bpp.
5. -hdr_6x6i: UASTC HDR 6x6. Encode input as supercompressed UASTC HDR 6x6
intermediate. Use -quality (preferred) or -lambda X (low-level, try
100-20000 or higher) option to enable RDO UASTC HDR 6x6, where x controls
the quality vs. size tradeoff. Roughly 1-3.2 bpp.
6. XUASTC LDR 4x4-12x12: -ldr_4x4i, -ldr_5x4i, -ldr_5x5i, -ldr_6x5i,
-ldr_6x6i, -ldr_8x5i, -ldr_8x6i, -ldr_10x5i, -ldr_10x6i, -ldr_8x8i,
-ldr_10x8i, -ldr_10x10i, -ldr_12x10i, -ldr_12x12i:
Compress to supercompressed XUASTC LDR/SDR using the specific
ASTC block size. See additional ASTC/XUASTC LDR specific options
(-effort, -quality, -xy, -ts, -tl, etc.) below. Roughly .3-5.7 bpp
7. ASTC LDR 4x4-12x12: -ldr_4x4, -ldr_5x4, -ldr_5x5, -ldr_6x5, -ldr_6x6,
-ldr_8x5, -ldr_8x6, -ldr_10x5, -ldr_10x6, -ldr_8x8, -ldr_10x8,
-ldr_10x10, -ldr_12x10, -ldr_12x12:
Compress to standard or ZStd supercompressed ASTC LDR/SDR using
the specific ASTC block size. See additional ASTC LDR specific
options (-effort, -quality, -xy, -ts, -tl, etc.) below. .89-8 bpp before
ZStd compression.
--- Tool Options:
-ktx2: Write .KTX2 files (the default). By default, UASTC LDR/HDR 4x4 and ASTC
6x6 files will be compressed using Zstandard unless -ktx2_no_zstandard is
specified.
-basis: Write .basis files instead of .KTX2 files.
-file filename.png/tga/jpg/qoi/exr/hdr: Input image filename, multiple images
are OK, use -file X for each input filename (prefixing input filenames
with -file is optional)
-alpha_file filename.png/tga/jpg/qoi: Input alpha image filename, multiple
images are OK, use -file X for each input filename (must be paired
with -file), images converted to REC709 grayscale and used as input alpha
-output_file filename: Output .basis/.KTX2 filename
-output_path: Output .basis/.KTX2 files to specified directory.
-debug or -verbose: Enable codec debug print to stdout (slightly slower).
-debug_images: Enable codec debug images (much slower).
-stats: Compute and display image quality metrics (slightly to much slower).
-individual: Process input images individually and output
multiple .basis/.KTX2 files (not as a texture array - this is now the default
as of v1.16)
-parallel: Compress multiple textures simultaneously (one per thread), instead
of one at a time. Compatible with OpenCL mode. This is much faster, but in
OpenCL mode the driver is pushed harder, and the CLI output will be jumbled.
-linear: Use linear colorspace metrics (instead of the default sRGB or scaled
RGB for HDR), write linear transfer function setting to KTX2/basis file, and
by default linear (not sRGB) mipmap filtering (unless overridden). Same
as -tl.
-srgb: Use sRGB colorspace metrics, write sRGB transfer function setting to
KTX2/basis file, and by default use sRGB mipmap filtering (unless
overridden). Same as -ts.
-tex_type <2d, 2darray, 3d, video, cubemap>: Set Basis file header's texture
type field. Cubemap arrays require multiples of 6 images, in X+, X-, Y+, Y-,
Z+, Z- order, each image must be the same resolutions. 2d=arbitrary 2D
images, 2darray=2D array, 3D=volume texture slices, video=video frames,
cubemap=array of faces. For 2darray/3d/cubemaps/video, each source image's
dimensions and # of mipmap levels must be the same. For video, the .basis
file will be written with the first frame being an I-Frame, and subsequent
frames being P-Frames (using conditional replenishment). Playback must always
occur in order from first to last image.
-cubemap: same as -tex_type cubemap
-tex_array: Process input images as a single texture array and write a
single .basis/.KTX2 file (the former default before v1.16)
-fuzz_testing: Use with -validate: Disables CRC16 validation of file contents
before transcoding
-multifile_printf: printf() format string to use to compose multiple filenames
-multifile_first: The index of the first file to process, default is 0 (must
specify -multifile_printf and -multifile_num)
-multifile_num: The total number of files to process.
-opencl: Enable OpenCL usage (currently only accelerates ETC1S encoding)
-opencl_serialize: Serialize all calls to the OpenCL driver (to work around
buggy drivers, only useful with -parallel)
--- ETC1S specific options (-etc1s - the LDR/SDR default):
-quality X and -effort X: Set quality (1-100) and effort (0-10) levels
-q X: Low-level ETC1S quality level, 1-255, default is 128, lower=better
compression/lower quality/faster, higher=less compression/higher
quality/slower, default is 128. For even higher quality,
use -max_endpoints/-max_selectors. (-quality is preferred.)
-comp_level X: Low-level ETC1S speed vs. quality tradeoff. Range is 0-6,
default is 1. Higher values=MUCH slower, but slightly higher quality. Higher
levels intended for videos. (-effort is preferred.)
-max_endpoints X: ETC1S: Manually set the max number of color endpoint
clusters from 1-16128, use instead of -q
-max_selectors X: ETC1S: Manually set the max number of color selector
clusters from 1-16128, use instead of -q
--- UASTC LDR/HDR 4x4 specific options (-uastc or -uastc_ldr):
-quality X and -effort X: Set quality (1-100) and effort (0-10) levels
-uastc, -uastc_ldr or -uastc_ldr_4x4: Enable UASTC LDR 4x4 texture mode,
instead of the default ETC1S mode. Significantly higher texture quality, but
much larger (~8bpp) files. (Note that UASTC LDR 4x4 .basis files must be
losslessly compressed by the user.)
-uastc_level: Set low-level UASTC LDR/HDR 4x4 encoding effort level. LDR Range
is [0,4], default is 2, higher=slower but higher quality. 0=fastest/lowest
quality, 3=slowest practical option, 4=impractically slow/highest achievable
quality. UASTC HDR 4x4 range is [0,4]: higher=slower, but higher quality. HDR
4x4 default level=1.
-uastc_rdo_l X: Enable UASTC LDR 4x4 RDO post-processing and set the low-level
UASTC LDR 4x4 RDO quality scalar (lambda) to X. Lower values=higher
quality/larger LZ compressed files, higher values=lower quality/smaller LZ
compressed files. Good range to try is [.25-10]. Note: Previous versons used
the -uastc_rdo_q option, which was removed because the RDO algorithm was
changed.
-uastc_rdo_d X: Set UASTC LDR 4x4 RDO dictionary size in bytes. Default is
4096, max is 65536. Lower values=faster, but less compression.
-uastc_rdo_b X: Set UASTC LDR 4x4 RDO max smooth block error scale. Range is
[1,300]. Default is 10.0, 1.0=disabled. Larger values suppress more artifacts
(and allocate more bits) on smooth blocks.
-uastc_rdo_s X: Set UASTC LDR 4x4 RDO max smooth block standard deviation.
Range is [.01,65536]. Default is 18.0. Larger values expand the range of
blocks considered smooth.
-uastc_rdo_f: Don't favor simpler UASTC LDR 4x4 modes in RDO mode.
-uastc_rdo_m: Disable RDO multithreading (slightly higher compression,
deterministic).
--- UASTC HDR 4x4 specific options (-hdr or -hdr_4x4 - the HDR default):
-hdr, -hdr_4x4, or -uastc_hdr_4x4: Enable UASTC HDR 4x4 mode
-quality X and -effort X: Set quality (1-100) and effort (0-10) levels
-uastc_level X: Sets the low-level UASTC HDR 4x4 compressor's effort level.
Valid range is [0,4]: higher=slower but higher quality. HDR
default=1. Level 0=fastest/lowest quality, 3=highest practical
setting, 4=exhaustive
-hdr_uber_mode: Allow the UASTC HDR 4x4 encoder to try varying the CEM 11
selectors more for slightly higher quality (slower). This may negatively
impact BC6H quality, however.
-hdr_ultra_quant: UASTC HDR 4x4: Try to find better quantized CEM 7/11
endpoint values (slower).
-hdr_favor_astc: UASTC HDR 4x4: By default the dual-target UASTC HDR 4x4
encoder tries to strike a balance or even slightly favor BC6H quality. If
this option is specified, ASTC HDR 4x4 quality is favored instead.
--- ASTC/UASTC HDR 6x6 specific options (-hdr_6x6 or -hdr_6x6i):
Internally both modes use the same compressor which can generate either
standard ASTC HDR 6x6 (with optional RDO) or UASTC HDR 6x6 (supercompressed
with a custom format).
-hdr_6x6 or -astc_hdr_6x6: Enable RDO ASTC HDR 6x6 mode
-hdr_6x6i or -uastc_hdr_6x6: Enable UASTC HDR 6x6 mode
-quality X and -effort X: Set quality (1-100) and effort (0-10) levels
-lambda X: Low-level option to enable rate distortion optimization (RDO) and
directly control the HDR 6x6 compressor's lambda setting. The
higher this value, the lower the quality, but the smaller the file
size. Try 100-20000, or higher values on some images. Upconverted
SDR images can generally tolerate much higher lambda settings vs.
true HDR images.
-hdr_6x6_level X: Low-level option to set the codec to 6x6 HDR mode (same
as -hdr_6x6) and controls encoder performance vs. max quality
tradeoff. X may range from [0,12]. Default level is 2. Higher
values result in better quality but slower encoding. Values above
10 are extremely slow.
-hdr_6x6i_level X: Low-level option to set the codec to 6x6 HDR intermediate
mode (same as -hdr_6x6i) and controls encoder performance vs. max
quality tradeoff. X may range from [0,12]. Default level is 2.
-rec_2020: The input image's gamut is Rec. 2020 vs. the default Rec. 709 - for
accurate colorspace error calculations. This value will also be
written to the KTX2 file's header in the DFD.
-hdr_6x6_jnd
X, -hdr_6x6_extra_pats, -hdr_6x6_brute_force_pats,
-hdr_6x6_comp_levels X Y, or -hdr_6x6i_comp_levels X Y: Low-level
control over the encoder's configuration.
--- SDR/LDR->HDR upconversion options (only used when encoding to HDR formats
from an LDR/SDR source image):
-hdr_ldr_no_srgb_to_linear: If specified, LDR images will NOT be converted to
normalized linear light (via a sRGB->Linear conversion) during SDR->HDR
upconversion before compressing as HDR.
-hdr_ldr_upconversion_nit_multiplier X: Specify how many nits (candelas per
sq. meter) LDR/SDR images are converted to after converting to linear
light. Default is 100 nits. Note: Previous builds used 1 nit. Common
values are 80-100 nits.
--- ASTC LDR/XUASTC LDR specific options (-ldr_4x4 or -ldr_4x4i, up to 12x12):
Internally both modes (ASTC 4x4-12x12 and XUASTC 4x4-12x12) use the same
core compressor but with different outputs. All 14 standard ASTC block
sizes are supported (see the list below).
-ldr_4x4-12x12 or -astc_ldr_4x4-12x12: Enable ASTC LDR 4x4-12x12 mode
-ldr_4x4i-12x12 or -xuastc_ldr_4x4-12x12: Enable XUASTC LDR 4x4-12x12 mode
-quality X: Enables lossy weight grid DCT and sets DCT quality level [1,100]
(defaults to no DCT). Higher=better quality, but higher bitrate. Good values
to try are 30-90. Default is no weight grid DCT.
-effort X: Set encoder effort level [1,10]: Encoding speed tradeoff,
higher=slower but potentially higher overall quality. Default=3, 10=Insane.
-xuastc_arith, -xuastc_hybrid, -xuastc_zstd: Set transcoding speed vs.
compression ratio tradeoff by selecting the output profile/syntax. Default
is -xuastc_zstd (fastest, lowest ratio). ZStd is fastest/lowest ratio, arith
is slowest/highest ratio (3-15% better vs. ZStd).
-xy: Enables lossy supercompression using windowed/bounded RDO for extra
compression (default is lossless supercompression of the XUASTC texture data
unless DCT is enabled)
-xyd: Disables lossy supercompression (default, but automatically enabled
if -quality less than 100 is specified )
-xs: Force disable 2-3 subset usage in all effort levels (lower quality but
faster compression and faster transcoding to BC7 at certain block sizes)
-xp: Force disable RGB dual plane usage in all effort levels (lower quality
but faster compression and faster transcoding to BC7 at certain block sizes)
-ts: Use LDR sRGB ASTC decoding profile - the default. This parameter should
match how the developer will decode or sample the ASTC texture data. Inverse
of -tl. Same as -srgb.
-tl: Use LDR Linear ASTC decoding profile. Inverse of -ts. Same as -linear.
-weights X Y Z W: Set unsigned integer channel error weights. Defaults are
1,1,1,1. Useful to favor certain channels during compression.
-ls_min_psnr X, -ls_min_alpha_psnr X, -ls_thresh_psnr X, -ls_thresh_alpha_psnr
X, -ls_thresh_edge_psnr X, -ls_thresh_edge_alpha_psnr X: Windowed/bounded RDO
settings (Lossy supercompression must be enabled, or -xy.)
-xuastc_blurring: Experimental - enable blurred block candidates (MUCH slower
compression, higher quality).
These modes support all the standard ASTC block sizes. The larger the block
size, the lower the bitrate on disk and in memory, but the more noticeable the
artifacts. Some block sizes (4x4, 6x6, and 8x6) have specially optimized direct
transcoding paths to BC7. For faster direct BC7 transcoding at these block
sizes, disable RGB dual plane (-xp) and subset usage (-xs).
Block Size Base/Memory Size
1. 4x4 8.00 bpp
2. 5x4 6.40 bpp
3. 5x5 5.12 bpp
4. 6x5 4.27 bpp
5. 6x6 3.56 bpp
6. 8x5 3.20 bpp
7. 8x6 2.67 bpp
8. 10x5 2.56 bpp
9. 10x6 2.13 bpp
10. 8x8 2.00 bpp
11. 10x8 1.60 bpp
12. 10x10 1.28 bpp
13. 12x10 1.07 bpp
14. 12x12 0.89 bpp
--- More options:
-test: Run an automated LDR ETC1S/UASTC LDR 4x4 encoding and transcoding test.
Returns EXIT_FAILURE on any failures.
-test_hdr_4x4/-test_hdr_6x6/-test_hdr_6x6i: Run automated UASTC HDR encoding
and transcoding tests. Returns EXIT_FAILURE on any failures.
-test_xuastc: Run an automated XUASTC LDR encoding and transcoding test.
Returns EXIT_FAILURE on any failures.
-test_dir: Optional directory of test files. Defaults to "../test_files".
-y_flip: Flip input images vertically before compression
-normal_map: Tunes codec parameters for better quality on normal maps (linear
colorspace metrics, linear mipmap filtering, no selector RDO, no sRGB)
-no_alpha: Always output non-alpha basis files, even if one or more inputs has
alpha
-force_alpha: Always output alpha basis files, even if no inputs has alpha
-separate_rg_to_color_alpha: Separate input R and G channels to RGB and A (for
tangent space XY normal maps)
-swizzle rgba: Specify swizzle for the 4 input color channels using r, g, b
and a (the -separate_rg_to_color_alpha flag is equivalent to rrrg)
-renorm: Renormalize each input image before any further
processing/compression
-no_multithreading: Disable multithreading
-max_threads X: Use at most X threads total when multithreading is enabled
(this includes the main thread)
-wasi_threads: Set number of threads to use in WASI threading builds
(default=8, only used in WASI threading builds)
-no_ktx: Disable KTX writing when unpacking (faster, less output files)
-ktx_only: Only write KTX files when unpacking (faster, less output files)
-write_out: Write 3dfx OUT files when unpacking FXT1 textures
-format_only: Only unpack the specified format, by its numeric code.
-etc1_only: Only unpack to ETC1, skipping the other texture formats
during -unpack
-disable_hierarchical_endpoint_codebooks: Disable hierarchical endpoint
codebook usage, slower but higher quality on some compression levels
-compare_ssim: Compute and display SSIM of image comparison (slow)
-compare_plot: Display histogram plots in -compare mode
-bench: UASTC benchmark mode, for development only
-resample X Y: Resample all input textures to XxY pixels using a box filter
-resample_factor X: Resample all input textures by scale factor X using a box
filter
-no_sse: Forbid all SSE instruction set usage
-validate_etc1s: Validate internal ETC1S compressor's data structures during
compression (slower, intended for development).
-ktx2_animdata_duration X: Set KTX2animData duration field to integer value X
(only valid/useful for -tex_type video, default is 1)
-ktx2_animdata_timescale X: Set KTX2animData timescale field to integer value
X (only valid/useful for -tex_type video, default is 15)
-ktx2_animdata_loopcount X: Set KTX2animData loopcount field to integer value
X (only valid/useful for -tex_type video, default is 0)
-framerate X: Set framerate in .basis header to X/frames sec.
-ktx2_no_zstandard: Don't compress UASTC texture data using Zstandard -- store
it uncompressed instead.
-ktx2_zstandard_level X: Set ZStandard compression level to X (see Zstandard
documentation, default level is 6)
-tonemap_dither: Dither tonemapper's 8-bit/component output by adding a small
amount of white noise, only used with -tonemap mode
--- Mipmap Generator Options:
By default, SDR textures will be converted from sRGB to linear light before
mipmap filtering, then back to sRGB (for the RGB color channels) unless -linear
is specified. You can override this behavior with -mip_srgb/-mip_linear.
-mipmap: Generate mipmaps for each source image
-mip_srgb: Convert image to linear before filtering, then back to sRGB.
(This is set automatically by default, unless you override it.)
-mip_linear: Keep image in linear light during mipmap filtering (i.e. do not
convert to/from sRGB for filtering purposes). (This is set automatically by
default, unless you override it.)
-mip_scale X: Set mipmap filter kernel's scale, lower=sharper, higher=more
blurry, default is 1.0 (quite conservative).
-mip_filter X: Set mipmap filter kernel, default is kaiser. Supported filters:
box, tent, bell, b-spline, mitchell, blackman, lanczos3, lanczos4, lanczos6,
lanczos12, kaiser, gaussian, catmullrom, quadratic_interp, quadratic_approx,
quadratic_mix
-mip_renorm: Renormalize normal map to unit length vectors after filtering
-mip_clamp: Use clamp addressing on borders, instead of wrapping
-mip_fast: Use faster mipmap generation (resample from previous mip, not
always first/largest mip level). The default.
-mip_slow: Always resample each mipmap level starting from the largest mipmap.
Higher quality, but slower. Opposite of -mip_fast.
-mip_smallest X: Set smallest pixel dimension for generated mipmaps, default
is 1 pixel
--- Transcoding Options (used while unpacking, validating after compression):
These settings control the "decode flags" used while transcoding:
-higher_quality_transcoding: Enable higher quality, but slower, transcoding
-no_deblocking: Always disable adaptive deblocking filter on all block sizes
(XUASTC/ASTC LDR 4x4-12x12 only). By default only block sizes >8x6 are
deblocked while transcoding. (No deblocking ever occurs when transcoding to
ASTC: only when re-encoding ASTC to another format, to lower artifacts.)
-force_deblocking: Always use adaptive deblocking filter, even for block sizes
<= 8x6 (XUASTC/ASTC LDR 4x4-12x12 only)
-stronger_deblocking: Use stronger adaptive deblocking filtering (XUASTC/ASTC
LDR 4x4-12x12 only)
-no_etc1s_chroma_filtering: Disable adaptive ETC1S transcode chroma filter,
for faster transcoding to BC7.
-fast_xuastc_ldr_bc7_transcoding: Use much faster, but lower quality, XUASTC
LDR 4x4/6x6/8x6 direct BC7 transcoders (the default)
-no_fast_xuastc_ldr_bc7_transcoding: Disable much faster, but slightly lower
quality, XUASTC LDR 4x4/6x6/8x6 direct BC7 transcoders
--- Low-Level ETC1S backend endpoint/selector RDO codec options:
-no_selector_rdo: Disable backend's selector rate distortion optimizations
(slightly faster, less noisy output, but lower quality per output bit)
-selector_rdo_thresh X: Set selector RDO quality threshold, default is 1.25,
lower is higher quality but less quality per output bit (try 1.0-3.0)
-no_endpoint_rdo: Disable backend's endpoint rate distortion optimizations
(slightly faster, less noisy output, but lower quality per output bit)
-endpoint_rdo_thresh X: Set endpoint RDO quality threshold, default is 1.5,
lower is higher quality but less quality per output bit (try 1.0-3.0)
--- Set various low-level fields in the Basis file header:
-userdata0 X: Set 32-bit userdata0 field in Basis file header to X (X is a
signed 32-bit int)
-userdata1 X: Set 32-bit userdata1 field in Basis file header to X (X is a
signed 32-bit int)
--- Example LDR ETC1S/UASTC LDR 4x4 command lines:
- basisu x.png : Compress sRGB image x.png to x.ktx2 using default settings
(multiple filenames OK, use -tex_array if you want a tex array vs. multiple
output files)
- basisu -basis x.qoi : Compress sRGB image x.qoi to x.basis (supports 24-bit
or 32-bit .QOI files)
- basisu x.ktx2 : Unpack x.basis to PNG/KTX files (multiple filenames OK)
- basisu x.basis : Unpack x.basis to PNG/KTX files (multiple filenames OK)
- basisu -uastc x.png -uastc_rdo_l 2.0 -ktx2 -stats : Compress to a
UASTC .KTX2 file with RDO (rate distortion optimization) to reduce .KTX2
compressed file size
- basisu -file x.png -mipmap -y_flip : Compress a mipmapped x.ktx2 file from
an sRGB image named x.png, Y flip each source image
- basisu -validate -file x.basis : Validate x.basis (check header, check file
CRC's, attempt to transcode all slices)
- basisu -unpack -file x.basis : Validates, transcodes and unpacks x.basis to
mipmapped .KTX and RGB/A .PNG files (transcodes to all supported GPU texture
formats)
- basisu -q 255 -file x.png -mipmap -debug -stats : Compress sRGB x.png to
x.ktx2 at quality level 255 with compressor debug output/statistics
- basisu -linear -max_endpoints 16128 -max_selectors 16128 -file x.png :
Compress non-sRGB x.png to x.ktx2 using the largest supported manually
specified codebook sizes
- basisu -basis -comp_level 2 -max_selectors 8192 -max_endpoints
8192 -tex_type video -framerate 20 -multifile_printf
"x%02u.png" -multifile_first 1 -multifile_num 20 : Compress a 20 sRGB source
image video sequence (x01.png, x02.png, x03.png, etc.) to x01.basis
--- Example UASTC HDR 4x4 command lines:
- basisu x.exr : Compress a HDR .EXR (or .HDR) image to a UASTC HDR 4x4 .KTX2
file. LDR/SDR images will be upconverted to linear light HDR before
compression. See HDR upconversion options, above.
- basisu -hdr_4x4 x.exr : Compress a HDR .EXR image to a UASTC HDR 4x4 .KTX2
file.
- basisu x.hdr -uastc_level 0 : Compress a HDR .hdr image to a UASTC HDR
4x4 .KTX2 file, fastest encoding but lowest quality
- basisu -hdr x.png : Compress a LDR .PNG image to UASTC HDR 4x4 (image is
converted from sRGB to linear light first, use -hdr_ldr_no_srgb_to_linear to
disable)
- basisu x.hdr -uastc_level 3 : Compress a HDR .hdr image to UASTC HDR 4x4 at
higher quality (-uastc_level 4 is highest quality, but very slow encoding)
- basisu x.hdr -uastc_level 3 -mipmap -basis -stats -debug -debug_images :
Compress a HDR .hdr image to UASTC HDR 4x4, .basis output file, at higher
quality, generate mipmaps, output statistics and debug information, and write
tone mapped debug images
- basisu x.hdr -stats -hdr_favor_astc -hdr_uber_mode -uastc_level 4 : Highest
achievable ASTC HDR 4x4 quality (very slow encoding, BC6H quality is traded
off)
--- Example RDO ASTC/UASTC HDR 6x6 command lines:
- basisu -hdr_6x6 x.exr : Compress a HDR .EXR (or .HDR) image to a UASTC HDR
6x6 .KTX2 file. LDR/SDR images will be upconverted to linear light HDR before
compression. See HDR upconversion options, above.
- basisu -lambda 1000 -hdr_6x6 x.exr : Compress a HDR .EXR (or .HDR) image to
a UASTC HDR 6x6 .KTX2 file with rate-distortion optimization (RDO), at lambda
level 1000.
- basisu -hdr_6x6i x.exr : Compress a HDR .EXR image to a compressed
intermediate format UASTC HDR 6x6 .KTX2 file.
- basisu -lambda 1000 -hdr_6x6i x.exr : Compress a HDR .EXR image to a
compressed intermediate format UASTC HDR 6x6 .KTX2 file with rate-distortion
optimization (RDO), at lambda level 1000.
--- Example ASTC/XUASTC LDR 4x4-12x12 command lines:
- basisu -ldr_6x6i -q 75 -xuastc_arith test.png : Compress test.png to XUASTC
LDR 6x6 using weight grid DCT with setting 75 and the arith profile for
higher compression.
- basisu -ldr_4x4 test.png : Compress test.png to ASTC LDR 4x4
- basisu -mipmap -ldr_10x5i test.png : Compress test.png to XUASTC LDR 10x5,
using lossless ZStd supercompression, with mipmaps
--- ETC1S Texture Video Notes: Use -comp_level 2 or higher for better codebook
generation, specify very large codebooks using -max_endpoints
and -max_selectors, and reduce the default endpoint RDO threshold
(-endpoint_rdo_thresh) to around 1.25. Videos may have mipmaps and alpha
channels. Videos must always be played back by the transcoder in first to last
image order. Video files currently use I-Frames on the first image, and
P-Frames using conditional replenishment on subsequent frames.
--- Low-level ETC1S compression (Effort) Level (-comp_level X) Details
This setting controls the ETC1S speed vs. quality tradeoff. (Use -q to control
the quality vs. compressed size tradeoff.):
- Level 0: Fastest, but has marginal quality and can be brittle on complex
images. Avg. Y dB: 35.45
- Level 1: Hierarchical codebook searching, faster ETC1S encoding. 36.87 dB,
~1.4x slower vs. level 0. (This is the default setting.)
- Level 2: Use this or higher for video. Hierarchical codebook searching.
36.87 dB, ~1.4x slower vs. level 0. (This is the v1.12's default setting.)
- Level 3: Full codebook searching. 37.13 dB, ~1.8x slower vs. level 0.
(Equivalent to the initial release's default settings.)
- Level 4: Hierarchical codebook searching, codebook k-means iterations. 37.15
dB, ~4x slower vs. level 0
- Level 5: Full codebook searching, codebook k-means iterations. 37.41 dB,
~5.5x slower vs. level 0.
- Level 6: Full codebook searching, twice as many codebook k-means iterations,
best ETC1 endpoint opt. 37.43 dB, ~12x slower vs. level 0