Compressonator Versions Save

Tool suite for Texture and 3D Model Compression, Optimization and Analysis using CPUs, GPUs and APUs

V4.5.52

3 months ago

Features

  • Improved compression ratios for most BCn textures using Brotli-G
  • A new Brotli-G packaging feature
  • ETC codec fixes
  • Various build improvements and bug fixes

Additional quality improvements

  • Fixed a few memory leaks.
  • Updated documentation to better explain the purpose of CMP Core’s SetSrgbBCn functions.
  • Added new Compressonator Framework code example showing how to compress external texture data.
  • Fixed DDS file saving so that the DDSD_MIPMAPCOUNT flag isn’t always set.
  • Cleaned up duplicate CalcBufferSize functions and added missing formats to the function.

Additional build improvements

  • Fixed some issues with paths in the Linux build script.
  • Modified the CMake files so that KTX support can be toggled on or off.
  • Removed dependency on OpenCV that used to persist even when only the SDK was built.
  • Fixed build error on MacOS related to __local macro definition.
  • Added missing function definitions to SDK binary builds.
  • Support for Visual Studio Community was added to the Windows build scripts.

NOTE

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.

V4.4.19

10 months ago

Features

  • CPU SIMD support in Compressonator Core
  • Mipmap Generation Updates

Additional Changes

App Updates

  • Dependency on DirectX 9 and DirectX 10 DLL files has been replaced with the use of DirectXTex
  • Silent option in Compressonator CLI properly disables all output other than fatal errors.
  • Edited documentation to fix typo for “GenGPUMipMaps” option.

SDK Updates

  • 16-bit PNG support added to Compressonator Framework.
  • Removed implicit channel swizzling from all codec buffer classes, ensuring more consistent behavior.
  • Improved BC7 codec performance by keeping initialization data in memory rather than freeing it after each call to CMP_ConvertTexture
  • Fixed compilation errors for BC6H core shader

Build Updates

  • The default location of build artifacts has changed to the “build/bin” folder, and build-related scripts have been moved to the “build” folder.
  • Building Compressonator has been slightly changed to standardize how to point to external dependencies, new environment variables have been introduced: QT_DIR, OPENCV_DIR, and VULKAN_DIR (check the documentation for more info).
  • A new CMake project has been added for building the Compressonator SDK in various configurations, it can be found at “build/sdk”.
  • Renamed CMP_TestCore project to CMP_UnitTests and expanded the suite of unit tests.

V4.3.206

1 year ago

Features

  • BROTLI-G Lossless Compression
  • Multi-Texture Mipmap Generation
  • Changes for Original File Names Used in Compression
  • BCn Transcoding
  • Removal of ASTC Support

This release also includes updates for the following

  • Inclusion of Linux Packages
  • BC6H Codec improvements for signed and unsigned formats
  • Mesh Optimization bug fixes
  • RGBA_10101002 Format support
  • 16-Bit PNG File support
  • R8 image format compression
  • Various mipmap bug fixes
  • Cube map bug fixes
  • Batch File I/O bug fixes

Known issues in this release

  • R8 images are currently loaded into the red channel of a 4 channel ARGB_8888 image. This does not affect the results of any compressions, but the GUI will continue to show ARGB_8888 instead of R_8.
  • The GPU_HW encoding option produces corrupted results on some machines when encoding to BC4_S or BC5_S. There is also an issue with generating and compressing mipmaps using the GPU_HW option that results in the lower mipmap levels being completely blank on some machines.

V4.2.5185

2 years ago

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.

V4.1.5083

3 years ago

Features

  • SNORM Support for BC4 and BC5
  • MIP Map Filter Support Using either GPU or CPU
  • GPU Based Compression and MIP Map Generation
  • PSNR Display Feature for GUI Image Views
  • KTX2 File Support
  • CSV File Update to Support Automation

