Wiki
896 words
4 minutes
MipMap Streaming
Updated 2025-02-27
是什么
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 Frame、Max Level Reduction、Max File IO Requests 会影响系统更新速度与抖动风险:
- 处理量太小,快速转镜头时清晰纹理跟不上
- 降级上限太保守,预算不足时难以及时回收显存
- IO 请求太激进,可能把磁盘读取压力顶上去
适用场景
- 开放场景或大地图,远近景切换明显
- 高分辨率贴图很多,但同屏真正需要全分辨率的纹理有限
- 移动端或主机上显存预算紧张,需要把贴图峰值压住
常见负优化场景
- 场景很小、贴图总量本来就完全放得下,此时只增加管理开销
- 频繁切镜头、瞬移或高速移动,导致 mip 不断被回收和重新加载
- 预算设得过低,出现“贴图一直发糊”或清晰度爬升很慢
- 把本不该流送的关键纹理也交给系统,导致首屏或过场阶段短暂模糊
【注意】UI、始终贴脸显示的关键纹理、或者加载后必须立刻清晰的资源,通常要谨慎评估是否交给流送系统。
与 Texture Streaming 的关系
很多资料会把 Texture Streaming 和 MipMap Streaming 混着说。更稳妥的理解是:
Texture Streaming是项目级开关和预算系统MipMap Streaming是具体让纹理按 mip 层级动态加载/卸载的机制
所以判断它是否真的生效,不能只看纹理导入面板,还要确认项目质量设置里的全局开关和预算。
实际排查路径
- 先在真机上记录开启前后的纹理内存峰值,而不是只看 Editor。
- 用
Profiler/Memory Profiler看纹理占用是否明显下降。 - 在高频转镜头、传送、开大地图等场景观察是否出现持续模糊或抖动。
- 如果收益不明显,再回头检查:是不是场景本来就不缺纹理内存,或者关键纹理优先级设置不合理。
【技巧】这类功能不要只看平均值。真正有价值的是“峰值显存是否压下去了、尖刺是否减少了、清晰度是否还能接受”。
MipMap Streaming
https://fuwari.vercel.app/wiki/performance/mipmap-streaming/