AMD Compressonator
AMD Compressonator 是一套工具,旨在帮助艺术家和开发人员更轻松地处理压缩资产,并直观地了解各种压缩技术的质量影响。
我们很高兴地宣布 Compressonator v3.1 发布!此版本包含多项新功能和优化,包括 SDK、CLI 和 GUI 工具的新安装程序、新的批量压缩支持、对 Compressonator 的 BC6H 和 ETC2 支持的改进、新的 glTF 模型预览器等等。
根据开发者的反馈,他们希望有一种更简单的方法将压缩集成到其预处理流程中,因此我们现在提供独立的“C”SDK 和命令行实用程序安装程序。文件结构也已重新组织和简化,以便更方便地将工具移植到不同的工作环境中。
Compressonator SDK 支持 BC1-BC7 (DXTC)、ETC1、ETC2、ASTC、ATC、ATI1N、ATI2N。所有格式都可通过一个单一的“C”接口头文件访问。
新的 SDK 中包含多个带有源代码的示例应用程序,演示了使用“高级 API”或“块级 API”将纹理压缩添加到自己应用程序的简便性。
一个简单的线程安全接口可以根据需要压缩、解压缩和转码任何图像
CMP_ConvertTexture(CMP_Texture* pSourceTexture, CMP_Texture* pDestTexture,…);
例如
// To use Compressonator's portable "C" interfaces, just include// a single header file and Compresonator.lib into your projects
#include "Compressonator.h"
...//==========================// Load Source Texture//==========================CMP_Texture srcTexture;// note that LoadDDSFile function is a utils function to initialize the source CMP_Texture// you can also initialize the source CMP_Texture the same way as initialize destination CMP_Textureif (!LoadDDSFile(pszSourceFile, srcTexture)){...}
//===================================// Initialize Compressed Destination//===================================CMP_Texture destTexture;destTexture.dwSize = sizeof(destTexture);destTexture.dwWidth = srcTexture.dwWidth;destTexture.dwHeight = srcTexture.dwHeight;destTexture.dwPitch = 0;destTexture.format = CMP_FORMAT_BC6H;destTexture.dwDataSize = CMP_CalculateBufferSize(&destTexture);destTexture.pData = (CMP_BYTE*)malloc(destTexture.dwDataSize);
//==========================// Set Compression Options//==========================CMP_CompressOptions options = {0};options.dwSize = sizeof(options);options.fquality = 0.05f;options.dwnumThreads = 8;
//==========================// Compress Texture//==========================CMP_ERROR cmp_status;cmp_status = CMP_ConvertTexture(&srcTexture, &destTexture, &options, &CompressionCallback, NULL, NULL);if (cmp_status != CMP_OK){...}
//==========================// Save Compressed Testure//==========================SaveDDSFile(pszDestFile, destTexture))
free(srcTexture.pData);free(destTexture.pData);还通过以下 API 提供了 BC7 和 BC6H 的 4x4 像素块处理
CMP_EncodeBC7Block(BC7BlockEncoder* encoder , double in[16][4], CMP_BYTE* out); 和 CMP_EncodeBC6HBlock(BC6HBlockEncoder* encoder, CMP_FLOAT in[16][4], CMP_BYTE* out);
块级 API 特别有价值,因为它允许您以任何您喜欢的方式将块处理封装到您的工具中。因此,它有望成为集成到您的资产生成管道中的有力候选者,包括集成到您现有的任何并行处理系统中。
BC6H 是一种有损的基于块的压缩格式,用于压缩半精度浮点纹理,这对于 HDR 光照贴图等非常有用,并得到硬件的完全支持。与在 CPU 上解压缩相比,使用基于 CPU 的编码器处理图像并在 GPU 上解压缩时,图像的质量会略有不同,尤其是在生成具有逐渐降低分辨率的 MIP 贴图级别时。我们最新的版本补偿了这些差异,以减少导致块状伪影和亮度变化的相对解压缩误差。
ETC2 也是一种有损的基于块的压缩格式,用于压缩内存有限的设备上的纹理,并得到硬件的完全支持。Compressonator 的 ETC2 支持中添加了两种新模式 - ETC2_RGBA 和 ETC2_RGBA1 - 以控制图像的透明度。

