Unity3D:按平台推荐、默认和支持的纹理格式

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

按平台推荐、默认和支持的纹理格式

本页包含以下信息:

  • 术语 *各平台的推荐纹理压缩格式
  • 桌面端
  • iOS 和 tvOS
  • 人造人
  • 默认纹理压缩格式(按平台)
  • 纹理压缩格式(按质量)
  • 支持的纹理压缩格式(按平台)

此页面不包含有关游戏主机平台的信息。 有关游戏主机平台的信息,请参阅特定于平台的文档。

有关纹理格式的概述,请参阅纹理格式。有关纹理导入设置以及如何设置每个纹理平台特定替代的信息,请参阅纹理导入设置。某些纹理导入设置也可以在构建设置中全局覆盖,主要是为了加快开发过程中的迭代时间。

术语

本页用到了以下术语:

  • 每像素位数 (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 设备,建议使用 RGB 和 RGBA 纹理使用 ATSC 纹理格式。这种格式允许您在粒度级别上在纹理质量和大小之间进行选择:从 8 位/像素(4x4 块大小)一直到 0.89 位/像素(12x12 块大小)。 如果需要支持较旧的设备,或者您想要额外的 Crunch 压缩,那么 Apple 设备支持从 A7 芯片 (2013) 开始的 ETC/ETC2 格式。 对于更旧的设备,PVRTC 是要使用的格式。在 iOS 上,您可以在播放器设置中配置默认纹理格式。PVRTC为您提供最广泛的兼容性。ASTC 是首选,但在 A7 设备(第一个支持 Metal 的设备)上不受支持,并将在运行时解压缩。

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

人造人

Android 上的纹理格式支持很复杂。您可能需要使用不同的子目标构建多个应用程序版本。

您可以在播放器设置中选择默认格式。您的选择是ASTC,ETC2和ETC(ETC1代表RGB,ETC2代表RGBA)。有关不同设置如何交互的更多详细信息,请参阅纹理压缩设置。

对于 LDR RGB 和 RGBA 纹理,大多数支持 OpenGL ES 3.1 或 Vulkan 的现代 Android GPU 也支持 ASTC 格式,包括: 自Adreno 4xx / Snapdragon 415(2015)以来的高通GPU,自Mali T624(2012)以来的ARM GPU,自Tegra K1(2014)以来的NVIDIA GPU,自GX6250(2014)以来的PowerVR GPU。

如果您需要支持较旧的设备,或者想要额外的Crunch压缩,那么所有运行Vulkan或OpenGL ES 3.0的GPU都支持ETC2格式。 生成的图像质量相当高,并且支持一到四分量的纹理数据。OpenGL ES 2 设备不支持 ETC2 格式,因此 Unity 会在运行时将纹理解压缩为 ETC2 回退指定的格式。 对于更旧的设备,通常只有 ETC 格式可用。缺点是没有直接的 alpha 通道支持。对于精灵,Unity 提供了一个使用 ETC1 压缩的选项,方法是将纹理拆分为两个 ETC1 纹理:一个用于 RGB,一个用于 alpha。要启用此功能,请在导入精灵图集时为纹理启用特定于 Android 的拆分 Alpha 通道选项。精灵着色器对两种纹理进行采样,并将它们组合到最终结果中。

对于HDR纹理,ASTC HDR是Android设备上唯一可用的压缩格式。ASTC HDR需要Vulkan或GL_KHR_texture_compression_astc_hdr支持。ASTC 是最灵活的格式。 如果设备不支持 ASTC HDR,则纹理将在运行时解压缩为 RGB9e5 或 RGBA Half,具体取决于 Alpha 通道使用情况。

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

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

默认纹理格式,按平台

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

平台颜色模型正常质量(默认设置)高质量低质量(更高性能)
Windows、Linux、macOSRGBRGB 24 位RGB 压缩 DXT1RGB(A) 压缩 BC7RGB 压缩 DXT1
吉巴RGBA 32 位RGBA 压缩 DXT5RGB(A) 压缩 BC7RGBA 压缩 DXT5
高密度显示RGBA 半场RGB 压缩 BC6HRGB 压缩 BC6HRGB 压缩 BC6H
WebGLRGBRGB 24 位RGB 压缩 DXT1RGB 压缩 DXT1RGB 压缩 DXT1
吉巴RGBA 32 位RGBA 压缩 DXT5RGBA 压缩 DXT5RGBA 压缩 DXT5
安卓可配置))RGBRGB 24 位RGBA 压缩 ASTC 6x6 块
RGB 压缩 ETC2
RGB 压缩 ETC
RGBA 压缩 ASTC 4x4 块
RGB 压缩 ETC2
RGB 压缩 ETC
RGBA 压缩 ASTC 8x8 块
RGB 压缩 ETC2
RGB 压缩 ETC
吉巴RGBA 32 位RGBA 压缩 ASTC 6x6 块
RGBA 压缩 ETC2
RGBA 压缩 ASTC 4x4 块
RGBA 压缩 ETC2
RGBA 压缩 ASTC 8x8 块
RGBA 压缩 ETC2
苹果(可配置))RGBRGB 24 位RGBA 压缩 ASTC 6x6 块
RGB 压缩 PVRTC 4 位
RGBA 压缩 ASTC 4x4 块
RGB 压缩 PVRTC 4 位
RGBA 压缩 ASTC 8x8 块
RGB 压缩 PVRTC 2 位
吉巴RGBA 32 位RGBA 压缩 ASTC 6x6 块
RGBA 压缩 PVRTC 4 位
RGBA 压缩 ASTC 4x4 块
RGBA 压缩 PVRTC 4 位
RGBA 压缩 ASTC 8x8 块
RGBA 压缩 PVRTC 2 位
电视操作系统RGBRGB 24 位RGBA 压缩 ASTC 6x6 块RGBA 压缩 ASTC 4x4 块RGBA 压缩 ASTC 8x8 块
吉巴RGBA 32 位RGBA 压缩 ASTC 6x6 块RGBA 压缩 ASTC 4x4 块RGBA 压缩 ASTC 8x8 块
违约吉巴RGBA 32 位RGBA 16 位RGBA 16 位RGBA 16 位

