默认情况下,启用 Mipmap 串流后,场景中的所有摄像机都会使用 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 内存,请执行以下步骤:
内存预算用于 Mipmap 串流以及不使用 Mipmap 串流的所有 Mipmap 级别的纹理。例如,如果将内存预算 (Memory Budget) 设置为 100 MB,并且有 90 MB 的纹理不使用 Mipmap 串流,则 Mipmap 串流的内存预算为 10 MB。
为了避免超出内存预算,Unity 执行以下操作:
您可以使用最大级别缩减 (Max Level Reduction) 属性停止 Unity 删除小于特定级别的 Mipmap 级别。此值也是 Unity 首次启动时加载的 Mipmap 级别。例如,如果将最大级别缩减 (Max Level Reduction) 设置为 2,Unity 仅加载级别 2 及更大级别的 Mipmap 级别,并将它们保留在内存中。
Unity 必须将 Mipmap 级别保持在 GPU 内存中的最大级别缩减 (Max Level Reduction) 值之上。这可能意味着 Unity 超出了内存预算。
要估算项目的内存预算,请执行以下步骤:
这能够让您确保 Unity 有足够可用于场景中资源最密集区域的纹理内存,并防止纹理下降到较低的分辨率。如果您有额外的可用内存,可以设置更大的内存预算,以便 Unity 可以将场景中不可见的纹理数据保留在 GPU 缓存中。
注意:如果在 Editor 中使用 Texture.desiredTextureMemory,则总大小可能包括 Unity 用于渲染 Editor 窗口的纹理。
您可以使用以下 API 在运行时设置和控制内存预算:
QualitySettings.streamingMipmapsActive。