Skip to content
SMG edited this page Aug 18, 2023 · 15 revisions

Welcome to the ultimate_tex wiki! This wiki covers how to use the Ultimate Tex application and ultimate_tex_cli program as well as more advanced information for how to get the best quality and performance from texture conversions.

File Types

  • Nutexb - Smash Ultimate texture files used for models. These textures can be 2D, 3D, or cube maps with support for mipmapping. The image data can be compressed or uncompressed. Image data is swizzled for better performance, so the image data must be converted to a usable layout before using it.
  • Bntx - Smash Ultimate texture files used for UI textures. These textures have similar capabilities to nutexb files and are also swizzled.
  • DDS - Direct Draw Surface (DDS) is a texture file type used for storing texture data for game development. DDS files can conveniently store the same types of image data formats as nutexb and bntx files as well as mipmaps and array layers for cube maps. Converting nutexb or bntx to and from DDS won't alter or decompress the image data as long as the input and output image formats are the same. Not all image editing programs can read and write DDS files, so it may be necessary to convert DDS files to a more readable format like TIFF or PNG first for editing.
  • PNG - A common format for storing 2D RGBA images. PNG compression is lossless, so reading and saving the image multiple times will not degrade the quality. Some tools will expect textures to be in the PNG format. Image editing applications will often interpret the PNG alpha channel as transparency, which may not always be desirable.
  • TIFF - Another commonly supported format for storing 2D RGBA images with optional lossless compression. TIFF files may cause fewer unexpected issues with alpha channels in image editing programs, but this will depend on the program.

Image Formats

Most textures should use BC7Unorm or BC7Srgb since these provide the highest quality for compressed RGBA data. Uncompressed formats like R8G8B8A8Srgb are lossless and avoid compression artifacts for textures with fine detail like text or UI elements. Textures that store color data like col, dif, or emi maps should use formats ending in "Srgb". Textures that do not store color data like prm or nor maps should use formats ending in "Unorm". Specular and irradiance cube maps will give more accurate lighting when using HDR formats like BC6Ufloat. The ultimate_tex_cli program uses case sensitive checks for these format names.

Format Description Compressed
R8Unorm Single channel 8-bit unsigned
R8G8B8A8Unorm RGBA 8-bit unsigned linear
R8G8B8A8Srgb RGBA 8-bit unsigned color
R32G32B32A32Float RGBA 32-bit floating point (HDR)
B8G8R8A8Unorm BGRA 8-bit unsigned linear
B8G8R8A8Srgb BGRA 8-bit unsigned color
BC1Unorm RGB linear with 1-bit alpha ✔️
BC1Srgb RGB color with 1-bit alpha ✔️
BC2Unorm RGB linear with 4-bit alpha ✔️
BC2Srgb RGB color with 4-bit alpha ✔️
BC3Unorm RGBA linear color + alpha ✔️
BC3Srgb RGBA color + alpha ✔️
BC4Unorm Single channel grayscale unsigned ✔️
BC4Snorm Single channel grayscale signed ✔️
BC5Unorm RG two channel unsigned ✔️
BC5Snorm RG two channel signed ✔️
BC6Ufloat RGB unsigned floating point (HDR) ✔️
BC6Sfloat RBG signed floating point (HDR) ✔️
BC7Unorm RGBA linear color + alpha ✔️
BC7Srgb RGBA color + alpha ✔️

Mipmaps

  • Disabled - No mipmaps are generated. The texture will only have the full resolution base mip level. Recommended for UI textures.
  • FromSurface - Preserve the number of mipmaps from the original surface. This is mostly helpful for preserving existing data from formats like DDS, nutexb, or bntx. Specular cube maps rely on custom filtering for mipmaps and should use FromSurface instead of GeneratedAutomatic.
  • GeneratedAutomatic - Generate mipmaps from the base mip level. This is equivalent to the "automatic" setting in DDS creation programs and works by repeatedly halving the width and height until the dimensions are 1x1. Mipmaps reduce aliasing artifacts for texture filtering and only add up to 33% extra space, so this setting is recommended for most textures.

Quality

All supported image formats use a fixed compression ratio, so changing the quality will have no impact on the output file size. The quality setting is intended to provide a balance between export times and encoding quality.

  • Fast - The lowest quality but the fastest encoding times. When using more advanced compression types like BC6 or BC7, the compression artifacts are very subtle even with the quality set to Fast.
  • Normal - Slightly higher quality but noticeably slower encoding times. This may slightly improve texture compression artifacts in some cases.
  • Slow - Higher quality than normal at the cost of very slow encode times. The Slow setting may reduce artifacting compared to Fast or Normal. This should only be enabled on a case by case basis due to the performance impact. If avoiding compression artifacts is crucial such as for text or 2D sprites, consider using an uncompressed format with a smaller resolution to avoid large file sizes.

Batch Menu

This menu contains useful utilities for processing texture files. Click "Optimize Nutexb Padding" to select the root folder containing nutexb files to optimize. The application will find all nutexb files in the selected folder and all subfolders and remove any unnecessary padding added by applications like Switch Toolbox. Each nutexb file will be modified and saved to the original location, so no new files are created. This optimization step can significantly reduce disk space for modpacks since many older mods contain unoptimized textures like 512x512 textures in a 4096x4096 sized texture file.

Clone this wiki locally