TA工具箱首页 / TA 术语百科

贴图压缩格式:DXT、ETC、ASTC 对比与选择

2026-08-24

为什么需要贴图压缩

纹理是游戏和实时渲染中内存占用的大头,高分辨率纹理可能消耗大量显存和带宽。贴图压缩格式通过减少纹理数据的存储大小,同时保持可接受的视觉质量,来优化性能和内存。GPU 硬件支持直接采样压缩纹理,无需解压,从而节省带宽。

常见贴图压缩格式

DXT/BC 系列(桌面平台)

  • **DXT1/BC1**:每个 4x4 块 64 位,支持 RGB 和 1 位 Alpha。压缩比 8:1(相对于 24 位 RGB)。
  • **DXT3/BC2**:每个块 128 位,支持 4 位 Alpha,适合有锐利 Alpha 的纹理。
  • **DXT5/BC3**:每个块 128 位,支持插值 Alpha,适合渐变 Alpha。
  • **BC4/BC5**:单通道和双通道格式,常用于法线贴图(BC5 存储 X、Y 分量)。
  • **BC6H/BC7**:高质量格式,BC6H 用于 HDR,BC7 用于高质量 LDR。

这些格式广泛应用于 Windows、Mac、Linux 等桌面平台。

ETC 系列(移动平台)

  • **ETC1**:每个 4x4 块 64 位,支持 RGB,不支持 Alpha,OpenGL ES 2.0 通用。
  • **ETC2**:兼容 ETC1,支持 RGBA,OpenGL ES 3.0 及以上。
  • **EAC**:单通道和双通道格式,用于法线贴图等。

ETC 是 Android 设备的基线格式。

ASTC(自适应可伸缩纹理压缩)

ASTC 是较新的格式,支持多种块大小(从 4x4 到 12x12),提供灵活的压缩比和质量权衡。支持 RGBA、HDR 等,被大多数现代移动 GPU(如 Adreno 5xx+、Mali T6xx+)和部分桌面 GPU 支持。ASTC 是移动端的推荐选择。

其他格式

  • **PVRTC**:PowerVR GPU 使用的格式,iOS 早期设备支持,质量一般。
  • **ATITC**:旧 Adreno GPU 格式,已逐渐淘汰。

格式选择策略

  • **桌面平台**:优先使用 BC7(高质量)或 BC1/BC3(兼容性)。
  • **移动平台**:优先使用 ASTC(现代设备),否则使用 ETC2。
  • **法线贴图**:使用双通道格式(BC5 或 EAC),节省内存。
  • **HDR 纹理**:使用 BC6H 或 ASTC HDR。
  • **UI 纹理**:如果要求高质量,可以使用不压缩或无损格式(如 PNG),但需注意内存。

在 Unity 和 Unreal 中,可以在纹理导入设置中选择压缩格式,并针对不同平台覆盖设置。

压缩格式与纹理类型

  • **颜色纹理**:使用有损压缩(BC1/BC3/ETC2/ASTC)。
  • **法线贴图**:使用特殊格式(BC5)或重新排列通道后压缩。
  • **数据纹理**(如金属度、粗糙度):可使用单通道或压缩格式,但需注意精度。
  • **UI 元素**:通常使用不压缩或 ASTC,以避免压缩伪影。

常见问题

DXT 和 BC 有什么关系?

BC(Block Compression)是 DirectX 10 及以后的标准名称,DXT 是旧称。BC1 相当于 DXT1,BC3 相当于 DXT5。

ASTC 比 ETC 更好吗?

通常是的。ASTC 提供更好的质量和灵活性,但需要硬件支持。对于支持 ASTC 的设备,推荐使用。

法线贴图为什么使用双通道压缩?

法线贴图的 Z 分量可以从 X、Y 计算得出(单位向量),因此可以丢弃 Z,使用双通道格式存储 X、Y,在着色器中重建 Z,节省内存。

移动端如何选择压缩格式?

如果目标设备支持 ASTC,使用 ASTC;否则使用 ETC2。对于 iOS,可以使用 PVRTC 或 ASTC(较新设备)。

压缩会导致纹理质量下降吗?

有损压缩会产生块状伪影,尤其在高对比度边缘。可以通过选择合适的格式和块大小来平衡质量和大小。

常见问题

DXT 和 BC 有什么关系?

BC 是 DirectX 10 及以后的标准名称,DXT 是旧称。BC1 相当于 DXT1,BC3 相当于 DXT5。

ASTC 比 ETC 更好吗?

通常是的。ASTC 提供更好的质量和灵活性,但需要硬件支持。对于支持 ASTC 的设备,推荐使用。

法线贴图为什么使用双通道压缩?

法线贴图的 Z 分量可以从 X、Y 计算得出,因此可以丢弃 Z,使用双通道格式存储 X、Y,在着色器中重建 Z。

移动端如何选择压缩格式?

如果目标设备支持 ASTC,使用 ASTC;否则使用 ETC2。对于 iOS,可以使用 PVRTC 或 ASTC(较新设备)。

压缩会导致纹理质量下降吗?

有损压缩会产生块状伪影,尤其在高对比度边缘。可通过选择合适的格式和块大小平衡质量和大小。