网易首页 > 网易号 > 正文 申请入驻

优化加载性能:了解异步上传管线AUP

0
分享至

没有人喜欢看到加载界面,你是否知道可以快速调整Async Upload Pipeline异步上传管线(AUP)的参数来有效提高加载速度。

本文将详细介绍如何通过AUP加载网格和纹理,这将有效提升加载速度,甚至能实现超过2倍的性能提升效果。我们将从技术角度介绍AUP的工作原理,以及应该使用哪些API来充分利用AUP。

Asset Upload Pipeline资源上传管线的最新优化实现在Unity 2018.3 beta中提供。让我们首先了解AUP应该在什么时候使用以及加载过程的工作原理。

何时使用Async Upload Pipeline

Unity 2018.3之前,AUP仅处理纹理。从Unity 2018.3 beta开始,AUP可以加载纹理和网格,但有部分例外情况,可读写纹理、可读写网格和压缩网格都不使用AUP。

请注意:Unity 2018.2中的纹理Mipmap流也使用AUP。

加载过程如何工作

在构建过程中,纹理或网格对象会写入序列化文件,大型二进制数据的纹理或顶点数据会写入附带的.resS文件,这样的配置应用于玩家数据和资源包。

分离对象和二进制数据能更快地加载序列化文件,通常该文件包含多个小型对象,而且此后还能从.resS文件流式加载大型二进制数据。

当纹理或网格对象反序列化后,它会向AUP的指令队列提交一个指令。当该指令完成时,纹理或网格数据会上传到GPU,于是该对象可以被集成到主线程。

网格和纹理数据为构建进行序列化时的配置

在上传过程中,.resS文件中的大型二进制数据会被读取到固定大小的环形缓冲区中。当数据进入内存后,数据会在渲染线程上以时间切片的方式上传到GPU。环形缓冲区的大小和时间切片的持续时间这二个参数可通过修改来影响系统行为。

AUP对每个指令会执行以下过程:

  1. 等待环形缓冲区中所需内存可用。

  2. 从源.resS文件中读取数据到分配的内存。

  3. 执行后期处理过程,例如:纹理解压、网格碰撞生成、每个平台的修复等。

  4. 以时间切片的方式在渲染线程进行上传。

  5. 释放环形缓冲区内存。

多个指令可以同时进行,但是所有指令必须在共享的环形缓冲区中分配所需的内存。当环形缓冲区被填满时,新指令会等待,这种等待不会造成主线程阻塞或影响帧率,它只会减慢异步加载过程。

这些影响总结如下:

没有AUP

AUP

影响

内存使用

从默认堆读取数据时分配内存

固定大小的环形缓冲区

减小高内存标记

上传过程

在数据可用时上传

使用固定时间切片进行分期上传

无障碍上传

后期处理

在加载线程执行,该过程会阻碍加载线程

在后台的作业执行

更快的加载速度

可调整加载参数的公共API

为了充分使用Unity 2018.3的AUP,以下是三个可以在运行时调整该系统的参数。

1

QualitySettings.asyncUploadTimeSlice

该参数设定渲染线程中每帧上传纹理和网格数据所用的时间总量,以毫秒为单位。当异步加载操作进行时,该系统会执行二个该参数大小的时间切片,该参数的默认值为2毫秒。

如果该值太小,可能会在纹理/网格的GPU上传时遇到瓶颈。而该值太大的话,会造成帧率陡降。

2

QualitySettings.asyncUploadBufferSize

该参数设定环形缓冲区的大小,以MB为单位。当上传时间切片在每帧发生时,要确保在环形缓冲区有足够的数据利用整个时间切片。

如果环形缓冲区太小,上传时间切片会被缩短。Unity 2018.2的环形缓冲区默认大小为4MB,Unity 2018.3中提高至16MB。

3

QualitySettings.asyncUploadPersistentBuffer

该标识在Unity 2018.3加入,它决定在完成所有待定读取工作时,是否释放上传时使用的环形缓冲区。

分配和释放该缓冲区经常会产生内存碎片,因此通常将其保留为默认值True。如果需要在未加载时回收内存,可以将该值设为False。

这些设置可以通过脚本API或QualitySettings菜单调整。

示例工作流程

下面使用默认2ms时间切片和4MB环形缓冲区,查看通过AUP上传大量纹理和网格时的工作负载。

由于是加载过程,每个渲染帧有2个时间切片,所以应得到4毫秒的上传时间。性能分析器的数据表示,我们只使用了大约1.5毫秒。

在上传完成后,AUP会立即发出新的读取操作,因为环形缓冲区中有了可用内存。这表示我们需要更大的环形缓冲区。

现在尝试增加环形缓冲区的大小,由于正处于加载界面,提高上传的时间切片也是个不错的方法。

下面是使用16MB环形缓冲区和4毫秒时间切片的效果。

现在可以看到,我们几乎将所有渲染线程时间用于上传,只在每次上传之间的短暂时间渲染帧。

