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

Mipmap 多级渐远纹理:原理、作用与优化

2026-08-24

什么是 Mipmap

Mipmap(多级渐远纹理)是一种纹理预处理技术,为同一纹理生成一系列逐渐降低分辨率的版本。在渲染时,根据物体在屏幕上的大小选择合适的 Mipmap 级别,从而减少锯齿、摩尔纹,并提高缓存效率。Mipmap 广泛应用于实时渲染,是纹理过滤的重要组成部分。

Mipmap 的原理

当物体远离摄像机时,其在屏幕上占据的像素数减少,如果仍使用原始高分辨率纹理,多个纹素会映射到一个屏幕像素,导致采样不足,产生锯齿和闪烁(摩尔纹)。Mipmap 通过预先生成低分辨率版本(每个级别尺寸减半,如 256x256、128x128、64x64...),在渲染时选择与屏幕像素密度匹配的级别,确保每个屏幕像素对应约一个纹素,从而消除伪影。

生成与存储

Mipmap 通常在纹理导入时由引擎或工具自动生成。生成过程通过对上一级别进行滤波(如平均、盒式滤波或更高质量的 Kaiser 滤波)得到下一级别。Mipmap 链会增加约 33% 的内存占用(所有级别总面积约为原始纹理的 4/3 倍)。

在 GPU 中,Mipmap 级别以纹理数组形式存储,采样时由硬件根据纹理坐标的导数(ddx/ddy)自动计算合适的级别,或使用三线性过滤在相邻级别之间插值。

纹理过滤与 Mipmap

Mipmap 与纹理过滤结合使用:

  • **双线性过滤**:在单个 Mipmap 级别内进行双线性插值。
  • **三线性过滤**:在两个相邻 Mipmap 级别之间进行插值,过渡更平滑,但性能稍差。
  • **各向异性过滤**:处理倾斜表面的模糊,与 Mipmap 协同工作,提供更清晰的纹理。

在着色器中,可以使用 `tex2Dlod` 或 `textureLod` 手动指定 Mipmap 级别,用于特殊效果。

Mipmap 的优势与注意事项

**优势**:

  • 减少远处物体的锯齿和摩尔纹。
  • 提高纹理缓存命中率,提升性能。
  • 降低带宽消耗,因为采样低分辨率纹理。

**注意事项**:

  • 内存增加约 33%,对于内存受限的平台(如移动端)需要权衡。
  • 某些纹理(如 UI、精确图案)可能不适合 Mipmap,可能导致模糊。
  • 不正确的 Mipmap 生成可能导致纹理偏移或亮度变化(需在线性空间处理)。

常见问题

Mipmap 会占用多少内存?

Mipmap 所有级别总面积约为原始纹理的 4/3 倍,即增加约 33% 内存。例如,1024x1024 纹理的 Mipmap 链总大小约为 1.33MB(假设每像素 1 字节)。

为什么远处物体会闪烁?

如果没有 Mipmap,远处物体采样高分辨率纹理时,多个纹素映射到一个像素,导致采样不足和闪烁。启用 Mipmap 后,选择低分辨率级别可以消除闪烁。

Mipmap 和 LOD 有什么关系?

Mipmap 是纹理的 LOD(细节层次),类似于网格的 LOD。两者都是根据距离调整细节,以优化性能。

如何生成 Mipmap?

在 Unity 中,导入纹理时勾选 Generate Mip Maps;在 Unreal 中,纹理默认生成 Mipmap。也可以使用图像处理软件或 API 手动生成。

移动端应该使用 Mipmap 吗?

移动端内存受限,但 Mipmap 对性能有提升,通常建议为 3D 场景纹理启用 Mipmap,但可以限制最高级别或使用压缩格式。

常见问题

Mipmap 会占用多少内存?

Mipmap 所有级别总面积约为原始纹理的 4/3 倍,即增加约 33% 内存。

为什么远处物体会闪烁?

没有 Mipmap 时,远处物体采样高分辨率纹理导致采样不足,产生闪烁。启用 Mipmap 选择低分辨率级别可消除闪烁。

Mipmap 和 LOD 有什么关系?

Mipmap 是纹理的 LOD(细节层次),类似于网格的 LOD,都是根据距离调整细节以优化性能。

如何生成 Mipmap?

在 Unity 中导入纹理时勾选 Generate Mip Maps;Unreal 默认生成。也可用图像软件或 API 手动生成。

移动端应该使用 Mipmap 吗?

移动端通常建议为 3D 场景纹理启用 Mipmap,但需权衡内存,可以限制级别或使用压缩格式。