使用 Mipmap 流式传输优化 GPU 纹理内存
Mipmap 流式传输简介
使用 Mipmap 流式传输来限制 GPU 内存中的纹理大小。
Mipmap 流式传输的工作原理
对于 相机场景中特定视点的图像创建组件。输出要么绘制到屏幕上,要么作为纹理捕获。 更多信息
见 术语表 视图中的每个纹理,Unity 会自动计算并加载仅到特定级别为止的 Mipmap 级别,而不是加载所有级别。这意味着 Unity 只会将每个纹理中的一些 Mipmap 级别从磁盘传输到 CPU 和 GPU。
Unity 会加载尽可能高分辨率的 Mipmap 级别,但如果较高分辨率的 Mipmap 级别不适合您设置的内存限制,则会使用较低级别的 Mipmap 级别。有关设置内存限制的更多信息,请参阅 配置 Mipmap 流式传输。
Unity 会在 GPU 上缓存 Mipmap 级别,以避免重复从磁盘和 CPU 加载 Mipmap 级别。
限制
- Unity 不支持对 地形场景中的地貌。地形游戏对象会在场景中添加一个大型平面,您可以使用地形检查器窗口来创建详细的地貌。 更多信息
见 术语表 纹理进行 Mipmap 流式传输,因为 Unity 需要始终使用最高分辨率的 Mipmap 级别。
- Unity 不支持使用纹理数组、立方体贴图六个方形纹理的集合,可以表示环境中的反射或几何体后面绘制的天空盒。六个方格构成了围绕物体的虚构立方体的面;每个面代表沿世界轴方向(上、下、左、右、前和后)的视图。 更多信息
见 术语表 数组或 3D 纹理进行 Mipmap 流式传输。
- 如果您使用 Graphics.DrawMeshNow 等 API 来渲染纹理,Unity 将没有计算 Mipmap 级别所需的信息。使用 Texture2D.requestedMipmapLevel API 手动设置纹理的 Mipmap 级别,或禁用纹理上的 Mipmap 流式传输。
- 对于不使用用于纹理平铺和偏移的特殊
_ST
属性的纹理,Unity 可能无法计算正确的 Mipmap 级别。有关 _ST
属性的更多信息,请参阅 在 Cg/HLSL 中访问着色器属性。
使用 Mipmap 流式传输优化 GPU 纹理内存