下面是以不同上传时间切片和环形缓冲区大小处理示例工作量时所用的加载时间。

该测试运行于MacBook Pro,CPU为2.8GHz Intel Core i7,系统是OS X El Capitan。上传速度和I/O速度会因不同平台和设备而异。该工作量是我们在内部用于性能测试的Viking Village示例项目的一个子集。

因为还加载着其它对象,所以我们无法获得不同数值的准确性能优势。但是,在这种情况下,从4MB/2MS的设置改为16MB/4MS的设置后,加载纹理和网格的速度变成了原来的2倍。

使用这些参数进行测试得到以下结果。

为了优化示例项目的加载时间,我们应该使用以下设置。

QualitySettings.asyncUploadTimeSlice = 4

QualitySettings.asyncUploadBufferSize = 16

QualitySettings.asyncUploadPersistentBuffer = true

建议

优化纹理和网格加载速度的常用建议如下:

  • 选择不会导致掉帧的最大QualitySettings.asyncUploadTimeSlice。

  • 在加载界面时,可以临时提高QualitySettings.asyncUploadTimeSlice。

  • 使用性能分析器来检查时间切片的利用率。时间切片在性能分析器中会显示为AsyncUploadManager.AsyncResourceUpload。如果时间切片没有完全利用的话,就提高QualitySettings.asyncUploadBufferSize。

  • 使用更大的QualitySettings.asyncUploadBufferSize会提高加载速度,所以如果内存足够的话,请将其从16MB提高至32MB。

  • 将QualitySettings.asyncUploadPersistentBuffer保留为true,除非有理由在未加载时减少运行时内存的使用。

FAQ

问题1:在渲染线程上,发生时间切片上传的频率是多少?

回答:时间切片上传在每个渲染帧发生一次,在异步加载操作时发生二次。VSync会影响该管线。当渲染线程等待VSync时,可以进行上传。

如果以16ms的帧运行,且其中一帧延长的话,例如变为17ms,就需要等待15ms的VSync。通常情况下,帧率越高,上传时间切片的发生频率越高。

问题2:什么内容可以通过AUP上传?

回答:

  • 不可读写的纹理会通过AUP上传。

  • Unity 2018.2中,纹理Mipmap会通过AUP流式上传。

  • Unity 2018.3中,只要网格未压缩而且未启用读取或写入,网格也会通过AUP上传。

问题3:如果环形缓冲区的大小不足以保存上传的数据,例如非常大的纹理,会发生什么?

回答:上传指令大于环形缓冲区时,会等待环形缓冲区完全耗尽,然后重新分配环形缓冲区以适应较大的分配量。当上传完成后,环形缓冲区会重新分配为原始大小。

问题4:同步加载API是如何工作的?例如:Resources.Load,AssetBundle.LoadAsset等。

回答:同步加载调用使用AUP,它会阻挡主线程,直到异步上传操作完成。所使用的加载API类型并不重要。

小结

希望大家利用异步上传管线AUP加速你的游戏加载速度,更多Unity最新功能介绍尽在Unity官方中文论坛(UnityChina.cm)!

推荐阅读

  • Unity UI性能优化技巧

  • WebAssembly基准测试:加载时间和性能

  • Unity性能基准测试

  • Unity Labs : AutoLOD自动化性能提升的实验

  • UPA性能分析工具使用详解

  • Unity影视动画示例项目发布

  • 使用Shader Graph着色器视图制作动画材质

  • Unity 2018.3地形功能更新介绍

官方活动

Unity官方教师培训报名火热进行中

Unity将在10月22-26日,举办为期5天的专业的Unity官方教师培训课程,诚邀广大教师与Unity一同学习分享最新技术![了解详情...]

报名地址:

https://connect.unity.com/events/2018jiaoshipeixun

优惠活动|Unity订阅新起航,开启您的创作之旅

现在访问Unity在线商店(store.unity.com),成功订阅Unity Pro专业版、Unity Plus加强版即可享受全新增值服务组合。11月18日之前订阅,更有指定插件资源限时赠送。[了解详情...]

活动地址:https://store.unity.com/cn

点击“阅读原文”访问Unity官方中文论坛

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
斗胆为郭德纲说几句

斗胆为郭德纲说几句

亮见
2026-08-13 15:27:12
日本人早已心知肚明:中日若开战,中国绝不只计较眼前一场战事

日本人早已心知肚明:中日若开战,中国绝不只计较眼前一场战事

比利
2026-08-14 07:48:09
特朗普刚喊“海峡归我”,霍尔木兹海峡出收费新规,伊朗阿曼联手

特朗普刚喊“海峡归我”,霍尔木兹海峡出收费新规,伊朗阿曼联手

男人吻女人是一种口福
2026-08-16 17:35:14
医生调查:若50岁前没患这4种疾病,以后患癌的几率或微乎其微?

医生调查:若50岁前没患这4种疾病,以后患癌的几率或微乎其微?

