Wiki
896 words
4 minutes
MipMap Streaming

是什么#

MipMap Streaming 会根据当前相机真正需要的纹理尺寸,只保留更合适的 mip 层级,减少显存和纹理带宽压力。它本质上是 Unity 的 Texture Streaming 方案在纹理资源上的具体落地。

【重点】它节省的通常是纹理相关的 GPU 内存,而不是“免费”降低所有开销。系统需要额外做可见性评估、mip 选择和磁盘/内存调度,因此会带来少量 CPU 开销。

生效前提#

  • 纹理本身开启了 MipMap,并在导入设置里启用 Streaming Mip Maps
  • 项目在 Quality Settings 中开启 Texture Streaming
  • 纹理用于 3D 场景中的 Mesh Renderer 等可被流送系统评估的渲染对象
  • 如果需要按相机单独控制,可以在相机上添加 Streaming Controller

关键配置点#

1. 内存预算#

Texture Streaming Memory Budget 决定系统愿意为流送纹理保留多少预算。预算过小会让画面长期停留在低 mip,预算过大则节省效果有限。

2. 纹理优先级#

导入面板中的 Mip Map Priority 会影响预算紧张时谁优先保留更高分辨率。角色脸部、近景交互物体、始终贴近镜头的重要贴图,通常要给更高优先级。

3. 每帧处理量与降级上限#

Renderers Per FrameMax Level ReductionMax File IO Requests 会影响系统更新速度与抖动风险:

  • 处理量太小,快速转镜头时清晰纹理跟不上
  • 降级上限太保守,预算不足时难以及时回收显存
  • IO 请求太激进,可能把磁盘读取压力顶上去

适用场景#

  • 开放场景或大地图,远近景切换明显
  • 高分辨率贴图很多,但同屏真正需要全分辨率的纹理有限
  • 移动端或主机上显存预算紧张,需要把贴图峰值压住

常见负优化场景#

  • 场景很小、贴图总量本来就完全放得下,此时只增加管理开销
  • 频繁切镜头、瞬移或高速移动,导致 mip 不断被回收和重新加载
  • 预算设得过低,出现“贴图一直发糊”或清晰度爬升很慢
  • 把本不该流送的关键纹理也交给系统,导致首屏或过场阶段短暂模糊

【注意】UI、始终贴脸显示的关键纹理、或者加载后必须立刻清晰的资源,通常要谨慎评估是否交给流送系统。

与 Texture Streaming 的关系#

很多资料会把 Texture StreamingMipMap Streaming 混着说。更稳妥的理解是:

  • Texture Streaming 是项目级开关和预算系统
  • MipMap Streaming 是具体让纹理按 mip 层级动态加载/卸载的机制

所以判断它是否真的生效,不能只看纹理导入面板,还要确认项目质量设置里的全局开关和预算。

实际排查路径#

  1. 先在真机上记录开启前后的纹理内存峰值,而不是只看 Editor。
  2. Profiler / Memory Profiler 看纹理占用是否明显下降。
  3. 在高频转镜头、传送、开大地图等场景观察是否出现持续模糊或抖动。
  4. 如果收益不明显,再回头检查:是不是场景本来就不缺纹理内存,或者关键纹理优先级设置不合理。

【技巧】这类功能不要只看平均值。真正有价值的是“峰值显存是否压下去了、尖刺是否减少了、清晰度是否还能接受”。

MipMap Streaming
https://fuwari.vercel.app/wiki/performance/mipmap-streaming/
Author
Qingswe
Published at
2025-02-27
License
CC BY-NC-SA 4.0