Ruby Image 包含 alpha 通道并使用 ETC2_RGB 处理
与 ETC2_RGB 相比,ETC2_RGBA 会导致压缩文件大小更大,但在纹理的透明度控制方面更好。

使用 ETC2_RGBA 处理的 Ruby 图像
ETC2_RGBA1 的文件大小将与 ETC2_RGB 相当,仅具有部分透明度控制,其中像素要么完全透明,要么完全不透明。

使用 ETC2_RGBA1 处理的 Ruby 图像
当在压缩命令行选项中添加 -log 时,CLI 将生成一个输出文件 process_results.txt。用户可以使用命令 -logfile 更改默认日志文件,该日志捕获有关源文件和目标文件的详细信息,以及性能和质量的统计数据。
例如,CompressonatorCLI -log -fd BC7 .\images\ruby.png ruby_bc7.dds 将生成一个 process_results.txt 文件,内容如下:

多个进程将结果附加到此文件中,并用虚线分隔。该选项仅适用于压缩图像,不适用于 3D 模型或图像转码。新的 CLI 还支持处理文件夹中的图像文件,无需指定文件名。使用文件过滤器,还可以根据需要选择特定类型的文件进行压缩。
例如,要仅处理扩展名为 bmp、png 或 exr 的图像,您可以使用 CompressonatorCLI -fd BC7 -ff BMP,PNG,EXR .\images .\results。请注意,BC7 压缩应用于 HDR 图像,作为自动自适应通道格式 (ACF) 功能,该功能在处理前会将图像的半精度浮点通道转码为字节。
CompressonatorCLI -fd BC7 .\images .\results 将使用 BC7 压缩处理所有图像文件到 results 文件夹。
在上一版本中,我们通过 GUI 应用程序为 obj 文件引入了网格压缩和网格优化支持,以及为 glTF 2.0 文件提供了网格优化支持。在此新版本中,已将使用 Google Draco 库 对 glTF 2.0 文件格式进行网格压缩的功能添加到 GUI 中。
此外,还添加了 CLI 选项以支持对 obj 和 glTF 2.0 文件格式的所有网格优化和压缩操作。
用户可以使用“另存为视图”上下文菜单,或按 CTRL+C(显示图像)或 ALT+C(原始源图像)将查看的图像捕获到文件,或保存到 Windows 剪贴板。

图像视图上下文菜单(通过右键单击启用)

图像视图状态栏显示光标的块位置
还显示了以块为增量的光标位置,用户现在可以使用“另存为源块…”菜单将任何块保存到文件,其中 … 是当前光标位置转换为块位置。
此功能对于捕获用于生成出现解压缩图像伪影或质量差的压缩块的源纹理块非常有用。根据源,将一个 4x4 块图像保存为 BMP 或 EXR 文件格式,之后可用于重复分析。
此功能允许用户手动覆盖两个渲染模型自动差异视图。自动视图在每个模型视图渲染两个周期后以预定速率切换渲染帧,手动视图允许用户使用空格键手动切换视图。

3D 模型差异视图面板
手动视图:按下空格键时,渲染视图将在原始视图和处理后的视图之间切换。这使用户能够检查每个渲染视图的细节级别,并轻松区分缺陷,尤其是在模型网格经过压缩或优化时。
允许查看带有纹理的 glTF 2.0 场景。目前,3D 模型差异和统计信息功能在 Vulkan 查看器中是禁用的。

使用 Vulkan 启用模型渲染
前往 Compressonator 产品页面 以获取有关该工具及其功能的更多信息。
您还可以直接访问 GitHub 仓库 和 发行版。详细文档可在此处找到:这里。
我们希望听到您的声音!新功能建议或改进想法随时欢迎,请使用 Compressonator GitHub 留下您的反馈。
感谢您一直以来的支持,希望您发现新发布的 Compressonator 工具在您的项目工作流程中有用。