推出 Compressonator v4.5,Brotli-G 压缩效率提升高达 20%

Originally posted:
Last updated:
Denis Levesque's avatar
Denis Levesque

Compressonator v4.5 现已发布!

本次发布包含的新功能概述如下,如果您想立即尝试,请访问 Compressonator 页面,其中包含所有下载和文档链接。

通过 Brotli-G 改进 BC1-BC5 压缩

新发布的 Brotli-G SDK v1.1 已集成到 Compressonator 中,并提供了“预处理”大多数 BCn 格式纹理以改进压缩的功能。使用 Compressonator CLI,用户可以获得比以前版本的 Compressonator 更高的压缩率,而无需任何手动配置。只需选择 Brotli-G 压缩,应用程序将自动检测输入纹理是否支持 Brotli-G SDK 的预处理,并在可能的情况下启用它。

通过运行新的 Brotli-G 压缩并使用一些示例纹理,与之前的 Compressonator 版本相比,BRLG 文件的大小平均减小了 10% - 15%,在某些情况下甚至减小了高达 20%

此功能目前仅支持 BC1-BC5 格式纹理,目前正在努力将其扩展到 BC6 和 BC7 纹理。

此外,Compressonator CLI 中添加了三个新的命令行选项,用于控制预处理的各个方面。第一个也是最直接的选项是 NoPreconditionBRLG,它仅禁用 Brotli-G 压缩期间纹理的预处理。另外两个选项 DoSwizzleBRLGDoDeltaEncodeBRLG,在预处理阶段启用额外的块交叉开关和颜色增量编码步骤,这可能会进一步提高压缩效果。有关所用技术的详细信息,请参阅 Brotli-G SDK 项目

总的来说,启用 DoSwizzleBRLGDoDeltaEncode 标志所能带来的改进,在很大程度上取决于输入纹理和输出格式。尽管如此,我们发现 DoDeltaEncodeBRLG 标志在 BC4 和 BC5 纹理上效果尤其好,与禁用该标志相比,压缩率可能提高约 5%。

新的 Brotli-G 打包功能

Compressonator CLI 中引入了一个新选项 PackageBRLG。启用此选项后,用户可以将目录及其子目录中的所有文件打包到一个输出的 ”.BRLG” 文件中。BRLG 文件格式的规范进行了一些小的更改以启用此新功能,但它仍然完全向后兼容以前的格式,因此 Compressonator CLI 在读取或写入旧版本的 BRLG 文件时不会遇到任何问题。

要使用新功能,用户需要指定 Brotli-G 压缩并将一个文件夹作为输入传递给命令行工具。命令应如下所示:

compressonatorcli.exe -PackageBRLG -fd BRLG example_folder/ output_package.brlg

这将获取 *example_folder*(及其所有子文件夹)中的每个文件,并将它们一起压缩成一个名为 *output_package.brlg* 的文件。生成的 BRLG 文件可以像任何其他 BRLG 文件一样解压缩。区别在于解压缩操作会将每个文件解包并输出到目标路径,并在原始打包时保留原始子目录结构。

因此,解压缩的命令应如下所示:

compressonatorcli.exe output_package.brlg result_folder/

需要注意的是,如前所述,目录结构在打包和解包过程中得以保留。这意味着如果输入文件夹包含如下文件:

example_folder
test.txt
subfolder
test.txt
texture.dds

那么解压缩的输出将如下所示:

result_folder
test.txt
subfolder
test.txt
texture.dds

Mipmap 生成更改

Compressonator CLI 处理带有现有 mipmap 级别的输入纹理的方式已得到改进。-nomipmap 选项已更新,现在始终生成不带附加 mipmap 级别的输出,而 -miplevels 选项将正确控制输出文件中存在的 mipmap 级别的最大数量,而与输入文件中包含的 mipmap 级别数量无关。

ETC 编解码器修复

ETC 编解码器与其他编解码器相比存在的不一致行为已得到修复。以前,ETC 编解码器错误地交换了输出中的红色和蓝色通道,此版本已解决了该问题。

其他质量改进

  • 修复了一些内存泄漏。
  • 更新了文档,以更好地解释 CMP Core 的 SetSrgbBCn 函数的用途。
  • 添加了新的 Compressonator Framework 代码示例,演示如何压缩外部纹理数据。
  • 修复了 DDS 文件保存问题,避免 DDSD_MIPMAPCOUNT 标志始终被设置。
  • 清理了重复的 CalcBufferSize 函数,并为该函数添加了缺失的格式。

其他构建改进

  • 修复了 Linux 构建脚本中的一些路径问题。
  • 修改了 CMake 文件,以便可以开启或关闭 KTX 支持。
  • 移除了对 OpenCV 的依赖,该依赖在仅构建 SDK 时仍然存在。
  • 修复了 MacOS 上与 __local 宏定义相关的构建错误。
  • 为 SDK 二进制构建添加了缺失的函数定义。
  • Windows 构建脚本已添加对 Visual Studio Community 的支持。

立即下载 Compressonator v4.5

最新的 Compressonator 版本可在 GitHub 上下载。

另外,请查看 Compressonator 文档以开始使用。

Denis Levesque's avatar

Denis Levesque

Denis Levesque 是 AMD 软件工程师,属于开发者工具团队。他目前主要负责 Compressonator。
© . This site is unofficial and not affiliated with AMD.