Unity 纹理串流(Mipmap Streaming)完全深潜:AUP 异步上传管线与显存预算实战
一、为什么需要纹理串流:开放世界的显存噩梦2018 年前的 Unity 项目有一个"隐形炸弹"——所有纹理的 Mipmap 全部加载到显存。一张 2048×2048 的纹理,开启 Mipmap 后占 2.7 MB 显存(Mip0 2 MB + Mip1 0.5 MB + 更高等级几百 KB)。一个普通 3D 场景几十张纹理,显存轻松破 GB。到了开放世界时代,这个炸弹爆了——《原神》《塞尔达:旷野之息》级别的开放世界动辄数千张纹理,如果全量加载:显存占用爆炸(4 GB 显存轻松撑满)。加载时间爆长(几百 MB 纹理从硬盘读入 + GPU 上传需要十几秒)。玩家"卡 Loading"。纹理串流(Mipmap Streaming)的核心思想:摄像机看见的纹理才加载对应 Mipmap Level,看不见的留在硬盘——显存里只装"此刻被看见"的纹理数据。这是 Unity 2018.3 推出的官方方案,也是开放世界项目的标配。二、Mipmap 的内存账本:为什么是 4/3 倍理解串流前,必须先理解 Mipmap 的内存账本。2.1 Mipmap 是什么Mipmap 是同一张纹理的多级下采样版本——Mip0 是原图、Mip1 是 Mip0 的 1/2 缩放、Mip2 是 Mip1 的 1/2,依此类推。