Tool suite for Texture and 3D Model Compression, Optimization and Analysis using CPUs, GPUs and APUs
To build from source Compressonator v4.5 requires version 1.1 of the Brotli-G SDK to build which is not yet available, but will be very soon.
Features
This release also includes updates for the following
Known issues in this release
Features
BC1 Quality Improvements Added new refine steps to improve quality of images with mixed low and high-frequency content. Boosted encoding performance by 2x with improved quality for smooth texture-mapped surfaces.
BC7 HLSL Improvements Bug fixes and improved overall quality of the shader.
GUI Update Added “Refine Steps” settings for BC1 image processing Removed “Use Alpha” and “No Alpha” setting for BC1, Just set a threshold above 0 to enable BC1 punch through ranges
SDK Updates Removed framework.h file, replaced with compressonator.h Added new kernel setting options for BCn codecs in CMP_Framework New single header shader files added for CPU-GPU common API’s and type definitions Added FidelityFX types to common_defs.h to support programming FidelityFX shaders with CMP type definitions Improved CompressonatorLib BC1 performance and quality
CMake Build Updates Added options to select build of external libs, SDK libs and applications Build updated for CLI on Mac OS OpenCV 4 supported Improved compiler standard revision detection and extensions Visual Studio 2019 support Qt 5.15 support
Known issues and limitations
-BC1 set to high-quality settings or with refinement steps take longer time to process than prior versions, adjust quality-settings lower if better performance is required -Fixed quality issues for BC7 HLSL for images with alpha content, the processing time is longer than the previous release -Global Setting of Refine Steps is only valid for BC1, it will not work for any other format settings.
Features
Known issues and limitations
Features
Analysis Views
(Beta Feature) Displays performance data for GPU and CPU based BC1 to BC7 encoders
CLI Analysis Log File
The “process_results.txt” logging includes GPU performance analysis data. csv file format is also available.
Using Codec Quality Settings
Quality settings are available for BC1, BC2 and BC3 encoders.
Setting Global Quality Settings
Users can override all individual destination compression settings, using a globally set value before processing.
Make Compatible Feature
Compressonator SDK performs auto conversions of FP16 to byte and byte to FP16 formats when encoding textures with GPU or CPU encoders, a pre-conversion of the source data is performed, into a temporary buffer which is then sent for processing, once the processing is completed the buffer is removed.
Known issues and limitations
Features
New Libraries
Several new libraries are now provided with the SDK.
Compressonator Core : Provides block level API access to updated performance and quality-driven BCn codecs.
Compressonator Framework: Includes Compressonator core with interfaces for multi-threading, mipmap generation, file access of images and HPC pipeline interfaces. (SPMD & GPU support is not enabled in this release)
Compressonator SDK: Has been updated to support Cube Maps, MIP Map generation. The external link requirement for Open EXR has been removed.
Cube Map Support
This release previews cube map support for images that are limited to RGBA_8888 format and RGBA_F16. Support for other formats will be provided in the next major update.
Analysis Views
An analysis table view and results output are provided for users to view test analysis results for Performance, PSNR, and SSIM analysis during and after processing of image textures.
Known issues and limitations
HPC BC7 codec on Linux platforms shows block artifacts.
HDR Cube maps (Format ARGB_16F) files have issues in the GUI view, only the first frame and MIP Level is displayed.
Cube map only supports a limited set of texture types (RGBA_8888 and RGBA_F16), the additional format will be added in a future release.
Cube maps with.KTX as destination format is not supported.
When transcoding signed floats with BC6H HPC on unsigned RGBA_8888 data the images will appear distorted.
CreateCodecBuffer (nCodecBufferType) case needs to create new codec buffers for CBT_RGBA8888, CBT_BGRA8888 and CBT_ARGB8888. The fix has been patched in this release.
In GUI, ATI2N decode with CPU is swizzled. Decode views with GPU_OpenGL, GPU_DirectX and GPU_Vulkan are correct.
MSE calculations are based on RGB channels only, alpha channel is not included. New MSE calculations based on the MipSet data format for RGBA channels will be used in the next release.
Notes
New Installers for SDK and Utils
When installing to Windows with V3.1 release, you will notice that there are several separate new installers,
SDK, GUI and CLI, which when all used generates the following folders:
bin\GUI and bin\CLI folders are created when the user installs GUI and CLI. When the SDK is installed, a examples folder is created which contains sample application source code demonstrating the use of the Compressonator SDK. These samples use the header files from the include folder and require linking with the prebuilt sample Compressonator library provided in the lib folder. Users can also build the Compressonator library using the source code from GPUOpen.
Each of these installs will not remove prior v3.0 or older installations. The user should uninstall manually using the control panel “add remove programs".
SDK The Compressonator SDK supports BC1-BC7 (DXTC), ETC1, ETC2, ASTC, ATC, ATI1N, ATI2N, all available in a single library that you use from a single C header.
With the new SDK installation, several example applications with source code are provided that demonstrate how easy it is to add texture compression to your own applications using either "High Level" or "Block Level" APIs.
CMP_ConvertTexture(CMP_Texture* pSourceTexture, CMP_Texture* pDestTexture,...);
CMP_EncodeBC7Block(BC7BlockEncoder* encoder , double in[16][4], CMP_BYTE* out);
CMP_EncodeBC6HBlock(BC6HBlockEncoder* encoder, CMP_FLOAT in[16][4], CMP_BYTE* out);
The block-level API is particularly interesting since it lets you wrap up block processing any way you like in your tooling. That hopefully therefore makes it a stronger candidate for integration into your asset generation pipeline, including into in any existing parallel processing system you might have.
BC6H: The quality of images varies slightly when processed with a CPU based encoder and decompressed by GPU compared to decompression by CPU, especially when generating MIP map levels with progressively lower resolution images. Our latest release compensates for these differences to reduce the errors that causes blocking artifacts and luminance changes.
ETC2_RGBA and ETC2_RGBA1: is added to Compressonator SDK, that controls the degree of transparency of images for ETC2 blocks.
CLI Options
Process Source and Destination Folders: The new CLI adds support for processing image files from a folder, without the need to specify a file name. Using a file filter, specific files types can also be selected for compression as needed.
CLI Analysis Log File: CLI will generate an output "process_results.txt" when -log is added to the compression command line options, users can change the default log file using the command -logfile, the log captures details of the source and destination files along with statistical data on performance and quality.
Image Viewer
Save View as: Users can capture viewed images to file using context menu “Save View as” to either DDS, BMP or EXR files.
Save Block as: Users can now save any block to file using "Save Source Block … as" where … is the current cursor location translated to a block position.
Copy to Windows Clipboard: Users can capture images to Windows Clipboard, using keyboard keys Ctrl C (captures displayed image), Alt C (captures original source image).
3D Model
Model Mesh Compression: Additional support for gltf 2.0 compression extensions (KHR_draco_mesh_compression) is added to CLI and GUI.
Selectable 3D Model Viewers: Support for the Vulkan Viewer code introduced in 3.0 can now be set in GUI application settings, this is an alpha version and not expected to work for all glTF models, feature for this viewer compared to DX12 has been limited.
3D Model Image Diff Viewer, Auto and Manual View: This feature allows the user to select a manual override of the automated difference view of two rendered models. The Auto View switches render frames at a predetermined rate after two render cycles of each model view, the Manual View allows the users to manually switch view using the keyboards space bar.
Known issues and limitations
After uninstalling the SDK or CLI, Windows short cuts for the tools folder references are not removed. When selecting them in the start menu Windows will prompt for removal.
Vulkan Model Viewer, the code is a preview alpha version, it may cause GUI instability with various models!
Model Mesh Optimization for obj and gltf 2.0 files
Model Mesh Compression for obj files
DX12 3D Model viewer features and modifications
2D Image viewer update
Linux and Mac support
Preview of 3D Model viewer and asset compression