Version: Unity 6.0 (6000.0)
语言 : 中文
启用 Mipmap 串流
覆盖纹理的 Mipmap 级别

配置 Mipmap 串流

设置使用 Mipmap 串流的摄像机

默认情况下,启用 Mipmap 串流后,场景中的所有摄像机都会使用 Mipmap 串流。

在单个摄像机上禁用 Mipmap 串流

请执行以下步骤:

  1. 在场景中选择一个摄像机。
  2. 检视面板 (Inspector) 窗口中,选择添加组件 (Add Component) > 串流控制器 (Streaming Controller)
  3. 禁用串流控制器 (Streaming Controller) 组件。

在单个摄像机上启用 Mipmap 串流

请执行以下步骤:

  1. 转到编辑 (Edit) > 项目设置 (Project Settings) > 质量 (Quality)
  2. 纹理 (Textures) 部分的 Mipmap 串流 (Mipmap Streaming) 下,禁用添加所有摄像机 (Add All Cameras)
  3. 向摄像机添加串流控制器 (Streaming Controller) 组件,并确保已启用。

设置摄像机使用的 Mipmap 级别

使用串流控制器 (Streaming Controller) 组件中的 Mipmap 偏差 (Mipmap Bias) 设置可强制 Unity 加载比 Mipmap 串流自动选择的 Mipmap 级别更小或更大的 Mipmap 级别。

Unity 将 Mipmap 偏差 (Mipmap Bias) 值添加到摄像机视图中的纹理中的 Mipmap 级别。例如,如果将 Mipmap 偏差 (Mipmap Bias) 设置为 2,并且 Mipmap 串流为纹理选择 Mipmap 级别 1,Unity 会加载 Mipmap 级别 3 (1 + 2)。

还可以使用 StreamingController.streamingMipmapBias API 来控制此设置。

设置纹理的内存预算

要设置 Unity 用于纹理的最大 GPU 内存,请执行以下步骤:

  1. 转到编辑 (Edit) > 项目设置 (Project Settings) > 质量 (Quality)
  2. 纹理 (Textures) 部分中,以 MB 为单位设置内存预算 (Memory Budget) 值。

内存预算用于 Mipmap 串流以及不使用 Mipmap 串流的所有 Mipmap 级别的纹理。例如,如果将内存预算 (Memory Budget) 设置为 100 MB,并且有 90 MB 的纹理不使用 Mipmap 串流,则 Mipmap 串流的内存预算为 10 MB。

为了避免超出内存预算,Unity 执行以下操作:

  • 加载纹理的较低分辨率 Mipmap 级别。这可能会导致纹理突变或加载缓慢。
  • 从 GPU 内存中删除未使用的 Mipmap 级别,为所需的 Mipmap 级别腾出空间。

您可以使用最大级别缩减 (Max Level Reduction) 属性停止 Unity 删除小于特定级别的 Mipmap 级别。此值也是 Unity 首次启动时加载的 Mipmap 级别。例如,如果将最大级别缩减 (Max Level Reduction) 设置为 2,Unity 仅加载级别 2 及更大级别的 Mipmap 级别,并将它们保留在内存中。

Unity 必须将 Mipmap 级别保持在 GPU 内存中的最大级别缩减 (Max Level Reduction) 值之上。这可能意味着 Unity 超出了内存预算。

估算内存预算

要估算项目的内存预算,请执行以下步骤:

  1. 在项目运行时,请使用 Texture.desiredTextureMemory API 获取 Unity 加载的纹理的总大小。
  2. 内存预算 (Memory Budget) 设置为略高于该值。

这能够让您确保 Unity 有足够可用于场景中资源最密集区域的纹理内存,并防止纹理下降到较低的分辨率。如果您有额外的可用内存,可以设置更大的内存预算,以便 Unity 可以将场景中不可见的纹理数据保留在 GPU 缓存中。

注意:如果在 Editor 中使用 Texture.desiredTextureMemory,则总大小可能包括 Unity 用于渲染 Editor 窗口的纹理。

在运行时设置内存预算

您可以使用以下 API 在运行时设置和控制内存预算:

启用 Mipmap 串流
覆盖纹理的 Mipmap 级别