版本:Unity 6 (6000.0)
语言 : 英语
启用 Mipmap 流式传输
覆盖纹理的 Mipmap 等级

配置 Mipmap 流式传输

设置哪些相机使用 Mipmap 流式传输

默认情况下,当您启用它时,场景中的所有相机一个组件,用于创建场景中特定视点的图像。输出要么绘制到屏幕上,要么作为纹理捕获。 更多信息
请参阅 词汇表
使用 Mipmap 流式传输。

在单个相机上禁用 Mipmap 流式传输

请按照以下步骤操作

  1. 在场景中选择一个相机。
  2. 检查器窗口中,选择添加组件>流式控制器
  3. 禁用流式控制器组件。

在单个相机上启用 Mipmap 流式传输

请按照以下步骤操作

  1. 转到编辑>项目设置>质量
  2. 纹理部分的Mipmap 流式传输下,禁用添加所有相机
  3. 向相机添加流式控制器组件,并确保它已启用。

设置相机使用的 Mipmap 等级

使用流式控制器组件中的Mipmap 偏差设置强制 Unity 加载比 Mipmap 流式传输自动选择的 Mipmap 等级更小或更大的 Mipmap 等级。

Unity 会将Mipmap 偏差值添加到相机视图中纹理的 Mipmap 等级。例如,如果您将Mipmap 偏差设置为 2,而 Mipmap 流式传输为纹理选择了 Mipmap 等级 1,则 Unity 将加载 Mipmap 等级 3 (1 + 2)。

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

设置纹理的内存预算

要设置 Unity 用于纹理的最大 GPU 内存,请按照以下步骤操作

  1. 转到编辑>项目设置>质量
  2. 纹理部分,以 MB 为单位设置内存预算值。

内存预算用于 Mipmap 流式传输和所有不使用 Mipmap 流式传输的纹理的 Mipmap 等级。例如,如果您将内存预算设置为 100 MB,而您有 90 MB 的不使用 Mipmap 流式传输的纹理,则 Mipmap 流式传输的内存预算为 10 MB。

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

  • 加载纹理的较低分辨率 Mipmap 等级。这会导致纹理弹出或加载缓慢。
  • 从 GPU 内存中删除未使用的 Mipmap 等级,以腾出空间用于所需的 Mipmap 等级。

您可以使用最大级别减少属性来阻止 Unity 删除小于特定级别的 Mipmap 等级。此值也是 Unity 在首次启动时加载的 Mipmap 等级。例如,如果您将最大级别减少设置为 2,则 Unity 只会加载级别 2 及更大的 Mipmap 等级,并将它们保留在内存中。

Unity 必须将高于最大级别减少值的 Mipmap 等级保留在 GPU 内存中。这可能意味着 Unity 超出了内存预算。

估计内存预算

要估计项目的内存预算,请按照以下步骤操作

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

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

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

在运行时设置内存预算

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

启用 Mipmap 流式传输
覆盖纹理的 Mipmap 等级