纹理格式,按质量

下表显示了 Unity 中可用的每种格式及其质量详细信息。

纹理格式描述通道质量每像素位数1024x1024 纹理的大小,以 MB 为单位
RGB(A) 压缩 BC7压缩 RGB 或 RGBARGB 或 RGBA。81
RGBA 紧缩的 DXT5Compressed RGBA,采用额外的磁盘上 Crunch 压缩。吉巴低到中可变可变
RGBA 64 位未压缩 RGBA,精度非常高吉巴非常高648
RGBA 32 位未压缩 RGBA吉巴324
RGBA 16 位量化 RGBA吉巴162
RGB 压缩 DXT1压缩 RGB(也称为 BC1)RGB40.5
RGB 紧缩的 DXT1压缩 RGB,采用额外的磁盘上 Crunch 压缩。RGB低到中可变可变
RGB 48 位未压缩 RGB,精度非常高。 为 GPU 转换为 RGBA 64 位RGB非常高48(磁盘),64(GPU)6(磁盘),8(GPU)
RGB 24 位未压缩 RGB。 为 GPU 转换为 RGBA 32 位RGB24(磁盘),32(GPU)3(磁盘),4(GPU)
RGB 16 位量化 RGBRGB162
RG 压缩 BC5压缩双通道 (RG)RG81
RG 32 位未压缩双通道 (RG),精度非常高RG非常高324
R 压缩 BC4压缩单通道 (R)R40.5
R 8未压缩单通道 (R)R81
R 16 位未压缩单通道 (R),精度非常高R非常高162
阿尔法 8未压缩单通道 (A)一个81
RGBA 半场HDR,半精度 (FP16) RGBA,–64k 至 +64k 范围吉巴648
RGB 压缩 BC6HHDR,压缩 RGB,0 到 +64k 范围RGB81
RGB9e5 32 位共享指数浮点数HDR,量化 RGB,0 到 +64k 范围RGB324
RGB(A) 压缩 ASTC压缩 RGB 或 RGBA,大小和质量取决于块大小RGB 或 RGBA。低到高12x12: 0.89, 10x10: 1.28, 8x8: 2, 6x6: 3.56, 5x5: 5.12, 4x4: 812x12: 0.11, 10x10: 0.16, 8x8: 0.25, 6x6: 0.45, 5x5: 0.64, 4x4: 1.0
RGBA 压缩 ETC2压缩 RGBA吉巴81
RGBA 紧缩 ETC2Compressed RGBA,采用额外的磁盘上 Crunch 压缩。吉巴低到中可变可变
RGB + 1 位 Alpha 压缩 ETC2 4 位压缩 RGBA,Alpha 值完全不透明或完全透明吉巴40.5
RGBA 压缩 PVRTC 4 位压缩 RGBA,纹理要求为方形吉巴40.5
RGBA 压缩 PVRTC 2 位压缩 RGBA,纹理要求为方形吉巴20.25
RGB 压缩 ETC2压缩 RGBRGB40.5
RGB 压缩等压缩 RGBRGB40.5
RGB 紧缩等压缩 RGB,采用额外的磁盘上 Crunch 压缩。RGB可变可变
RGB 压缩 PVRTC 4 位压缩 RGB,纹理要求为方形RGB40.5
RGB 压缩 PVRTC 2 位压缩 RGB,纹理要求为方形RGB20.25
RG 压缩 EAC 8 位压缩双通道 (RG)RG81
R 压缩的 EAC 4 位压缩单通道 (R)R40.5
RGB(A) 压缩 ASTC HDRHDR,压缩 RGB 或 RGBA,大小和质量取决于块大小RGB 或 RGBA。低到高12x12: 0.89, 10x10: 1.28, 8x8: 2, 6x6: 3.56, 5x5: 5.12, 4x4: 812x12: 0.11, 10x10: 0.16, 8x8: 0.25, 6x6: 0.45, 5x5: 0.64, 4x4: 1.0

