以下为英文原文的中文翻译:
关于
Arm® Adaptive Scalable Texture Compression (ASTC) Encoder, astcenc
是一个命令行工具,用于使用ASTC纹理压缩标准压缩和解压缩图像。
ASTC 格式
ASTC压缩数据格式由Arm®和AMD开发,已被采纳为OpenGL®、OpenGL ES和Vulkan®图形API的官方扩展。它在图像质量和位率以及内容创作者可用的格式和位率灵活性方面取得了重大进展。这使更多资产可以使用压缩,通常位率比其他格式更低,从而减少了存储内存和带宽需求。
请阅读[ASTC格式概述][1]以快速了解该格式,或阅读完整的[Khronos数据格式规范][2]以获取所有详细信息。
许可证
该项目采用Apache 2.0许可证。下载此存储库中的任何组件,即表示您认可LICENSE.txt文件中规定的条款。
编码器功能支持
编码器支持压缩低动态范围(BMP、JPEG、PNG、TGA)和高动态范围(EXR、HDR)图像,以及包装在DDS和KTX容器格式中的部分图像数据,输出为ASTC或KTX格式图像。
解码器支持解压缩ASTC或KTX格式输入图像,输出为低动态范围(BMP、PNG、TGA)、高动态范围(EXR、HDR)或DDS和KTX包装图像。
编码器允许通过"exhaustive"、"verythorough"、"thorough"、"medium"、"fast"和"fastest"编码质量预设来控制压缩时间/质量权衡。
编码器通过报告压缩时间和输入图像与压缩输出之间的峰值信噪比(PSNR)来允许压缩时间和质量分析。
ASTC格式支持
astcenc
压缩器支持生成ASTC规范允许的所有三个个人资料的图像:
- 2D低动态范围(LDR profile)
- 2D LDR和高动态范围(HDR profile)
- 2D和3D,LDR和HDR(Full profile)
它还支持所有ASTC块大小和压缩模式,允许内容创作者使用从0.89比特/像素到8比特/像素的全范围质量-比特率选项。
预编译二进制文件
ASTCENC稳定版本的发布构建二进制文件位于[GitHub Releases page][3]。
提供适用于Windows、macOS和Linux的64位构建。
Windows和Linux
对于Windows和Linux,ASTCENC的构建提供了多个二进制文件,每个都针对特定的SIMD指令集进行了优化。
对于x86-64,我们按性能递增的顺序提供:
astcenc-sse2
- 使用SSE2astcenc-sse4.1
- 使用SSE4.1和POPCNTastcenc-avx2
- 使用AVX2、SSE4.2、POPCNT和F16C
x86-64 SSE2构建将在所有x86-64机器上运行,但它是最慢的。其他两个需要扩展的CPU指令集支持,这并非普遍可用,但每个步骤都会获得约15%的性能提升。
对于Arm,如果有可用的二进制文件,我们提供:
astcenc-neon
- 使用NEON
macOS
对于macOS设备,我们提供一个单一的通用二进制文件astcenc
,允许操作系统自动使用当前主机机器的正确二进制变体。支持三个架构slice:
x86_64
- 使用上述定义的astcenc-sse4.1
构建。x86_64h
- 使用上述定义的astcenc-avx2
构建。arm64
- 使用上述定义的astcenc-neon
构建。
存储库分支
main
分支是压缩器的主动开发分支。它旨在成为最新主要发布系列的稳定分支,但由于它用于持续开发,因此预计会有一些不稳定性。我们建议使用最新的稳定发布标签进行生产开发。
3.x
分支是3.x发布系列的稳定分支。它不再处于活跃开发状态,但它是一个受支持的分支,会继续获得反向移植的错误修复。
1.x
和2.x
分支是较旧版本的稳定分支。它们不再处于活跃开发状态或获得错误修复。
您可能会发现的任何其他分支都是新功能或优化的开发分支,因此可能很有趣,但应被视为临时和不稳定的。
开始
打开终端,切换到适用于您系统的适当目录,然后运行ASTCENC编码器程序,如下所示:
在Linux或macOS上:
./astcenc
在Windows上:
astcenc
调用astcenc -help
会给出一个详细的帮助信息,包括使用说明和所有可用命令行选项的详细信息。下面总结了主要的编码器选项。
压缩图像
使用 -cl
\ -cs
\ -ch
\ -cH
模式压缩图像。例如:
astcenc -cl example.png example.astc 6x6 -medium
这使用LDR颜色配置文件和6x6块尺寸(3.56比特/像素)压缩example.png
。-medium
质量预设提供了合理的图像质量和相对较快的压缩速度,因此是压缩的良好起点。输出存储为线性颜色空间压缩图像example.astc
。
可用的模式有:
-cl
: 使用线性 LDR 色彩配置文件。-cs
: 使用 sRGB LDR 色彩配置文件。-ch
: 使用针对 HDR RGB 和 LDR A 调整的 HDR 色彩配置文件。-cH
: 使用针对 HDR RGBA 调整的 HDR 色彩配置文件。
如果您打算将生成的图像与解码模式扩展一起使用,以将解压缩精度限制为 UNORM8,建议您也指定 -decode_unorm8
标志。这将确保压缩器在选择编码时使用正确的舍入规则。
解压缩图像
使用 -dl
、-ds
、-dh
或 -dH
模式解压缩图像。例如:
astcenc -dh example.astc example.tga
这将使用完全 HDR 功能配置文件解压缩 example.astc
,并将解压缩的输出存储到 example.tga
。
可用模式与用于压缩的选项相同,但使用 d
前缀。请注意,对于解压缩,两种 HDR 模式之间没有区别,它们都是为了保持操作的对称性而提供的。
测量图像质量
使用 -tl
、-ts
、-th
或 -tH
模式评估压缩质量。例如:
astcenc -tl example.png example.tga 5x5 -thorough
这等同于使用 LDR 色彩配置文件和 5x5 块大小对图像进行压缩,使用 -thorough
质量预设,然后立即解压缩图像并保存结果。这可用于对压缩图像质量进行可视化检查。此外,此模式还会将一些图像质量指标打印到控制台。
可用模式与用于压缩的选项相同,但使用 t
前缀。
实验
高效的实时图形需要尽量减小压缩纹理的大小,因为这可以减少内存占用、减少内存带宽、节省能源,并可提高纹理缓存的效率。然而,像任何有损压缩格式一样,总会存在压缩图像质量无法接受的情况,因为无法用足够的位数来表示所需的输出精度。我们建议您通过实验块占用空间来找到尺寸和质量之间的最佳平衡,因为可微调的压缩比是 ASTC 格式的主要优势之一。
可以通过 -fastest
、-fast
、-medium
和 -thorough
到 -exhaustive
来控制压缩速度。一般来说,编码器花费的时间越多,结果就越好,但这种改进幅度会越来越小。
还有许多其他命令行选项可用于调整编码器参数,以微调压缩算法。有关更多详细信息,请参见命令行帮助消息。