Known issues and limitations

  • When using GPU encoding, all source image width and height must be divisible by 4.
  • GPU HW based encoding feature is only available on the Windows platform. Encoding is set only for BCn codecs and quality is limited when compared to CPU encoding.
  • BC6H is not supported with GPU HW based encoding.
  • KTX2 file formats for ATIn and DXT5 swizzled formats are not supported.
  • ATI1n, ATI2n processed images save as BC4 and BC5 formats.
  • Transcoding to ARGB_16F, ARGB_32F, and ARGB_8888 image formats is supported, all other channel formats have various data issues and have been removed until a fix is available.
  • Viewing glTF and OBJ models using Vulkan(TM) rendering shows blank views.
  • PSNR and Image diff analysis for mismatched channel source and destination types (F16, F32, HalfFloat, and 8bit) needs improvement.
  • BC6H for OpenCL is not available in this release.
  • If user-requested MIP Map level generation for GPU texture sizes in the GUI and CLI applications are invalid, they will automatically be -adjusted to the lowest settable limits.
  • Limited CubeMap support.

V4.0.4855

4 years ago

Features

  • CMP_Core GPU encoding support
  • Windows update supports GPU based encoding with OpenCL and DirectX

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

  • GPU based encoding feature is only available on the Windows platform.
  • When using GPU Encoding, all source image width and height must be divisible by 4.
  • BC1, BC2 and BC3 DXC Performance is slow for quality setting > 0.6
  • CMP_Core for BC1,BC2,BC3,BC4,BC5 is fully functional on both OpenCL and DX11.
  • CMP_Core BC7 has limited support on OpenCL, in a few cases encoding images causes GPU and CLI applications to become unresponsive.
  • CMP_Core BC6 for OpenCL is not completed.
  • BC6 & BC7 on DX11 uses DirectX Tex shaders, CMP_Core version will be available soon.
  • GPU shaders for OpenCL and DX11 are compiled at runtime when encoding a texture for the first time, all subsequent runs use compiled shaders.
  • KPerf(ms) and MTx/s are not measured for Compressonator SDK CPU encoding, only measured for CMP_Core SDK HPC-CPU and GPU encoding.
  • KPerf(ms) and MTx/s measurements do not match across DXC and OCL pipelines. If user-requested MIP Map level generation for GPU texture sizes in the GUI and CLI applications are invalid, they will automatically be adjusted to the lowest settable limits. See v3.2 list for additional issues and limitations.

v3.2.4691

4 years ago

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 

  • BC5 codec uses ATI2N_XY (Red & Green) channel format if you prefer Green & Red for BC5 please use ATI2N format for encoding.
  • In GUI, BC4 decode views using CPU are grayscaled based on the Red channel. The next release will only use Red channel views to match GPU views.
  • Reference (1) in installed documents has been updated in online Compressonator Documents.

v3.1.4064

5 years ago

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.

  • High-Level API A simple thread-safe interface can compress, decompress and transcode any image as required:

CMP_ConvertTexture(CMP_Texture* pSourceTexture, CMP_Texture* pDestTexture,...);

  • Block-Level API Processing of 4x4 pixel blocks is also provided for BC7 and BC6H using the following APIs:

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!

v3.0.3707

6 years ago
  • Model Mesh Optimization for obj and gltf 2.0 files

    • 3D triangle mesh optimization that improves on existing mesh preprocessing techniques
      • Vertex cache optimization
      • Overdraw optimization
      • Vertex prefetch cache optimization
  • Model Mesh Compression for obj files

    • Compresss models for faster download using Draco .drc files
      • Set quantization bits for POSITION, NORMAL, TEX_CORD and other GENERIC attributes
  • DX12 3D Model viewer features and modifications

    • Multi GPU Node usage stats
    • Real time GPU profiler chart with Total GPU Time stats
    • Animation (on/off)
    • Glow
    • Spot lighting
    • Shadow maps
    • Selection of tone mapper ("Timothy", "DX11DSK", "Reinhard", "Uncharted2Tonemap")
    • Exposure setting (0.0 to 1.0)
    • iblFactor (0.0 to 2.0)
    • Show Bounding Boxes
    • Show Sky dome
  • 2D Image viewer update

    • Switch overlaid views of processed (compressed), Original and or Pixel Image Differance views with simple key stokes (O, P or D) and toggle the views at any time from Origin to Processed or Original to Image Diff using space bar

v2.7.3568

6 years ago
  • Linux and Mac support

    • Updated builds to use cmake and scripts
  • Preview of 3D Model viewer and asset compression

    • View glTF v2.0 3D Models with DX12 https://www.khronos.org/gltf
    • Compress model textures
    • Image diff compressed model textures with original
    • Realtime 3D Model diff views