版本:Unity 6 (6000.0)
语言:英语
异步加载纹理和网格数据
检查网格是否使用异步上传管道

纹理和网格加载

Unity 可以从磁盘加载纹理和网格Unity 的主要图形基元。网格构成了 3D 世界的大部分。Unity 支持三角形或四边形多边形网格。Nurbs、Nurms、细分曲面必须转换为多边形。 更多信息
参见 词汇表
数据,并以两种不同的方式将其上传到 GPU:同步或异步。这两个过程分别称为同步上传管道和异步上传管道。

当 Unity 使用同步上传管道时,它在加载和上传数据时无法执行其他任务。这会导致应用程序中出现明显的暂停。当 Unity 使用异步上传管道时,它可以在后台加载和上传数据时执行其他任务。

如果纹理或网格符合异步上传管道的条件,Unity 会自动使用异步上传管道。如果纹理或网格不符合异步上传管道的条件,Unity 会自动使用同步上传管道。

工作原理

同步和异步上传管道之间的主要区别在于 Unity 在构建时保存数据的位置,这会影响 Unity 在运行时加载数据的方式。

在同步上传管道中,Unity 必须在单个帧中加载纹理或网格的元数据(标头数据)和纹素或顶点数据(二进制数据)。在异步上传管道中,Unity 仅需在单个帧中加载标头数据,并且可以在后续帧中将二进制数据流式传输到 GPU。

在同步上传管道中

  • 在构建时,Unity 会将网格或纹理的标头和二进制数据都写入同一个 .res 文件。
  • 在运行时,当应用程序需要纹理或网格时,Unity 会将该纹理或网格的标头数据和二进制数据从 .res 文件加载到内存中。当所有数据都在内存中时,Unity 然后将二进制数据从内存上传到 GPU。加载和上传操作主要在主线程上进行,在一个帧内完成。

在异步上传管道中

  • 在构建时,Unity 将标头数据写入 .res 文件,将二进制数据写入单独的 .resS 文件。
  • 在运行时,当应用程序需要纹理或网格时,Unity 将标头从 .res 文件加载到内存中。当标头在内存中时,Unity 然后使用固定大小的环形缓冲区将二进制数据从 .resS 文件流式传输到 GPU。Unity 使用多个线程在多个帧内流式传输二进制数据。请注意,在 Unity 已经了解 GPU 硬件的一些主机平台上,Unity 会跳过环形缓冲区,直接加载到 GPU 内存中。

其他资源

异步加载纹理和网格数据
检查网格是否使用异步上传管道