Files
basis_universal/basisu_tool_help.h
2026-07-01 13:30:21 -04:00

904 lines
45 KiB
C

// Don't edit directly - see python script in cmd_help directory.
"See project and wiki at: https://github.com/BinomialLLC/basis_universal\n"
"\n"
"The default processing mode is compression of one or more .PNG/.TGA/.JPG/.QOI/\n"
".DDS/.EXR/.HDR files to a LDR or HDR .KTX2 file. Alternate modes:\n"
"\n"
" -unpack: Use transcoder to unpack a .basis/.KTX2/.DDS file to one or more .KTX,\n"
" .DDS, .PNG, .ASTC, etc. files. For a .DDS input, each layer/face/mip image is\n"
" decoded to _unpacked_rgb_/_a_/_rgba_ PNGs and transcoded to every GPU format\n"
" as single-image _transcoded_ files (BC1-7 to .DDS+.KTX, others .KTX only),\n"
" similar to unpacking a .KTX2/.basis (flat per-image output; the exact format\n"
" set differs). (-no_ktx skips the GPU files, -ktx_only skips PNGs.) DDS unpack\n"
" uses a fixed transcode-target set -- -format_only/-etc1_only are ignored for\n"
" .dds. A bare .dds with no mode is a compress SOURCE, not unpacked -- pass\n"
" -unpack to unpack it.\n"
"\n"
" -export_dds <FORMAT>: Transcode each input .ktx2 to a .DDS file (all mips,\n"
" array layers, cubemap faces). FORMAT: BC1 BC3 BC4 BC5 BC6H BC7 RGBA32. Output\n"
" is <base>_<FORMAT>.dds; -output_file/-output_path override the name/dir.\n"
"\n"
" -dds: Write a basic DX10 .DDS file directly from source image(s). Use with\n"
" -dds_format <FMT>. Honors -mipmap, -cubemap, -tex_type 2darray, -srgb/-linear,\n"
" -swizzle, -resample, etc. (the same source-prep options as compression). All\n"
" inputs form a single .dds (one per layer/face). Output is <first_input>.dds;\n"
" -output_file/-output_path override the name/dir. LDR only.\n"
" -dds_format <FMT>: Output format for -dds (defaults to BC7 if omitted). Block\n"
" compressed: BC1 BC2 BC3 BC4 BC5 BC7. Uncompressed: A8R8G8B8 A8B8G8R8 R8 R8G8\n"
" R5G6B5 A1R5G5B5 A4R4G4B4. The sRGB DXGI variant is used for BC1/BC2/BC3/BC7/\n"
" A8R8G8B8/A8B8G8R8 unless -linear is given (other formats are always UNORM). No\n"
" transfer-function conversion is applied to texel data.\n"
" -dds_bc7f / -dds_bc7e_scalar (alias -dds_bc7e): select the BC7 packer for -dds\n"
" -dds_format BC7. bc7f = built-in fast real-time packer (default); bc7e_scalar =\n"
" higher-quality, slower scalar encoder.\n"
" -dds_bc7f_level <0-2>: bc7f quality: 0=analytical, 1=partially analytical\n"
" (default), 2=non analytical (slowest/best).\n"
" -dds_bc7e_scalar_level <0-6>: bc7e_scalar quality: 0=ultrafast..6=slowest\n"
" (default 2); implies -dds_bc7e_scalar.\n"
"\n"
" -export_ktx <FORMAT>: Transcode each input .ktx2 to a compressed KTX1 (.ktx)\n"
" file (all mips, array layers, cubemap faces). FORMAT (compressed only): BC1\n"
" BC3 BC4 BC5 BC6H BC7 ETC1 ETC2 EAC_R11 EAC_RG11 PVRTC1 PVRTC2 ASTC ASTC_<WxH>\n"
" ASTC_HDR_4x4 ASTC_HDR_6x6. Output is <base>_<FORMAT>.ktx.\n"
"\n"
" -tinydds_info: Print header info (dimensions, type, mips, array slices, format)\n"
" for each input .DDS file, via the tinydds parser. Header only -- no decode.\n"
" (-info also prints DDS header info, via the dds_transcoder.)\n"
"\n"
" -ktx_info: Print KTX1 (.ktx) header fields (GL type/format/internalFormat,\n"
" dimensions, array elements, faces, mip levels) for each input file. Header\n"
" only -- no key/value or image data parsing.\n"
"\n"
" -info: Display high-level information about a .basis/.KTX2/.DDS/.KTX1 file.\n"
" Each input is detected by content, so mixed file types on one command line\n"
" are fine (a .DDS prints its header info; a .KTX1 prints its KTX header). For\n"
" a .DDS this prints the transcoder's view (closest-matching format); use\n"
" -tinydds_info for the raw DDS header (physical pixel layout).\n"
" \n"
" -validate: Validate and display information about a .basis/.KTX2/.DDS file\n"
" (decodes/transcodes every image to exercise the codecs; writes nothing).\n"
" \n"
" -compare: Compare two LDR PNG/BMP/TGA/JPG/QOI images specified with -file,\n"
" output PSNR and SSIM statistics and RGB/A delta images\n"
"\n"
" -compare_hdr: Compare two HDR .EXR/.HDR images specified with -file, output\n"
" PSNR statistics and RGB delta images\n"
"\n"
" -dump_image_stats: Print reference-free per-channel RGBA statistics (min/max/\n"
" mean/variance/std dev/unique count) for each LDR image given with -file, plus\n"
" flags for common issues (constant/dropped channel, all-opaque or all-zero\n"
" alpha, possibly-premultiplied alpha, R==G==B grayscale). LDR/8-bit only for now.\n"
" -dump_image_stats <x> <y> <w> <h>: As above, but restrict the stats to the\n"
" given rectangle (must lie fully inside the image).\n"
"\n"
" -dump_pixel <x> <y>: Print the exact RGBA value of texel (x,y) of each -file\n"
" image (LDR only). Can be combined with -dump_image_stats / -dump_block.\n"
"\n"
" -dump_block <bx> <by>: Print the 4x4 texel block at block coords (bx,by) (i.e.\n"
" source texels [bx*4..bx*4+3] x [by*4..by*4+3]) of each -file image (LDR only).\n"
" Can be combined with -dump_image_stats / -dump_pixel.\n"
"\n"
" -tonemap: Tonemap an HDR or EXR image to PNG at multiple exposures, use -file\n"
" to specify filename\n"
"\n"
" -split: Split the -file input image into split_rgb.png plus per-channel\n"
" grayscale split_R/G/B/A.png files\n"
"\n"
" -combine: Combine two -file images: RGB from the first plus the second's\n"
" green channel as alpha, written to combined.png (or -output_file)\n"
"\n"
" -extract_channel <c> <out.png> [x y w h]: Write one channel (c = r/g/b/a or\n"
" 0..3) of the -file image as a grayscale PNG. Optionally restrict to the given\n"
" rectangle (must lie fully inside the image). LDR only.\n"
"\n"
" -extract_swizzle <swizzle> <out.png> [x y w h]: Write an RGBA PNG whose R,G,B,A\n"
" come from the source channels named by <swizzle>, a list of 1..4 comma-\n"
" separated channels (each r/g/b/a or 0..3), e.g. \"0,1,2,3\" (identity),\n"
" \"2,1,0\" (swap R/B), \"a,a,a,a\" (broadcast alpha). Output channels not listed\n"
" pass through unchanged. Optional rectangle as with -extract_channel. LDR only.\n"
"\n"
" -extract_region <out.png> <x> <y> <w> <h>: Write the given rectangle of the\n"
" -file image (full RGBA) to a PNG. The rectangle must lie fully inside the\n"
" image. LDR only.\n"
"\n"
" -extract_to_linear / -extract_to_srgb: Optional transforms applied by the\n"
" -extract_* commands above: convert the output from sRGB to linear, or from\n"
" linear to sRGB. Applied to RGB only by default (alpha passes through).\n"
" -extract_xform_alpha: Also apply the -extract_to_linear/-extract_to_srgb\n"
" transform to the alpha channel (off by default).\n"
"\n"
" -text_to_png <in.txt> <out.png>: Compose a small PNG from a comma-separated\n"
" pixel text file. Line 1 is the header \"W,H,C\" (W,H in [1,1024], C channels in\n"
" [1,4]); then one pixel per line with C decimal values 0..255 in row-major\n"
" order (1=L, 2=LA, 3=RGB, 4=RGBA). Blank lines and '#' comments are ignored.\n"
" Strict: malformed values / wrong counts are a hard error with the line number.\n"
" -png_to_text <in.png> <out.txt>: Inverse of -text_to_png. Auto-detects the\n"
" minimal channel count (L/LA/RGB/RGBA) and writes the text format above.\n"
"\n"
" -peek_astc: Read an .astc file and calculate statistics (for testing/dev)\n"
"\n"
" -version or --version: Print version and exit\n"
"\n"
"--- Intro:\n"
"\n"
"This tool compresses LDR/SDR and HDR images and textures to a Basis Universal\n"
"supercompressed GPU texture, which can be written to supercompressed .basis or\n"
"standard .KTX2 files. It supports a number of SDR and HDR codecs, each with\n"
"different quality, transcoding performance, and bitrate tradeoffs. A SDR/HDR\n"
"mipmap generator is also included. This tool can also examine and\n"
"unpack .KTX2/.basis files to .PNG, .KTX (v1), .ASTC, or .DDS files using its\n"
"single source file transcoder library.\n"
"\n"
"Options may be given in either -opt or Unix-style --opt form.\n"
"\n"
"The list of supported texture/supercompressed texture codecs:\n"
" -LDR: ETC1S (SDR default), RDO UASTC LDR 4x4, ASTC or XUASTC LDR 4x4-12x12\n"
" -HDR: UASTC HDR 4x4 (HDR default), RDO ASTC HDR 6x6, UASTC HDR 6x6\n"
" \n"
"RDO=Rate-Distortion Optimization. Two key parameters (quality and effort) have\n"
"been unified across all the codecs:\n"
"\n"
"- The -quality X parameter, where X ranges from [0, 100], controls the\n"
"compression quality vs. bitrate (output file size) tradeoff for those codecs\n"
"supporting supercompression or RDO (Rate-distortion optimization). 100=max\n"
"quality, and lower levels produce smaller files with more distortion.\n"
"\n"
"- The -effort X parameter, where X ranges from [0, 10], controls the\n"
"compression speed (and max CPU usage) vs. max achievable quality tradeoff.\n"
"Low efforts result in more distortion/artifacts, but faster compression. Lower\n"
"efforts result in less utilization of the underlying GPU block format's\n"
"capabilities.\n"
"\n"
"Key Definitions: \n"
"\"Quality\" controls the explicit tradeoff between output distortion and output\n"
"file bitrate (in bits per pixel or target). At max quality (100) each\n"
"compressor will output the lowest distortion it's capable of at its currently\n"
"configured effort level.\n"
"\n"
"\"Effort\" controls how intensely a compressor uses the CPU to focus on each\n"
"block format's encoding capabilities. Low effort levels only target a set of\n"
"core or basic capabilities (specific to each output target format), while\n"
"higher effort levels allow each compressor to explore more of each target's\n"
"features (at the cost of higher CPU time). Lower effort levels result in more\n"
"brittle compression (higher distortion on tough image/texture features).\n"
"Effort=0 fastest compression, effort=10=extremely slow.\n"
"\n"
"Unless an explicit mode is specified, if one or more files have the .basis,\n"
".KTX2, or .ktx (KTX1) extension this tool defaults to unpack mode. (A .ktx is\n"
"KTX1, which can't be unpacked -- it errors with a pointer to -info/-ktx_info.\n"
"A bare .dds is treated as a compress SOURCE, not unpacked; use -unpack for it.)\n"
"\n"
"By default, the compressor assumes the input is in the sRGB colorspace (like\n"
"typical photos/albedo textures). If the input is NOT sRGB (like a normal map),\n"
"be sure to specify -linear for less artifacts. Depending on the content type,\n"
"some experimentation may be needed.\n"
"\n"
"The TinyEXR library is used to read .EXR images. Crucially, this small library\n"
"does not support all .EXR compression methods. For unsupported images, you can\n"
"use a tool like ImageMagick to convert them to uncompressed .EXR.\n"
"\n"
"For .DDS COMPRESSION SOURCE files (i.e. compressing a .dds as an input image --\n"
"this does NOT limit -unpack): Mipmapped or plain 2D textures (but not cubemaps)\n"
"are supported, and only uncompressed 32-bit RGBA/BGRA, half float RGBA, or\n"
"float RGBA .DDS files. In -tex_array mode, if a .DDS file is specified, all\n"
"source files must be in .DDS format. (To UNPACK a compressed .dds -- BC1-7,\n"
"cubemaps, arrays, etc. -- use -unpack, which has no such restrictions.)\n"
"\n"
"Filenames prefixed with a @ symbol are read as filename listing files. Listing\n"
"text files specify which actual filenames to process (one filename per line).\n"
"\n"
"--- High-Level Texture Mode (Codec) Selection:\n"
"\n"
" 1. -etc1s: Encode to supercompressed ETC1S LDR (the default for SDR/LDR\n"
" inputs). Roughly .8-2.5 bpp. Supports temporal texture supercompression\n"
" (texture video) with skip blocks (Conditional Replenishment), with global\n"
" codebooks shared across all frames.\n"
"\n"
" 2. -uastc/-uastc_ldr: UASTC LDR 4x4. Encode to UASTC LDR 4x4, a custom high\n"
" quality virtual texture format designed for fast transcoding to numerous\n"
" GPU texture formats. Roughly 5-8 bpp. Supports RDO encoding using -lambda X\n"
" option - see options below. In this mode the multi-target compressor\n"
" optimizes for a balance of transcoded ASTC 4x4 LDR and BC7 quality.\n"
"\n"
" 3. -hdr/-hdr_4x4: UASTC HDR 4x4. Encode input as UASTC HDR 4x4 (the default if\n"
" any input file has the .EXR or .HDR extension, or if any .DDS file is HDR).\n"
" Output is standard, but constrained, ASTC HDR 4x4. Roughly 5-8 bpp. In this\n"
" mode the dual-target compressor optimizes for a balance of transcoded ASTC\n"
" 4x4 HDR and BC6H quality.\n"
"\n"
" 4. -hdr_6x6: ASTC HDR 6x6. Encode input as RDO or highest quality standard\n"
" ASTC HDR 6x6. Use -quality (preferred) or -lambda X (low-level, try\n"
" 100-20000 or higher) option to enable RDO ASTC HDR 6x6, where x controls\n"
" the quality vs. size tradeoff. Roughly 1.2-3.2 bpp.\n"
"\n"
" 5. -hdr_6x6i: UASTC HDR 6x6. Encode input as supercompressed UASTC HDR 6x6\n"
" intermediate. Use -quality (preferred) or -lambda X (low-level, try\n"
" 100-20000 or higher) option to enable RDO UASTC HDR 6x6, where x controls\n"
" the quality vs. size tradeoff. Roughly 1-3.2 bpp.\n"
"\n"
" 6. XUASTC LDR 4x4-12x12: -ldr_4x4i, -ldr_5x4i, -ldr_5x5i, -ldr_6x5i,\n"
" -ldr_6x6i, -ldr_8x5i, -ldr_8x6i, -ldr_10x5i, -ldr_10x6i, -ldr_8x8i,\n"
" -ldr_10x8i, -ldr_10x10i, -ldr_12x10i, -ldr_12x12i:\n"
" Compress to supercompressed XUASTC LDR/SDR using the specific\n"
" ASTC block size. See additional ASTC/XUASTC LDR specific options\n"
" (-effort, -quality, -xy, -ts, -tl, etc.) below. Roughly .3-5.7 bpp\n"
"\n"
" 7. ASTC LDR 4x4-12x12: -ldr_4x4, -ldr_5x4, -ldr_5x5, -ldr_6x5, -ldr_6x6,\n"
" -ldr_8x5, -ldr_8x6, -ldr_10x5, -ldr_10x6, -ldr_8x8, -ldr_10x8,\n"
" -ldr_10x10, -ldr_12x10, -ldr_12x12:\n"
" Compress to standard or ZStd supercompressed ASTC LDR/SDR using\n"
" the specific ASTC block size. See additional ASTC LDR specific\n"
" options (-effort, -quality, -xy, -ts, -tl, etc.) below. .89-8 bpp before\n"
" ZStd compression.\n"
"\n"
" 8. XUBC7: -xubc7. Lossless or lossy supercompressed BC7. Options:\n"
" Use -quality [1,100], -effort [0,10], and -xubc7_rdo_level [0,100]\n"
" (0=no RDO - default, 100=aggressive RDO)\n"
" -xubc7_num_stripes [1,16]: # of encode stripes (default 8; more=faster\n"
" decode/encode parallelism, slightly larger file)\n"
" -xubc7_bc7f / -xubc7_bc7e_scalar: select the BC7 base encoder (default\n"
" bc7f - fast; bc7e_scalar - bc7e.ispc-based: slower, higher quality)\n"
" -xubc7_bc7e_scalar_level [0,6]: use bc7e_scalar+set quality level (def=2)\n"
"\n"
"--- Tool Options:\n"
"\n"
" -ktx2: Write .KTX2 files (the default). By default, UASTC LDR/HDR 4x4 and ASTC\n"
" 6x6 files will be compressed using Zstandard unless -ktx2_no_zstandard is\n"
" specified.\n"
"\n"
" -basis: Write .basis files instead of .KTX2 files.\n"
"\n"
" -file filename.png/tga/jpg/qoi/exr/hdr: Input image filename, multiple images\n"
" are OK, use -file X for each input filename (prefixing input filenames\n"
" with -file is optional)\n"
"\n"
" -alpha_file filename.png/tga/jpg/qoi: Input alpha image filename, multiple\n"
" images are OK, use -file X for each input filename (must be paired\n"
" with -file), images converted to REC709 grayscale and used as input alpha\n"
"\n"
" -quiet or -no_status_output: Disable compressor's status output to stdout\n"
"\n"
" -output_file filename: Output .basis/.KTX2 filename\n"
"\n"
" -output_path: Output .basis/.KTX2 files to specified directory.\n"
"\n"
" -debug: Enable codec debug print to stdout (slightly slower).\n"
"\n"
" -verbose: Shorthand for -debug -stats (debug output plus quality metrics).\n"
"\n"
" -debug_images: Enable codec debug images (much slower).\n"
"\n"
" -stats: Compute and display image quality metrics (slightly to much slower).\n"
"\n"
" -no_stats: Disable image quality metrics (overrides -verbose/-csv_file).\n"
"\n"
" -validate_output: Validate output texture data after compression.\n"
"\n"
" -csv_file filename.csv: Log image quality metrics to a CSV file (also enables\n"
" -stats computation).\n"
"\n"
" -individual: Process input images individually and output\n"
" multiple .basis/.KTX2 files (not as a texture array - this is now the default\n"
" as of v1.16)\n"
"\n"
" -parallel: Compress multiple textures simultaneously (one per thread), instead\n"
" of one at a time. Compatible with OpenCL mode. This is much faster, but in\n"
" OpenCL mode the driver is pushed harder, and the CLI output will be jumbled.\n"
"\n"
" -linear: Use linear colorspace metrics (instead of the default sRGB or scaled\n"
" RGB for HDR), write linear transfer function setting to KTX2/basis file, and\n"
" by default linear (not sRGB) mipmap filtering (unless overridden). Same\n"
" as -tl.\n"
"\n"
" -srgb: Use sRGB colorspace metrics, write sRGB transfer function setting to\n"
" KTX2/basis file, and by default use sRGB mipmap filtering (unless\n"
" overridden). Same as -ts.\n"
"\n"
" -tex_type <2d, 2darray, 3d, video, cubemap>: Set Basis file header's texture\n"
" type field. Cubemap arrays require multiples of 6 images, in X+, X-, Y+, Y-,\n"
" Z+, Z- order, each image must be the same resolutions. 2d=arbitrary 2D\n"
" images, 2darray=2D array, 3D=volume texture slices, video=video frames,\n"
" cubemap=array of faces. For 2darray/3d/cubemaps/video, each source image's\n"
" dimensions and # of mipmap levels must be the same. For video, the .basis\n"
" file will be written with the first frame being an I-Frame, and subsequent\n"
" frames being P-Frames (using conditional replenishment). Playback must always\n"
" occur in order from first to last image.\n"
"\n"
" -cubemap: same as -tex_type cubemap\n"
"\n"
" -tex_array: Process input images as a single texture array and write a\n"
" single .basis/.KTX2 file (the former default before v1.16)\n"
"\n"
" -fuzz_testing: Use with -validate: Disables CRC16 validation of file contents\n"
" before transcoding\n"
"\n"
" -multifile_printf: printf() format string to use to compose multiple filenames\n"
"\n"
" -multifile_first: The index of the first file to process, default is 0 (must\n"
" specify -multifile_printf and -multifile_num)\n"
"\n"
" -multifile_num: The total number of files to process.\n"
"\n"
" -opencl: Enable OpenCL usage (currently only accelerates ETC1S encoding)\n"
"\n"
" -opencl_serialize: Serialize all calls to the OpenCL driver (to work around\n"
" buggy drivers, only useful with -parallel)\n"
"\n"
"--- ETC1S specific options (-etc1s - the LDR/SDR default):\n"
"\n"
" -quality X and -effort X: Set quality (1-100) and effort (0-10) levels\n"
"\n"
" -q X: Low-level ETC1S quality level, 1-255, default is 128, lower=better\n"
" compression/lower quality/faster, higher=less compression/higher\n"
" quality/slower, default is 128. For even higher quality,\n"
" use -max_endpoints/-max_selectors. (-quality is preferred.)\n"
"\n"
" -comp_level X: Low-level ETC1S speed vs. quality tradeoff. Range is 0-6,\n"
" default is 1. Higher values=MUCH slower, but slightly higher quality. Higher\n"
" levels intended for videos. (-effort is preferred.)\n"
"\n"
" -max_endpoints X: ETC1S: Manually set the max number of color endpoint\n"
" clusters from 1-16128, use instead of -q\n"
"\n"
" -max_selectors X: ETC1S: Manually set the max number of color selector\n"
" clusters from 1-16128, use instead of -q\n"
"\n"
"--- UASTC LDR/HDR 4x4 specific options (-uastc or -uastc_ldr):\n"
"\n"
" -quality X and -effort X: Set quality (1-100) and effort (0-10) levels\n"
"\n"
" -uastc, -uastc_ldr or -uastc_ldr_4x4: Enable UASTC LDR 4x4 texture mode,\n"
" instead of the default ETC1S mode. Significantly higher texture quality, but\n"
" much larger (~8bpp) files. (Note that UASTC LDR 4x4 .basis files must be\n"
" losslessly compressed by the user.)\n"
"\n"
" -uastc_level: Set low-level UASTC LDR/HDR 4x4 encoding effort level. LDR Range\n"
" is [0,4], default is 2, higher=slower but higher quality. 0=fastest/lowest\n"
" quality, 3=slowest practical option, 4=impractically slow/highest achievable\n"
" quality. UASTC HDR 4x4 range is [0,4]: higher=slower, but higher quality. HDR\n"
" 4x4 default level=1.\n"
"\n"
" -uastc_rdo_l X: Enable UASTC LDR 4x4 RDO post-processing and set the low-level\n"
" UASTC LDR 4x4 RDO quality scalar (lambda) to X. Lower values=higher\n"
" quality/larger LZ compressed files, higher values=lower quality/smaller LZ\n"
" compressed files. Good range to try is [.25-10]. Note: Previous versons used\n"
" the -uastc_rdo_q option, which was removed because the RDO algorithm was\n"
" changed.\n"
"\n"
" -uastc_rdo_d X: Set UASTC LDR 4x4 RDO dictionary size in bytes. Default is\n"
" 4096, max is 65536. Lower values=faster, but less compression.\n"
"\n"
" -uastc_rdo_b X: Set UASTC LDR 4x4 RDO max smooth block error scale. Range is\n"
" [1,300]. Default is 10.0, 1.0=disabled. Larger values suppress more artifacts\n"
" (and allocate more bits) on smooth blocks.\n"
"\n"
" -uastc_rdo_s X: Set UASTC LDR 4x4 RDO max smooth block standard deviation.\n"
" Range is [.01,65536]. Default is 18.0. Larger values expand the range of\n"
" blocks considered smooth.\n"
"\n"
" -uastc_rdo_f: Don't favor simpler UASTC LDR 4x4 modes in RDO mode.\n"
"\n"
" -uastc_rdo_m: Disable RDO multithreading (slightly higher compression,\n"
" deterministic).\n"
"\n"
"--- UASTC HDR 4x4 specific options (-hdr or -hdr_4x4 - the HDR default):\n"
"\n"
" -hdr, -hdr_4x4, or -uastc_hdr_4x4: Enable UASTC HDR 4x4 mode\n"
"\n"
" -quality X and -effort X: Set quality (1-100) and effort (0-10) levels\n"
"\n"
" -uastc_level X: Sets the low-level UASTC HDR 4x4 compressor's effort level.\n"
" Valid range is [0,4]: higher=slower but higher quality. HDR\n"
" default=1. Level 0=fastest/lowest quality, 3=highest practical\n"
" setting, 4=exhaustive\n"
"\n"
" -hdr_uber_mode: Allow the UASTC HDR 4x4 encoder to try varying the CEM 11\n"
" selectors more for slightly higher quality (slower). This may negatively\n"
" impact BC6H quality, however.\n"
"\n"
" -hdr_ultra_quant: UASTC HDR 4x4: Try to find better quantized CEM 7/11\n"
" endpoint values (slower).\n"
"\n"
" -hdr_favor_astc: UASTC HDR 4x4: By default the dual-target UASTC HDR 4x4\n"
" encoder tries to strike a balance or even slightly favor BC6H quality. If\n"
" this option is specified, ASTC HDR 4x4 quality is favored instead.\n"
"\n"
"--- ASTC/UASTC HDR 6x6 specific options (-hdr_6x6 or -hdr_6x6i):\n"
"\n"
"Internally both modes use the same compressor which can generate either\n"
"standard ASTC HDR 6x6 (with optional RDO) or UASTC HDR 6x6 (supercompressed\n"
"with a custom format).\n"
"\n"
" -hdr_6x6 or -astc_hdr_6x6: Enable RDO ASTC HDR 6x6 mode\n"
"\n"
" -hdr_6x6i or -uastc_hdr_6x6: Enable UASTC HDR 6x6 mode\n"
"\n"
" -quality X and -effort X: Set quality (1-100) and effort (0-10) levels\n"
"\n"
" -lambda X: Low-level option to enable rate distortion optimization (RDO) and\n"
" directly control the HDR 6x6 compressor's lambda setting. The\n"
" higher this value, the lower the quality, but the smaller the file\n"
" size. Try 100-20000, or higher values on some images. Upconverted\n"
" SDR images can generally tolerate much higher lambda settings vs.\n"
" true HDR images.\n"
"\n"
" -hdr_6x6_level X: Low-level option to set the codec to 6x6 HDR mode (same\n"
" as -hdr_6x6) and controls encoder performance vs. max quality\n"
" tradeoff. X may range from [0,12]. Default level is 2. Higher\n"
" values result in better quality but slower encoding. Values above\n"
" 10 are extremely slow.\n"
"\n"
" -hdr_6x6i_level X: Low-level option to set the codec to 6x6 HDR intermediate\n"
" mode (same as -hdr_6x6i) and controls encoder performance vs. max\n"
" quality tradeoff. X may range from [0,12]. Default level is 2.\n"
"\n"
" -rec_2020: The input image's gamut is Rec. 2020 vs. the default Rec. 709 - for\n"
" accurate colorspace error calculations. This value will also be\n"
" written to the KTX2 file's header in the DFD.\n"
"\n"
" -hdr_6x6_jnd X, -hdr_6x6_extra_pats, -hdr_6x6_brute_force_pats,\n"
" -hdr_6x6_comp_levels X Y, or -hdr_6x6i_comp_levels X Y: Low-level\n"
" control over the encoder's configuration.\n"
"\n"
" -hdr_6x6i_16_compatibility: Write basisu v1.6 UASTC HDR 6x6i files (default)\n"
"\n"
" -hdr_6x6i_20_compatibility: Write basisu v2.0 UASTC HDR 6x6i files (slightly\n"
" lower bitrate, only compatible with v2.0+ transcoders however.)\n"
"\n"
"--- SDR/LDR->HDR upconversion options (only used when encoding to HDR formats\n"
"from an LDR/SDR source image):\n"
"\n"
" -hdr_ldr_no_srgb_to_linear: If specified, LDR images will NOT be converted to\n"
" normalized linear light (via a sRGB->Linear conversion) during SDR->HDR\n"
" upconversion before compressing as HDR.\n"
"\n"
" -hdr_ldr_upconversion_nit_multiplier X: Specify how many nits (candelas per\n"
" sq. meter) LDR/SDR images are converted to after converting to linear\n"
" light. Default is 100 nits. Note: Previous builds used 1 nit. Common\n"
" values are 80-100 nits.\n"
"\n"
" -hdr_ldr_upconversion_black_bias X: Black bias [0,1] added during SDR->HDR\n"
" upconversion (default 0).\n"
"\n"
"--- ASTC LDR/XUASTC LDR specific options (-ldr_4x4 or -ldr_4x4i, up to 12x12):\n"
"\n"
"Internally both modes (ASTC 4x4-12x12 and XUASTC 4x4-12x12) use the same\n"
"core compressor but with different outputs. All 14 standard ASTC block \n"
"sizes are supported (see the list below).\n"
"\n"
" -ldr_4x4-12x12 or -astc_ldr_4x4-12x12: Enable ASTC LDR 4x4-12x12 mode\n"
"\n"
" -ldr_4x4i-12x12 or -xuastc_ldr_4x4-12x12: Enable XUASTC LDR 4x4-12x12 mode\n"
"\n"
" -quality X: Enables lossy weight grid DCT and sets DCT quality level [1,100]\n"
" (defaults to no DCT). Higher=better quality, but higher bitrate. Good values\n"
" to try are 30-90. Default is no weight grid DCT.\n"
"\n"
" -effort X: Set encoder effort level [0,10]: Encoding speed tradeoff, \n"
" higher=slower but potentially higher overall quality. Default=3, 10=Insane.\n"
" \n"
" -xuastc_arith, -xuastc_hybrid, -xuastc_zstd: Set transcoding speed vs.\n"
" compression ratio tradeoff by selecting the output profile/syntax. Default\n"
" is -xuastc_zstd (fastest, lowest ratio). ZStd is fastest/lowest ratio, arith\n"
" is slowest/highest ratio (3-15% better vs. ZStd).\n"
"\n"
" -xy: Enables lossy supercompression using windowed/bounded RDO for extra\n"
" compression (default is lossless supercompression of the XUASTC texture data\n"
" unless DCT is enabled)\n"
"\n"
" -xyd: Disables lossy supercompression (default, but automatically enabled\n"
" if -quality less than 100 is specified )\n"
"\n"
" -xs: Force disable 2-3 subset usage in all effort levels (lower quality but\n"
" faster compression and faster transcoding to BC7 at certain block sizes)\n"
"\n"
" -xp: Force disable RGB dual plane usage in all effort levels (lower quality\n"
" but faster compression and faster transcoding to BC7 at certain block sizes)\n"
"\n"
" -xsu, -xpu: Inverses of -xs/-xp - force-enable 2-3 subset usage / RGB dual\n"
" plane, respectively.\n"
"\n"
" -ts: Use LDR sRGB ASTC decoding profile - the default. This parameter should\n"
" match how the developer will decode or sample the ASTC texture data. Inverse\n"
" of -tl. Same as -srgb.\n"
"\n"
" -tl: Use LDR Linear ASTC decoding profile. Inverse of -ts. Same as -linear.\n"
"\n"
" -weights X Y Z W: Set unsigned integer channel error weights. Default is\n"
" 9,11,1,11 (sRGB); -linear or -normal_map use 1,1,1,1. Useful to favor\n"
" certain channels during compression.\n"
"\n"
" -ls_min_psnr X, -ls_min_alpha_psnr X, -ls_thresh_psnr X, -ls_thresh_alpha_psnr\n"
" X, -ls_thresh_edge_psnr X, -ls_thresh_edge_alpha_psnr X: Windowed/bounded RDO\n"
" settings (Lossy supercompression must be enabled, or -xy.)\n"
"\n"
" -xuastc_blurring: Experimental - enable blurred block candidates (MUCH slower\n"
" compression, higher quality).\n"
"\n"
" -xuastc_sharpen X: Enable sharpening, set amount [0,10] (0 disables; higher\n"
" = sharper, but more likely to add artifacts). Off by default; default amount\n"
" is 2.0. -xuastc_no_sharpen disables.\n"
"\n"
" -xuastc_heavy_subset_usage, -xuastc_no_heavy_subset_usage: Enable/disable\n"
" heavier 2-3 subset usage (higher quality, slower; disabled by default).\n"
"\n"
"Encode-time deblocking (XUASTC LDR only): control deblocking awareness (SCD)\n"
"and/or the deblocking filter applied during compression. Default is\n"
"-xuastc_deblocking_largest. Each flag also has a -xuastc_ldr_* alias, e.g.\n"
"-xuastc_ldr_deblocking_all.\n"
"\n"
" -xuastc_no_deblocking: Disable both SCD and filtering.\n"
"\n"
" -xuastc_deblocking_largest: Use SCD and filtering only on the largest block\n"
" sizes (the codec default).\n"
"\n"
" -xuastc_deblocking_all: Use SCD and filtering on all block sizes.\n"
"\n"
" -xuastc_deblocking_scd_no_filtering: Use SCD only, no filtering.\n"
"\n"
" -xuastc_deblocking_no_scd_filtering_largest: No SCD, filter largest blocks.\n"
"\n"
" -xuastc_deblocking_no_scd_filtering_all: No SCD, filter all block sizes.\n"
"\n"
" -xuastc_deblocking_num_passes X: Set number of deblocking filter passes\n"
" [2,256].\n"
"\n"
"Internal ASTC encoder selection (advanced/experimental). The astcenc-based\n"
"options (-xuastc_use_astcenc, -xuastc_merge_astcenc, -xuastc_merge_all) require\n"
"building with BASISU_SUPPORT_ASTCENC=1:\n"
"\n"
" -xuastc_use_auto_comp: Auto-pick the ASTC encoder by effort level (default).\n"
"\n"
" -xuastc_use_basisu: Use the built-in basisu ASTC encoder.\n"
"\n"
" -xuastc_use_astcf: Use the astcf ASTC encoder.\n"
"\n"
" -xuastc_use_astcenc: Use the astcenc ASTC encoder.\n"
"\n"
" -xuastc_merge_astcf: Try basisu + astcf, keep the best result per block.\n"
"\n"
" -xuastc_merge_astcenc: Try basisu + astcenc, keep the best result per block.\n"
"\n"
" -xuastc_merge_all: Try all available encoders, keep the best result per block.\n"
"\n"
"These modes support all the standard ASTC block sizes. The larger the block\n"
"size, the lower the bitrate on disk and in memory, but the more noticeable the\n"
"artifacts. Some block sizes (4x4, 6x6, and 8x6) have specially optimized direct\n"
"transcoding paths to BC7. For faster direct BC7 transcoding at these block\n"
"sizes, disable RGB dual plane (-xp) and subset usage (-xs).\n"
"\n"
" Block Size Base/Memory Size\n"
" 1. 4x4 8.00 bpp\n"
" 2. 5x4 6.40 bpp\n"
" 3. 5x5 5.12 bpp\n"
" 4. 6x5 4.27 bpp\n"
" 5. 6x6 3.56 bpp\n"
" 6. 8x5 3.20 bpp\n"
" 7. 8x6 2.67 bpp\n"
" 8. 10x5 2.56 bpp\n"
" 9. 10x6 2.13 bpp\n"
" 10. 8x8 2.00 bpp\n"
" 11. 10x8 1.60 bpp\n"
" 12. 10x10 1.28 bpp\n"
" 13. 12x10 1.07 bpp\n"
" 14. 12x12 0.89 bpp\n"
"\n"
"--- More options:\n"
"\n"
" -test: Run an automated LDR ETC1S/UASTC LDR 4x4 encoding and transcoding test.\n"
" Returns EXIT_FAILURE on any failures.\n"
"\n"
" -test_hdr_4x4/-test_hdr_6x6/-test_hdr_6x6i: Run automated UASTC HDR encoding\n"
" and transcoding tests. Returns EXIT_FAILURE on any failures.\n"
"\n"
" -test_xuastc: Run an automated XUASTC LDR encoding and transcoding test.\n"
" Returns EXIT_FAILURE on any failures.\n"
"\n"
" -test_codecs [codec]: Sweep all LDR+HDR codecs across quality 10/25/50/75/100\n"
" and effort 0/3/6, comparing size and RGB/RGBA (LDR) or RGB (HDR) PSNRs vs the\n"
" golden table in basisu_tool_test_codecs.inl. Optional codec name filter, e.g.\n"
" -test_codecs ETC1S | XUASTC | ASTC | XUBC7 | HDR. Defaults test dir to\n"
" \"test_files\". Returns EXIT_FAILURE on any failures.\n"
"\n"
" -test_codecs_gen [outfile.inl] [codec]: (Re)generate the golden table for\n"
" -test_codecs by running the same sweep and writing the measured results.\n"
" Defaults to basisu_tool_test_codecs.inl. Use after a codec changes.\n"
"\n"
" -test_dir: Optional directory of test files. Defaults to \"../test_files\".\n"
"\n"
" -y_flip: Flip input images vertically before compression\n"
"\n"
" -normal_map: Tunes codec parameters for better quality on normal maps (linear\n"
" colorspace metrics, linear mipmap filtering, no selector RDO, no sRGB)\n"
"\n"
" -photo: Tune for photographic content (the codec defaults): sRGB metrics,\n"
" endpoint+selector RDO on, sRGB channel weights, sharpening off, deblock\n"
" largest blocks. Opposite of -normal_map/-texture.\n"
"\n"
" -no_alpha: Always output non-alpha basis files, even if one or more inputs has\n"
" alpha\n"
"\n"
" -force_alpha: Always output alpha basis files, even if no inputs has alpha\n"
"\n"
" -separate_rg_to_color_alpha: Separate input R and G channels to RGB and A (for\n"
" tangent space XY normal maps)\n"
"\n"
" -swizzle rgba: Specify swizzle for the 4 input color channels using r, g, b\n"
" and a (the -separate_rg_to_color_alpha flag is equivalent to rrrg)\n"
"\n"
" -renorm: Renormalize each input image before any further\n"
" processing/compression\n"
"\n"
" -no_multithreading: Disable multithreading\n"
"\n"
" -max_threads X: Use at most X threads total when multithreading is enabled\n"
" (this includes the main thread)\n"
"\n"
" -wasi_threads: Set number of threads to use in WASI threading builds\n"
" (default=8, only used in WASI threading builds)\n"
"\n"
" -no_ktx (alias -no_dds): When unpacking, skip the transcoded GPU files (the\n"
" .ktx, and .dds for BC1-7) and write only the decoded PNGs (faster, fewer\n"
" files). The two names are identical -- both gate the same .ktx+.dds output.\n"
"\n"
" -ktx_only (alias -dds_only): When unpacking, write only the transcoded GPU\n"
" files (.ktx, plus .dds for BC1-7) and skip the decoded PNGs. Note not every\n"
" format yields a .dds -- only BC1-7 do; the rest are .ktx-only.\n"
"\n"
" -write_out: Write 3dfx OUT files when unpacking FXT1 textures\n"
"\n"
" -format_only: Only unpack the specified format, by its numeric code.\n"
"\n"
" -etc1_only: Only unpack to ETC1, skipping the other texture formats\n"
" during -unpack\n"
"\n"
" -disable_hierarchical_endpoint_codebooks: Disable hierarchical endpoint\n"
" codebook usage, slower but higher quality on some compression levels\n"
"\n"
" -compare_ssim: Compute and display SSIM of image comparison (slow)\n"
"\n"
" -compare_plot: Display histogram plots in -compare mode\n"
"\n"
" -bench: UASTC benchmark mode, for development only\n"
"\n"
" -resample X Y: Resample all input textures to XxY pixels using a box filter\n"
"\n"
" -resample_factor X: Resample all input textures by scale factor X using a box\n"
" filter\n"
"\n"
" -no_sse: Forbid all SSE instruction set usage\n"
"\n"
" -validate_etc1s: Validate internal ETC1S compressor's data structures during\n"
" compression (slower, intended for development).\n"
"\n"
" -ktx2_animdata_duration X: Set KTX2animData duration field to integer value X\n"
" (only valid/useful for -tex_type video, default is 1)\n"
"\n"
" -ktx2_animdata_timescale X: Set KTX2animData timescale field to integer value\n"
" X (only valid/useful for -tex_type video, default is 15)\n"
"\n"
" -ktx2_animdata_loopcount X: Set KTX2animData loopcount field to integer value\n"
" X (only valid/useful for -tex_type video, default is 0)\n"
"\n"
" -framerate X: Set framerate in .basis header to X/frames sec.\n"
"\n"
" -ktx2_no_zstandard: Don't compress UASTC texture data using Zstandard -- store\n"
" it uncompressed instead.\n"
"\n"
" -ktx2_zstandard_level X: Set ZStandard compression level to X (see Zstandard\n"
" documentation, default level is 6)\n"
"\n"
" -tonemap_dither: Dither tonemapper's 8-bit/component output by adding a small\n"
" amount of white noise, only used with -tonemap mode\n"
"\n"
"--- Mipmap Generator Options:\n"
"\n"
"By default, SDR textures will be converted from sRGB to linear light before\n"
"mipmap filtering, then back to sRGB (for the RGB color channels) unless -linear\n"
"is specified. You can override this behavior with -mip_srgb/-mip_linear.\n"
"\n"
" -mipmap: Generate mipmaps for each source image\n"
"\n"
" -mip_srgb: Convert image to linear before filtering, then back to sRGB.\n"
" (This is set automatically by default, unless you override it.)\n"
"\n"
" -mip_linear: Keep image in linear light during mipmap filtering (i.e. do not\n"
" convert to/from sRGB for filtering purposes). (This is set automatically by\n"
" default, unless you override it.)\n"
"\n"
" -mip_scale X: Set mipmap filter kernel's scale, lower=sharper, higher=more\n"
" blurry, default is 1.0 (quite conservative).\n"
"\n"
" -mip_filter X: Set mipmap filter kernel, default is kaiser. Supported filters:\n"
" box, tent, bell, b-spline, mitchell, blackman, lanczos3, lanczos4, lanczos6,\n"
" lanczos12, kaiser, gaussian, catmullrom, quadratic_interp, quadratic_approx,\n"
" quadratic_mix\n"
"\n"
" -mip_renorm: Renormalize normal map to unit length vectors after filtering\n"
"\n"
" -mip_clamp: Use clamp addressing on borders, instead of wrapping\n"
"\n"
" -mip_fast: Use faster mipmap generation (resample from previous mip, not\n"
" always first/largest mip level). The default.\n"
"\n"
" -mip_slow: Always resample each mipmap level starting from the largest mipmap.\n"
" Higher quality, but slower. Opposite of -mip_fast. \n"
"\n"
" -mip_smallest X: Set smallest pixel dimension for generated mipmaps, default\n"
" is 1 pixel \n"
"\n"
"--- Transcoding Options (used while unpacking, validating after compression):\n"
"\n"
"These settings control the \"decode flags\" used while transcoding:\n"
"\n"
" -higher_quality_transcoding: Enable higher quality, but slower, transcoding\n"
"\n"
" -transcode_no_deblocking: Always disable deblocking filter on all block\n"
" sizes (XUASTC/ASTC LDR 4x4-12x12 only). Alias:\n"
" -transcode_disable_deblocking. By default only sizes >= 10x8 are deblocked\n"
" while transcoding. (No CPU deblocking ever occurs when transcoding to ASTC:\n"
" only when transcoding ASTC to another formats.)\n"
"\n"
" -transcode_force_deblocking: Always use deblocking filter, even for block\n"
" sizes smaller than 10x8 (XUASTC/ASTC LDR 4x4-12x12 only).\n"
"\n"
" -no_etc1s_chroma_filtering: Disable adaptive ETC1S transcode chroma filter,\n"
" for faster transcoding to BC7.\n"
"\n"
" -fast_xuastc_ldr_bc7_transcoding: Use much faster, but lower quality, XUASTC\n"
" LDR 4x4/6x6/8x6 direct BC7 transcoders (the default)\n"
"\n"
" -no_fast_xuastc_ldr_bc7_transcoding: Disable much faster, but slightly lower\n"
" quality, XUASTC LDR 4x4/6x6/8x6 direct BC7 transcoders\n"
"\n"
"--- Low-Level ETC1S backend endpoint/selector RDO codec options:\n"
"\n"
" -no_selector_rdo: Disable backend's selector rate distortion optimizations\n"
" (slightly faster, less noisy output, but lower quality per output bit)\n"
"\n"
" -selector_rdo_thresh X: Set selector RDO quality threshold, default is 1.25,\n"
" lower is higher quality but less quality per output bit (try 1.0-3.0)\n"
"\n"
" -no_endpoint_rdo: Disable backend's endpoint rate distortion optimizations\n"
" (slightly faster, less noisy output, but lower quality per output bit)\n"
"\n"
" -endpoint_rdo_thresh X: Set endpoint RDO quality threshold, default is 1.5,\n"
" lower is higher quality but less quality per output bit (try 1.0-3.0)\n"
"\n"
"--- Set various low-level fields in the Basis file header:\n"
"\n"
" -userdata0 X: Set 32-bit userdata0 field in Basis file header to X (X is a\n"
" signed 32-bit int)\n"
"\n"
" -userdata1 X: Set 32-bit userdata1 field in Basis file header to X (X is a\n"
" signed 32-bit int)\n"
"\n"
"--- Example LDR ETC1S/UASTC LDR 4x4 command lines:\n"
"\n"
" - basisu x.png : Compress sRGB image x.png to x.ktx2 using default settings\n"
" (multiple filenames OK, use -tex_array if you want a tex array vs. multiple\n"
" output files)\n"
"\n"
" - basisu -basis x.qoi : Compress sRGB image x.qoi to x.basis (supports 24-bit\n"
" or 32-bit .QOI files)\n"
"\n"
" - basisu x.ktx2 : Unpack x.ktx2 to PNG/KTX files (multiple filenames OK)\n"
"\n"
" - basisu x.basis : Unpack x.basis to PNG/KTX files (multiple filenames OK)\n"
"\n"
" - basisu -uastc x.png -uastc_rdo_l 2.0 -ktx2 -stats : Compress to a\n"
" UASTC .KTX2 file with RDO (rate distortion optimization) to reduce .KTX2\n"
" compressed file size\n"
"\n"
" - basisu -file x.png -mipmap -y_flip : Compress a mipmapped x.ktx2 file from\n"
" an sRGB image named x.png, Y flip each source image\n"
"\n"
" - basisu -validate -file x.basis : Validate x.basis (check header, check file\n"
" CRC's, attempt to transcode all slices)\n"
"\n"
" - basisu -unpack -file x.basis : Validates, transcodes and unpacks x.basis to\n"
" mipmapped .KTX and RGB/A .PNG files (transcodes to all supported GPU texture\n"
" formats)\n"
"\n"
" - basisu -q 255 -file x.png -mipmap -debug -stats : Compress sRGB x.png to\n"
" x.ktx2 at quality level 255 with compressor debug output/statistics\n"
"\n"
" - basisu -linear -max_endpoints 16128 -max_selectors 16128 -file x.png :\n"
" Compress non-sRGB x.png to x.ktx2 using the largest supported manually\n"
" specified codebook sizes\n"
"\n"
" - basisu -basis -comp_level 2 -max_selectors 8192 -max_endpoints\n"
" 8192 -tex_type video -framerate 20 -multifile_printf\n"
" \"x%02u.png\" -multifile_first 1 -multifile_num 20 : Compress a 20 sRGB source\n"
" image video sequence (x01.png, x02.png, x03.png, etc.) to x01.basis\n"
"\n"
"--- Example UASTC HDR 4x4 command lines:\n"
"\n"
" - basisu x.exr : Compress a HDR .EXR (or .HDR) image to a UASTC HDR 4x4 .KTX2\n"
" file. LDR/SDR images will be upconverted to linear light HDR before\n"
" compression. See HDR upconversion options, above.\n"
"\n"
" - basisu -hdr_4x4 x.exr : Compress a HDR .EXR image to a UASTC HDR 4x4 .KTX2\n"
" file.\n"
"\n"
" - basisu x.hdr -uastc_level 0 : Compress a HDR .hdr image to a UASTC HDR\n"
" 4x4 .KTX2 file, fastest encoding but lowest quality\n"
"\n"
" - basisu -hdr x.png : Compress a LDR .PNG image to UASTC HDR 4x4 (image is\n"
" converted from sRGB to linear light first, use -hdr_ldr_no_srgb_to_linear to\n"
" disable)\n"
"\n"
" - basisu x.hdr -uastc_level 3 : Compress a HDR .hdr image to UASTC HDR 4x4 at\n"
" higher quality (-uastc_level 4 is highest quality, but very slow encoding)\n"
"\n"
" - basisu x.hdr -uastc_level 3 -mipmap -basis -stats -debug -debug_images :\n"
" Compress a HDR .hdr image to UASTC HDR 4x4, .basis output file, at higher\n"
" quality, generate mipmaps, output statistics and debug information, and write\n"
" tone mapped debug images\n"
"\n"
" - basisu x.hdr -stats -hdr_favor_astc -hdr_uber_mode -uastc_level 4 : Highest\n"
" achievable ASTC HDR 4x4 quality (very slow encoding, BC6H quality is traded\n"
" off)\n"
"\n"
"--- Example RDO ASTC/UASTC HDR 6x6 command lines:\n"
"\n"
" - basisu -hdr_6x6 x.exr : Compress a HDR .EXR (or .HDR) image to a UASTC HDR\n"
" 6x6 .KTX2 file. LDR/SDR images will be upconverted to linear light HDR before\n"
" compression. See HDR upconversion options, above.\n"
"\n"
" - basisu -lambda 1000 -hdr_6x6 x.exr : Compress a HDR .EXR (or .HDR) image to\n"
" a UASTC HDR 6x6 .KTX2 file with rate-distortion optimization (RDO), at lambda\n"
" level 1000.\n"
"\n"
" - basisu -hdr_6x6i x.exr : Compress a HDR .EXR image to a compressed\n"
" intermediate format UASTC HDR 6x6 .KTX2 file.\n"
"\n"
" - basisu -lambda 1000 -hdr_6x6i x.exr : Compress a HDR .EXR image to a\n"
" compressed intermediate format UASTC HDR 6x6 .KTX2 file with rate-distortion\n"
" optimization (RDO), at lambda level 1000.\n"
"\n"
"--- Example ASTC/XUASTC LDR 4x4-12x12 command lines:\n"
"\n"
" - basisu -ldr_6x6i -quality 75 -xuastc_arith test.png : Compress test.png\n"
" to XUASTC LDR 6x6 using weight grid DCT with setting 75 and the arith\n"
" profile for higher compression.\n"
"\n"
" - basisu -ldr_4x4 -effort 5 test.png : Compress test.png to ASTC LDR 4x4\n"
"\n"
" - basisu -mipmap -ldr_10x5i test.png : Compress test.png to XUASTC LDR 10x5,\n"
" using lossless ZStd supercompression, with mipmaps\n"
"\n"
"--- ETC1S Texture Video Notes: Use -comp_level 2 or higher for better codebook\n"
"generation, specify very large codebooks using -max_endpoints\n"
"and -max_selectors, and reduce the default endpoint RDO threshold\n"
"(-endpoint_rdo_thresh) to around 1.25. Videos may have mipmaps and alpha\n"
"channels. Videos must always be played back by the transcoder in first to last\n"
"image order. Video files currently use I-Frames on the first image, and\n"
"P-Frames using conditional replenishment on subsequent frames.\n"
"\n"
"--- Low-level ETC1S compression (Effort) Level (-comp_level X) Details \n"
"\n"
"This setting controls the ETC1S speed vs. quality tradeoff. (Use -q to control\n"
"the quality vs. compressed size tradeoff.):\n"
"\n"
" - Level 0: Fastest, but has marginal quality and can be brittle on complex\n"
"images. Avg. Y dB: 35.45\n"
"\n"
" - Level 1: Hierarchical codebook searching, faster ETC1S encoding. 36.87 dB,\n"
"~1.4x slower vs. level 0. (This is the default setting.)\n"
"\n"
" - Level 2: Use this or higher for video. Hierarchical codebook searching.\n"
"36.87 dB, ~1.4x slower vs. level 0. (This is the v1.12's default setting.)\n"
"\n"
" - Level 3: Full codebook searching. 37.13 dB, ~1.8x slower vs. level 0.\n"
"(Equivalent to the initial release's default settings.)\n"
"\n"
" - Level 4: Hierarchical codebook searching, codebook k-means iterations. 37.15\n"
"dB, ~4x slower vs. level 0\n"
"\n"
" - Level 5: Full codebook searching, codebook k-means iterations. 37.41 dB,\n"
"~5.5x slower vs. level 0.\n"
"\n"
" - Level 6: Full codebook searching, twice as many codebook k-means iterations,\n"
"best ETC1 endpoint opt. 37.43 dB, ~12x slower vs. level 0"