Unity Open Day 北京站-技术专场:深入理解 Entities Graphics

UnityDOTS技术解析:提升大规模场景渲染效率
文章介绍了Unity的DOTS技术,特别是EntitiesGraphics组件,它旨在解决大规模仿真和复杂场景渲染的挑战。EntitiesGraphics通过GPU数据持久模型和持久批次管理,减少了数据上传和渲染批次组织的开销,从而显著提升了渲染性能。此外,文章还讨论了其与传统Unity渲染管线的区别以及BatchRendererGroupAPI的应用,展示了在高-endlaptop上相比URP/HDRP的显著性能提升。
对于最新发布的Unity 2022 LTS,开发者们最关注的技术亮点莫过于DOTS:面向数据编程的技术栈,它能辅助开发者们实现大规模仿真及超复杂场景的渲染,创建更有雄心的游戏。在Unity技术开放日北京站技术专场中,Unity中国DOTS技术主管李中元先生深入讲解了DOTS的关键功能 Entities Graphics的工作思想及设计原理。
李中元:大家好!我是李中元,是Unity中国DOTS技术担当。
今天讲的大背景是DOTS1.0已经发布了,意味着可以把DOTS应用在项目里了。它跟之前最大的区别是它提供两年质保,当大家遇到BUG或者其他情况时,可以踊跃的把BUG提交给我们,会有专人负责修复。
今天的主题是《深入理解Entities Graphics》,这也是DOTS里非常基础的一个package,希望通过分享让大家了解它底层的运行机制。主要分三个内容:一是Entities Graphics的简介,二是它的架构设计,三是它的底层原理。

一、Entities Graphics 简介

Entities Graphics以前叫Hybrid Renderer,在DOTS1.0时它被改名成了“Entities Graphics”。为什么要改成 “Entities Graphics”?因为反映了它最基本的功能。
Hybrid Renderer有两个版本,第一个版本是随着MegaCity这个Demo发布的,当时DOTS还在比较前期的阶段,它需要做渲染方面的支持,所以Hybrid Renderer V1是为了MegaCity demo定制的一个版本;后来V2版本DOTS Graphics team把这个package完全重写掉了。Hybrid Renderer反映了它的本质,它不是“pure” DOTS renderer,它依然使用了像Mesh、Material、Shader这些我们传统Unity引擎里的数据结构,所以它是一个混合的模式。
这张图是最典型的使用SRP时在profiler见到的一个场景。当我们进行渲染时能看到这种大量绿色的标签,这些绿色的代表一些跟渲染相关的调用。当渲染压力比较重时,它们会随着渲染压力逐渐变长。这里面绿色的东西主要做两件事情,第一,把显卡需要的数据上传到GPU上,这样GPU才能访问它们;第二,组织batch,这些东西在显卡上怎么显示,需要在这里把它组织好。
这里面有明显的问题,我用红框标起来了,就是上面不管多忙,底下都一直在看戏,只有前面的一点在裁剪时有一点点工作,后面全程看戏。这种设计在当前的手机6核、8核,PC10核、20的大环境下,已经有点不合时宜了。
SRP和Hybrid Renderer V1的另外一个问题是在主线程组织Batch,然后每帧都要上传渲染状态。这里面还隐藏了一个问题,在多相机时这个问题会变得更严重。Hybrid Renderer V1在当时是定制的一个渲染管线,所以它会break掉一些东西,比如这个instancing关键字被break掉了,Shader Graph和材质的编辑也是特殊的流程。当时的Hybrid Renderer V1只支持了在HDRP在Megacity用到的这些feature,其他feature都是不能用的。
所以Entities Graphics package在这个大环境下,它提出了两个目标。一个是它要做GPU data persistent model,GPU数据只上传一次,这个只上传一次不是每帧上传一次,是全局只上传一次;第二是不需要每帧都组织Batch。刚才绿条里做的两个非常重的事情,都要把它变成一次性的,而不是每帧都要做的。这样在渲染时那些绿色的渲染任务会极大减少。
为了做到这个GPU persistent data model,就需要在ECS访问Shader需要的数据,相当于把CPU上的数据通过某种方式映射到GPU上去。因为我们有了GPU persistent data Model,这时候如果我们所渲染的数据发生了增加或者删除,怎么办?我们总不能把数据全部清空掉,然后重新再组织一遍、再上传一次,所以就有了Delta Update。Delta Update本身就是一个效率非常高的方式,什么东西发生了变化,只修改那部分,其他没有修改的部分不需要动,这个效率会有非常大的提高。第二个是Persistent Batches,Batches是说场景中物
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值