Version: Unity 6.0 (6000.0)
语言 : 中文
虚拟纹理的缓存管理
虚拟纹理错误材质

将纹理标记为“仅虚拟纹理”

此功能为实验性功能,尚未准备好用于生产环境。未来可能会对功能和文档进行更改或移除。

在 Unity 编辑器中,您可以将纹理标记为仅由虚拟纹理 (Virtual Texturing) 使用。这样可以优化内存使用量和场景加载时间,并降低构建的大小。要将纹理标记为仅由虚拟纹理使用,请打开其纹理导入器并启用仅虚拟纹理 (Virtual Texture Only)

在实践中,当使用虚拟纹理系统时,应将尽可能多的纹理标记为仅虚拟纹理 (Virtual Texture Only),从而最大限度地利用这些优势。请注意,如果您将纹理标记为仅虚拟纹理 (Virtual Texture Only),则不能将它与项目中的常规纹理采样器一起使用。在编辑器中,您可能可以将它与常规纹理采样器一起使用,因为会出现低分辨率预览,但如果您随后构建播放器,则会发生错误。

工作原理

默认情况下,当您在 Unity 编辑器中加载场景时,编辑器会将所有引用的纹理加载到 CPU 和 GPU 内存中。Unity 编辑器无法将纹理从磁盘流式传输到 GPU 内存,但串流虚拟纹理(Streaming Virtual Texturing,SVT)可以将纹理从 CPU 内存流式传输。如果您将纹理标记为仅虚拟纹理 (Virtual Texture Only),这意味着在场景加载时,编辑器仅将其加载到 CPU 内存中,然后从该纹理中提取图块并按需将其流式传输到 GPU 内存中。

在具有许多高分辨率纹理的项目中,这会显著减少 Unity 编辑器中的 GPU 内存使用量和场景加载时间。因此,最好将尽可能多的纹理标记为仅虚拟纹理 (Virtual Texture Only),以确保 SVT 系统仅将其从 CPU 流式传输。

如果未将纹理标记为仅虚拟纹理 (Virtual Texture Only),然后在播放器中将其与虚拟纹理系统一起使用,SVT 系统会在 CPU 和 GPU 内存中均保留纹理的副本。

标准纹理制件

默认情况下,Unity 将 Shader Graph 中采样的所有纹理作为标准纹理制件添加到构建中。此外,虚拟纹理系统将所有纹理堆栈纹理导入到平铺串流文件中,Unity 也将其包含在构建中。

  • 如果您将纹理标记为仅虚拟纹理 (Virtual Texture Only),Unity 不会将其作为标准纹理制件包含在内,而仅将其包含在平铺串流文件中。
  • 如果您未将纹理标记为仅虚拟纹理 (Virtual Texture Only),Unity 会将其包含在构建中两次,一次作为标准纹理制件,一次将其包含在平铺串流文件中。

请注意,如果您将纹理标记为仅虚拟纹理 (Virtual Texture Only),但在播放器中将其用作标准纹理,则播放器构建将失败。

虚拟纹理的缓存管理
虚拟纹理错误材质