添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
每像素位数 (bpp) 表示单个纹理像素所需的存储量。Bpp 值越低的纹理在磁盘和内存中也越小。较低的 bpp 值意味着 GPU 可在缓存中存储更多的像素,从而可以更快地访问纹理。
  • LDR(低动态范围)是指最典型的图像,其中颜色在概念上介于 0.0(黑色)和 1.0(白色)值之间。大多数图像文件(例如 PNG 和 JPG)具有低动态范围。
  • HDR(高动态范围)是指特殊的图像和纹理格式,其中颜色的范围可以高于 0 到 1。像 .exr 或 .hdr 这样的图像文件格式通常用于 HDR 图像数据。在运行时和 GPU 上,有多种 HDR 格式,分别对精度、范围和内存使用情况进行取舍。
  • RGB 是一种颜色模型,通过红色、绿色和蓝色的组合生成一系列颜色。 RGBA 是具有 Alpha 通道的 RGB 版本,支持混合和不透明度更改。 可变比特率 (VBR) 表示每像素的位数不是固定值,而是取决于实际内容。VBR 仅适用于 Crunch 压缩 ,仅限于磁盘上的纹理大小。内存中的大小与使用基础纹理格式时的大小相同(例如,RGB Compressed DXT1 对应 RGB Crunched DXT1)。

    对于具有 DirectX 11 或更高级别 GPU 的设备,可保证支持 BC7 和 BC6H 格式,推荐的压缩格式选择是: RGB 纹理 - DXT1 4 位/像素。 RGBA 纹理 - BC7(质量更高,压缩速度较慢)或 DXT5(压缩速度较快),均为 8 位/像素。 HDR 纹理 - BC6H 8 位/像素。 如果您需要在 PC 上支持 DirectX 10 类 GPU(2010 年之前的 NVIDIA GPU,2009 年之前的 AMD,2012 年之前的 Intel),则首选 DXT5(而不是 BC7),因为这些 GPU 不支持 BC7 和 BC6H。

    有关所有支持格式的详细信息,请参阅 支持的纹理压缩格式参考表

    iOS 和 tvOS

    对于使用 A8 芯片 (2014) 或以上的 Apple 设备,ATSC 是 RGB 和 RGBA 纹理的推荐纹理压缩格式。这种格式允许您在粒度级别对纹理质量和大小进行选择:从 8 位/像素(4x4 块大小)开始直至 0.89 位/像素(12x12 块大小)。 如果需要支持旧设备,或者您想要额外的 Crunch 压缩,从 A7 芯片 (2013) 起的 Apple 设备支持 ETC/ ETC2 格式。 对于更旧的设备,需要使用 PVRTC 压缩格式。 在 iOS 上,Unity 的默认纹理压缩格式是 PVRTC,以获得尽可能广泛的兼容性。ASTC 是首选,但在 A7 设备(第一个支持 Metal 的设备)上不受支持,将在运行时解压缩。

    有关所有支持格式的详细信息,请参阅 支持的纹理压缩格式参考表

    Android

    Android 上的纹理压缩支持很复杂,您可能需要针对不同的 子目标 构建多个不同版本的应用程序。

    除非您的应用针对的是特定硬件,支持有限范围的纹理压缩格式,您可在几种压缩格式和未压缩格式之间进行选择,考虑不同的取舍因素。

    对于 LDR RGB 和 RGBA 纹理,大多数现代 Android GPU 都支持 ASTC 压缩格式,包括: 自 Adreno 4xx 的 Qualcomm GPU/Snapdragon 415 (2015) 自 Mali T624 (2012) 的 ARM GPU 自 Tegra K1 (2014) 的 NVIDIA GPU 自 GX6250 (2014) 的 PowerVR GPU 如果您需要对旧设备的支持,或者您想要额外的 Crunch 压缩,所有运行 Vulkan 或 Metal 或 OpenGL ES 3.0 的 GPU 都支持 ETC2 格式。产生的图像质量非常高,并且支持一到四分量纹理数据。OpenGL ES 2 设备不支持 ETC2 格式,因此 Unity 在运行时将纹理解压缩为 ETC2 回退 为该格式指定的格式。 对于更旧的设备,通常只有 ETC 格式可用。缺点是没有直接的 Alpha 通道支持。对于精灵,Unity 提供了一个选项,通过将纹理拆分为两个 ETC1 纹理来使用 ETC1 压缩:一个用于 RGB,一个用于 Alpha。为此,请在导入 精灵图集 时为纹理启用特定于 Android 的 Split Alpha Channel 选项。精灵着色器对两个纹理进行采样并将它们组合成最终结果。 对于 HDR 纹理,ASTC HDR 是 Android 设备上唯一可用的压缩格式。ASTC HDR 需要 Vulkan 或 GL_KHR_texture_compression_astc_hdr 支持。ASTC 是最灵活的格式。

    对于不支持 ASTC HDR 的设备,所有运行 Vulkan、Metal 或 OpenGL ES 3.0 的设备都支持 RGB9e5,适用于没有 Alpha 通道的纹理。如果需要 Alpha 通道或更广泛的支持,请使用 RGBA Half。这种格式占用的内存是 RGB9e5 的两倍。

    有关所有支持格式的详细信息,请参阅 支持的纹理压缩格式参考表

    各平台的默认纹理压缩格式

    下表显示了每个平台使用的默认格式。

    12x12: 0.89, 10x10: 1.28, 8x8: 2, 6x6: 3.56, 5x5: 5.12, 4x4: 8 12x12: 0.11, 10x10: 0.16, 8x8: 0.25, 6x6: 0.45, 5x5: 0.64, 4x4: 1.0 部分 (8) 是 (10) RGBA Compressed ETC2 压缩 RGBA 部分 (9) RGBA Crunched ETC2 Compressed RGBA,采用额外的磁盘上 Crunch 压缩。 部分 (9) RGB + 1 位 Alpha Compressed ETC2 4 位 压缩 RGBA,Alpha 值完全不透明或完全透明 部分 (9) RGBA Compressed PVRTC 4 位 压缩 RGBA,纹理要求为方形 否 (12) RGBA Compressed PVRTC 2 位 压缩 RGBA,纹理要求为方形 否 (12) RGB Compressed ETC2 压缩 RGB 部分 (9) RGB Compressed ETC 压缩 RGB RGB Crunched ETC 压缩 RGB,采用额外的磁盘上 Crunch 压缩。 RGB Compressed PVRTC 4 位 压缩 RGB,纹理要求为方形 否 (12) RGB Compressed PVRTC 2 位 压缩 RGB,纹理要求为方形 否 (12) RG Compressed EAC 8 位 压缩双通道 (RG) 部分 (9) R Compressed EAC 4 位 压缩单通道 (R) 部分 (9) RGB(A) Compressed ASTC HDR HDR,压缩 RGB 或 RGBA,大小和质量取决于块大小 RGB 或 RGBA。 12x12: 0.89, 10x10: 1.28, 8x8: 2, 6x6: 3.56, 5x5: 5.12, 4x4: 8 12x12: 0.11, 10x10: 0.16, 8x8: 0.25, 6x6: 0.45, 5x5: 0.64, 4x4: 1.0 部分 (11) 部分 (11)
  • 低于 DX11 级别的 GPU 或使用 OpenGL 时的 macOS 除外。如果不支持,BC6H 纹理在加载时会解压缩为 RGBA Half,而 BC7 在加载时会解压缩为 RGBA32。
  • 在不支持 sRGB DXT 的 Web 浏览器上使用 线性渲染 ,纹理在加载时被解压缩为 RGBA32。
  • 采用 NVIDIA Tegra GPU 的 Android 设备除外;这些确实支持 DXT/ BC 格式。
  • OpenGL ES 2.0 / WebGL 1 上除外。
  • 对于 OpenGL ES 2.0/ WebGL 1:需要 GL_EXT_texture_rg 扩展支持。
  • 在 Android 上需要 GL_EXT_texture_norm16 或相应 Vulkan 功能。
  • 对于 OpenGL ES 2.0/ WebGL 1:需要 OES_texture_half_float 扩展支持。
  • 需要 Vulkan 或 GL_KHR_texture_compression_astc_ldr OpenGL ES 扩展。
  • OpenGL ES 2.0 上除外;这里的 ETC2 纹理被解压缩为在 Android Build Settings 中或 Platform-specific overrides 的 Android 选项卡上指定的格式 ETC2 回退
  • Apple A7 芯片设备 (2013) 上除外。
  • Android:需要 GL_KHR_texture_compression_astc_hdr 扩展。iOS:需要 A13 或更高版本的芯片 (2019)。如果不支持,则纹理将解压缩为 RGB9E5 格式,从而失去了 Alpha 通道。
  • 采用 Imagination PowerVR GPU 的 Android 设备除外;这些确实支持 PVRTC 格式。
  •