支持的纹理格式(按平台)

下表显示了 Unity 中可用的每种纹理格式以及支持它们的平台。

纹理格式窗户苹果操作系统Linux目录人造人iOS 和 tvOSWebGL (桌面浏览器)WebGL(iOS和Android浏览器)
RGB(A) 压缩 BC7是 (1)是 (1)是 (1)
RGBA 压缩 DXT5否 (3)部分 (2)
RGBA 紧缩的 DXT5否 (3)部分 (2)
RGBA 64 位部分 (6)
RGBA 32 位
RGBA 16 位
RGB 压缩 DXT1否 (3)部分 (2)
RGB 紧缩的 DXT1否 (3)部分 (2)
RGB 48 位部分 (6)
RGB 24 位
RGB 16 位
RG 压缩 BC5是的
RG 32 位部分 (6)
R 压缩 BC4是的
R 8部分 (5)部分 (5)部分 (5)
R 16 位部分 (6)部分 (6)是 (14)是 (14)
阿尔法 8
RGBA 半场部分 (7)部分 (7)部分 (7)
RGB 压缩 BC6H是 (1)是 (1)是 (1)
RGB9e5 32 位共享指数浮点数部分 (4)部分 (4)部分 (4)
RGB(A) 压缩 ASTC部分 (8)是 (10)是 (13 & 10)
RGBA 压缩 ETC2部分 (9)
RGBA 紧缩 ETC2部分 (9)
RGB + 1 位 Alpha 压缩 ETC2 4 位部分 (9)
RGBA 压缩 PVRTC 4 位否 (12)
RGBA 压缩 PVRTC 2 位否 (12)
RGB 压缩 ETC2部分 (9)
RGB 压缩等
RGB 紧缩等
RGB 压缩 PVRTC 4 位否 (12)
RGB 压缩 PVRTC 2 位否 (12)
RG 压缩 EAC 8 位部分 (9)
R 压缩的 EAC 4 位部分 (9)
RGB(A) 压缩 ASTC HDR部分 (11)部分 (11)部分 (11)

注意:

  1. 除了在DX11之前的GPU上,或者在使用WebGL或OpenGL时的macOS上。如果不支持,BC6H 纹理将在加载时解压缩为 RGBA 一半,BC7 将解压缩为 RGBA32。
  2. 在不支持 sRGB DXT 的 Web 浏览器上使用线性渲染,纹理在加载时被解压缩为 RGBA32。
  3. 采用 NVIDIA Tegra GPU 的 Android 设备除外; 这些确实支持 DXT/ BC 格式。
  4. OpenGL ES 2.0 / WebGL 1 上除外。
  5. 对于 OpenGL ES 2.0/ WebGL 1:需要 GL_EXT_texture_rg 扩展支持。
  6. 在 Android 上需要 GL_EXT_texture_norm16 或相应 Vulkan 功能。
  7. 对于 OpenGL ES 2.0/ WebGL 1:需要 OES_texture_half_float 扩展支持。
  8. 需要 Vulkan 或 GL_KHR_texture_compression_astc_ldr OpenGL ES 扩展。
  9. 除了在OpenGL ES 2.0上;ETC2 纹理被解压缩为 ETC2 回退在 Android 构建设置或 Android 选项卡上为特定于平台的覆盖指定的格式。
  10. Apple A7 芯片设备 (2013) 上除外。
  11. 安卓:需要GL_KHR_texture_compression_astc_hdr扩展名。iOS:需要 A13 或更高版本的芯片 (2019)。WebGL:需要WEBGL_compressed_texture_astc扩展名和HDR配置文件。如果不支持,纹理将解压缩为 RGB9E5 格式,从而丢失 Alpha 通道。
  12. 采用 Imagination PowerVR GPU 的 Android 设备除外; 这些确实支持 PVRTC 格式。
  13. 需要WEBGL_compressed_texture_astc扩展。
  14. 需要EXT_texture_norm16扩展和 WebGL 2。

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:Texture formats (mvrlink.com)

下一篇:Unity3D:Mipmap 介绍 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号