读懂世界历史
2026-07-29 11:52:03
全程无懈可击!梦百合杯申真谞稳健控盘,90%胜率完美碾压芈昱廷

全程无懈可击!梦百合杯申真谞稳健控盘,90%胜率完美碾压芈昱廷

L76号
2026-08-16 15:15:31
美国已保不住日本,俄罗斯通告全球:中国的一切都在按照计划进行

美国已保不住日本,俄罗斯通告全球:中国的一切都在按照计划进行

深度解析热点
2026-08-15 10:12:03
周末,7家公司发布利好公告

周末,7家公司发布利好公告

21世纪经济报道
2026-08-16 07:28:54
从特区变成“特困”,曾和深圳同为特区,这个城市为何扶不上墙?

从特区变成“特困”,曾和深圳同为特区,这个城市为何扶不上墙?

史料布籍
2026-08-15 21:53:40
95岁高龄身体硬朗无基础病!伺候一个月,我终于发现他的长寿秘诀

95岁高龄身体硬朗无基础病!伺候一个月,我终于发现他的长寿秘诀

刘哥谈体育
2026-08-15 12:20:52
随着梅州客家0-1、广州豹3-0、延边龙鼎3-1,中甲最新积分榜出炉

随着梅州客家0-1、广州豹3-0、延边龙鼎3-1,中甲最新积分榜出炉

侧身凌空斩
2026-08-15 21:29:21
终于有经济学家批评体制内退休金太高、加剧代际矛盾,评论区炸锅

终于有经济学家批评体制内退休金太高、加剧代际矛盾,评论区炸锅

慧翔百科
2026-06-23 08:47:02
又一架歼35量产机升空,通体散发着银色光泽,越来越像歼20

又一架歼35量产机升空,通体散发着银色光泽,越来越像歼20

巅峰高地
2026-08-15 23:07:03
阿富汗大乱?走投无路的塔利班,喊话美国,把之前的烂招又翻出来

阿富汗大乱?走投无路的塔利班,喊话美国,把之前的烂招又翻出来

一曲一场談
2026-08-15 20:08:08
吃牛肉成了美国人的“奢侈消费”

吃牛肉成了美国人的“奢侈消费”

大国老记老顾
2026-08-15 11:31:35
56岁徒步者南太行遇难!身份曝光:长城巡查员 守护者为何倒在野山

56岁徒步者南太行遇难!身份曝光:长城巡查员 守护者为何倒在野山

记录生活日常阿蜴
2026-08-16 05:29:25
国乒惨败仅一天,邓亚萍赛后发言一针见血,孙颖莎退赛原因曝光!

国乒惨败仅一天,邓亚萍赛后发言一针见血,孙颖莎退赛原因曝光!

米果说识
2026-08-16 16:34:08
陈治珍主任:煮一碗苹果水,一清内热,二养脾胃,三补津液,鼻炎、咳嗽、不长个的孩子,越早喝越好!

陈治珍主任:煮一碗苹果水,一清内热,二养脾胃,三补津液,鼻炎、咳嗽、不长个的孩子,越早喝越好!

蜡笔小小子
2026-07-23 13:48:08
刘晓庆私密聊天记录全网疯传,律师:转发的每个人可能都违法了

刘晓庆私密聊天记录全网疯传,律师:转发的每个人可能都违法了

蜉蝣说
2026-08-15 23:47:44
某211高校一讲师为了评副教授,自费给学校20万经费做了一个横向项目,结果只报销出5万!

某211高校一讲师为了评副教授,自费给学校20万经费做了一个横向项目,结果只报销出5万!

超级数学建模
2026-08-15 22:37:31
五羊本田HRD125贵四千却首月卖爆的底层原因是什么

五羊本田HRD125贵四千却首月卖爆的底层原因是什么

生活魔术专家
2026-08-16 03:59:25
2026-08-16 19:04:49
Unity incentive-icons
Unity
Unity中国官方帐户
2503文章数 6735关注度
往期回顾 全部

科技要闻

210亿美元,黄仁勋投了马斯克

头条要闻

日本自民党"四驾马车"集体拜鬼 臭名昭著的汉奸也现身

头条要闻

日本自民党"四驾马车"集体拜鬼 臭名昭著的汉奸也现身

体育要闻

1-4!39岁梅西双手抱头:点球不进+2中柱

娱乐要闻

李小冉疑承认离婚 多次强调“一个人”

财经要闻

事关8万亿养老金!长周期考核落地中

汽车要闻

杨洋成001号车主 岚图追光S正式上市

态度原创

家居
亲子
本地
公开课
军事航空

家居要闻

2026建博会(广州) 公装联探展交流活动

亲子要闻

有唇裂又有腭裂应该什么时候做手术?

本地新闻

黄景藏用半刀泥刻瓷都魂

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

乌媒:乌克兰出现由日本人组成的战斗分队 与俄军作战

无障碍浏览 进入关怀版