品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

天天最资讯丨Cocos 引擎最新里程碑,面向数据的可定制渲染管线

2023-06-17 11:12:50 来源:COCOS

5 月 27 日至 28 日,为期两天的 2023 GOTC 全球开源技术峰会(以下简称“大会”)于上海举行,大会由开放原子开源基金会、 上海浦东软件园、Linux 基金会亚太区和开源中国联合发起,大会期间,与会者一起探讨元宇宙、安全、3D 引擎、eBPF、Web3.0、区块链等热门技术主题,以及开源治理、汽车软件、AIGC、AI 编程、开源教育培训、云原生等热门话题,共话开源未来,助力开源发展。

其中,在 28 日举办的 “大前端趋势专题论坛”上,Cocos 引擎技术总监 Panda 和 Cocos 引擎架构师 Hyde 进行了以《开源 3D 引擎里程碑:面向数据的自定义渲染管线》为题的分享。详细介绍了Cocos 引擎渲染环境的基础设施:Render Graph 及其背后的设计思想,以及面向数据的自定义渲染管线能够为开发者带来哪些好处和便利。

Cocos 取得今天的成绩,受益于开源社区、开源项目。Cocos 社区也有许多贡献者,从开发人员的角度来看,作为一个开源项目有很多好处。有了源代码,开发者可以更好地理解引擎,了解一切是如何实现的,这有助于调试或从引擎设计中学习。


(资料图片)

其次,很容易扩展引擎,实现功能,Cocos 有官方支持的自定义引擎工作流。第三,容易定制,即使引擎不可能完美地适用于所有项目,但用户的这种掌控感非常重要。

如图所示,无论开发者发布什么平台,包中的一切都是 100% 可控。开源帮助 Cocos 与开发者建立了信任,也感谢开发者的深入参与以及对 Cocos 的所有贡献。

Render Graph 设计思想

Render Graph 是Cocos 的渲染环境的基础设施,有点类似前端 React 这类框架。我们希望通过声明式的设计来简化渲染环境的构建,让画面的实现更方便,更容易达到好的效果。Render Graph 不是从天而降,也参考了业界的一些经验教训。

Render Graph 概括了每帧的渲染流程,可以做到简化资源管理,简化软件构建、简化异步计算与资源复用。用户可以更容易地通过这个接口或者界面来进行渲染模块的编写,达到更好的画面表现。开发者也可以更轻松地实现调试以及渲染环境的可视化。

区别于以往的 Frame Graph 的设计,Cocos 的 Render Graph 的设计更加数据驱动,是面向数据的架构,不仅会包括每帧的渲染流程,还会包括场景的构建。

它包含了渲染需要的完整的信息,可以做更进一步的全局优化。

在这个搭建管线的过程当中,因为是声明式的编程,也是通过 TS 或者 JS 的脚本来显式地构建 RenderGraph 的数据结构。会比较接近前端的 Shadow DOM 或者 Fabric 这样的结构。浏览器一般会拿到这个结构来进行网页的渲染。对于 Cocos 的渲染管线来说,我们是做三维场景以及后期特效的渲染,所以还是受了一些 React 的设计思想启发。

这样做我们可以更好地解耦整个环境的构建与渲染的实现。因为已经有了渲染数据、场景数据方面的描述,我们可以对 Render Graph 进行二次修改、变换。这是以往的游戏引擎或者渲染引擎所不具备的能力。

我们可以在用户没有感知的情况下,做出更多的效果。比如调试、渲染流程的可视化、Debug 信息的显示。

开发方式方面,传统的 Frame Graph 是用户通过编写回调函数来完成渲染环境的构建,用户将编写构建的代码,传给 Frame Graph 组件,再提交给硬件进行渲染。在此同时去调用用户的 C + + 的回调来进行控制反转。

这样做有一些弊端,并不能做太多的额外处理,因为只能去调用户的一些回调,引擎对回调内容的控制力弱,而且用户写回调对开发的要求是比较高的。

Cocos 设计的逻辑,是用户编写渲染环境的描述,直接生成一个 Render Graph Data 这样的数据结构,再交给管线的执行层来进行执行。有点像我们提供一些 DOM 数据,给浏览器进行执行以及渲染。整体数据的流向是一致的,整个执行过程比较直接,不会有回调之类的造成理解上的一些困难。

Cocos 的 Graph 区别于其他 Graph,它有叠加的数据结构。最基础的是 Command Graph 是树状结构。图左半部分是光照 Pass,会做一些场景方面的光照,比如阴影、直接光照或者间接光照的计算。右半部分是做后处理,我们的 Command Graph 通过编写这些脚本来说明这样的树状结构。但是对渲染,只有这样结构是不太够的,因为前后其实有一些互相的数据依赖关系。

所以我们在 Command Graph 的基础上会叠加上一层 Dependency Graph,比如中间会有 Radiance Texture 作为中间的数据交换,把光照的结果交给后处理,去做更多的效果,比如说 Bloom、Tone Mapping。

底层的 Command Graph,再叠上一层 Dependency Graph,带来更强的表现力以及表达能力,实现比较复杂的效果。

上图是一个比较复杂的渲染实现示例,包括了深度的预渲染、延迟渲染。比如在几何的 Pass 里面完成几何数据信息的收集,输出到法线贴图、材质贴图,在最后的光照阶段,汇聚这些信息进行计算。

每个节点都是有结构化的一颗树,我们会有对应的有效无环图(DAG)来连接资源以及渲染计算节点。

整体上 Cocos 的管线是基于 TS 的用户接口,上面有总的管线的对象,有点像 React 的对象。

我们可以在上面进行构建,添加渲染通道,渲染队列,就像在 React 上面添加 Component ,我们希望整个接口的使用更简单,哪怕是前端用户也可以构建复杂的渲染流程。

如果想做一些画面比较好的三维显示效果或渲染效果,不仅仅游戏或者图形开发程序能够使用 Cocos 引擎,前端开发者也可以用这样的模式来进行开发。

因为底层的 Graph 是面向数据的结构,更利于编写分析它的编译器。通过分析算法,我们可以在这个 Graph 基础上做很多的事情,比如用户会有输入,它的光照的通道,输出到光照贴图,最后进行后期处理。

Cocos 引擎会做更多的计算来帮助用户得到想要的画面,我们会推导出整个计算的调度情况,插入一些资源 Barrier。管线里面需要的一些资源转化的屏障,可能需要图形方面的知识才能理解。对于用户提供的 Graph 数据,我们已经可以做一些渲染管线方面的调整,实现额外的效果,用户不需要修改代码,引擎的代码也不需要修改。

用户输入我们可以直接插入一些新的执行流程,比如说插入拷贝的 Pass,把一些光照的结果或者说绘制的结果拷贝,渲染到画面上。这样的流程,用户是没有感知的,也不需要编写额外的代码,可以提升用户开发的体验。

对于引擎开发者来说,因为不需要改动整个后端的实现或者建立新的流程,只是对输入数据做一些处理。这样就大幅简化了引擎开发的过程,节省了开发成本。

Render Graph 编辑

上面是 Render Graph 的可视化编辑的效果。比如做 Bloom 相关的设置,节点原本 Pass 之间的边是表示它们之间的数据流向,我们可以动态地进行 Graph 的编辑影响效果。

Cocos 内部执行会使用 Shader,需要做 Descriptor 排版的工作,类似前端 Flex 界面的排版。需要用到 Shader 进行渲染,用到贴图资源,为了性能需要做一些优化工作,比如说合并资源,复用资源。

如果让用户来去手动做布局非常困难,我们会通过自动的算法来帮助用户,节省用户的资源和精力。

Descriptor Layout Graph 算法分为三部分。首先做一些信息汇总到最上层。根据收集的信息,来进行合并以及排版。最后我们会把排版完的 Descriptor 反向传播回原来的 Shader 文件,做一些模板上的替换,修改 Shader 的 Descriptor 布局。这样的过程用户是没有感知的,同时可以达到更好的性能效果。

自定义管线应用场景

自定义管线有很多应用场景,Cocos 是跨平台引擎,针对管线的伸缩能力以及通用能力的要求非常严苛。我们有很多 GFX 的基础设施,包括 Vulkan、Metal、Gles、WebGPU,支持众多的图形 API, 而且有比较好的伸缩性。

Cocos 的基础管线可以跑在 Web 以及所有的原生平台上。基础管线用在小游戏平台,Web 应用上,标准管线可以用到所有的移动设备、桌面电脑、车载电脑、云服务器。标准管线跑在原生平台上,有更多的通用计算能力,也会用到平台的特性,比如利用 Render Subpass 或者 Framebuffer Fetch 来提高性能,降低发热。

对于基础管线,我们提供基础的光栅化渲染能力,在标准管线上,有针对移动平台优化的 Tiled-based 光栅化渲染。

基础管线也支持可编程着色器、多重采样、前向光照渲染等能力。在标准管线上我们扩充了通用计算、包括 Compute Shader、 可变速率着色 VRS 以及延迟渲染等技术。

基础管线具备全平台部署、易于开发、代码体积小等优势。标准管线是针对移动平台特别优化,也可以在桌面平台跑,功能更丰富,能达到更高的性能以及更低的功耗,这是利用硬件特性的结果。

上图是 Cocos 统一的跨平台渲染架构,底层是各平台的图形 API。在此之上是 GFX 抽象层,设计是比较偏向于现代化的 API 设计,类似 Vulkan。再上层是面向用户的管线抽象层,管线之上是编写具体的渲染算法的流程,比如前向渲染管线以及延迟渲染管线,最后是用户进行渲染场景的构建和设计。

Cocos 原生适配了下一代 Web 图形接口 Web GPU。我们的架构是以 Wasm 为基础的,将渲染管线编译成 Wasm,再交给 Typescript 进行调用。与此同时的 Wasm renderer,调用 WebGPU 的 JS API,能够充分利用 WebGPU 的图形能力。

渲染管线可以完全交给用户进行自定义,是高度自由的渲染管线,主要的目标是将 GPU 硬件特性完全暴露给用户,让用户进行充分的调用。也支持主流的渲染算法,比如前向渲染、延时渲染。我们会进行部分的程序化验证,来提高结果方面的可靠性以及可用性。

我们还会做一些自动化的推导来完成渲染的执行,用户不需要去手动插入一些资源变换的 Barrier 或者同步工作。

渲染算法方面,目前支持 Bloom、HBAO、 FSR、TAA 等主流渲染算法,也可以进行 Clustered Lighting。

最后我们对平台做了特化,在移动平台上我们会采用 Tile-based 的延时渲染,也支持 Programmable Blend 可编程的混合。在高性能的平台上,我们未来也可以实现GPU-Driven 的渲染加速,动态的全局光照。

以上只是 Cocos 自定义管线的开始, 我们还有大量功能有待开发,例如光线追踪,桌面以及移动平台的光线追踪,动态全局光照,云渲染等等。上图是 Cocos 今后的一些调研方向,也包括 AI 方向的能力,例如集成推理引擎,结合 AI,在此基础之上实现 DLSS 这样的超分辨率的算法,以及材质、贴图模型数据压缩、图像风格化等功能。

往期精彩

标签:

(责任编辑:)

相关文章

天天最资讯丨Cocos 引擎最新里程碑,面向数据的可定制渲染管线

​5月27日至28日,为期两天的2023GOTC全球开源技术峰会(以下简称“大会

2023-06-17 11:12:50

麦收进度已过九成!稳产保丰,小麦主产区有这些举措

​农业农村部小麦机收调度显示,目前全国麦收进度已过九成。今年麦收期间

2023-06-17 10:42:58

6月17日起!济宁城际公交J960机场线路恢复原线路运行

​资料图大众网记者闫文文济宁报道大众网记者6月16日从济宁城际公交集团

2023-06-17 10:09:05

每日动态!时尚非遗让展会 “潮”起来

​精美绝伦的土族盘绣、点亮河湟文化的湟源排灯、独具特色的剪纸艺术……

2023-06-17 09:26:47

天天看点:暑假家长对孩子的评价_假期表现评语大全

​1、寒假作业,谁家的孩子寒假能积极完成老师布置的作业,比以前更活泼

2023-06-17 09:03:07

动力源:6月16日融资买入161.56万元,融资融券余额9483.63万元 动态

​6月16日,动力源(600405)融资买入161 56万元,融资偿还200 33万元,

2023-06-17 08:23:39

世界简讯:糖醋蒜的做法最正宗的做法_正宗啤酒鸭火锅

​你们好,最近小未来发现有诸多的小伙伴们对于糖醋蒜的做法最正宗的做法

2023-06-17 08:05:03

全球消息!OnePlus作为一家公司在内核源代码发布方面有着悠久的历史

​在万普拉斯6在上周宣布。它推出了一天后,万普拉斯在他们的论坛宣布了A

2023-06-17 07:02:07

时代电气(03898.HK):6月16日南向资金减持31.81万股_环球观速讯

​6月16日北向资金减持31 81万股时代电气(03898 HK)。近5个交易日中,

2023-06-17 06:33:16

每日关注!生物过滤脱除烟气中NOx的中温好氧反硝化分子机制_关于生物过滤脱除烟气中NOx的中温好氧反硝化分子机制介绍

​生物过滤脱除烟气中NOx的中温好氧反硝化分子机制,关于生物过滤脱除烟

2023-06-17 05:44:07

等腰梯形的面积公式怎么算 等腰梯形的面积公式

​1、梯形的面积公式:(上底+下底)×高÷2。2、等腰梯形、直角梯形和一

2023-06-17 03:11:19

跪着爱躺着爱 破脑袋_破脑袋 世界百事通

​1、您好。2、您可以查找:红九、关就、我是苏素、唐七公子、艾小图等作

2023-06-17 01:54:21

焦点热门:“老带新”学习包粽子后,他们将祝福送给了更多人

​长江日报大武汉客户端6月16日讯(记者刘晨玮通讯员李贞)“提前给您送

2023-06-16 23:57:33

全球热资讯!红楼梦重要人物和经历概括_曲无忆的人物经历

​1、江湖中武功最高的人是谁?——燕南飞的支持者与傅红雪的支持者,恐

2023-06-16 22:57:42

【天天快播报】lol10.15版本卡特天赋出装(中单卡特玩法介绍)

​1、目前单人卡特在天赋上选择征服者,满身征服者的卡特在团战中可以打

2023-06-16 22:13:25

世界今亮点!养老变”坑老”,老年人该如何防范非法集资陷阱?

​“投资养老”可获得高额回报?当心有诈!

2023-06-16 21:49:16

每日头条!天津市和平区:一揽子政策为民营经济送福音

​天津市和平区:一揽子政策为民营经济送福音,工商户,民营经济,市场主体,

2023-06-16 21:10:15

广西招生考试院严正声明! 天天播资讯

​广西壮族自治区招生考试院关于广西普通高校招生咨询会的严正声明由我院

2023-06-16 20:50:41

焦点观察:复星医药推动创新医疗技术本土化 国产达芬奇手术机器人即将面世

​复星医药今天宣布,联营公司直观复星“胸腹腔内窥镜手术控制系统”成功

2023-06-16 20:09:48

当前要闻:菜苗一天中什么时候浇水好 菜苗一天中什么时候浇水

​1、浇水时间:通常都是选晴天的早晨或者是傍晚浇水,这样菜苗可更好地

2023-06-16 19:42:22

全新DS 4将于7月13日上市 外观/内饰全面升级

​易车讯我们从相关渠道获悉,全新DS4将于7月13日上市。全新DS4早在2021

2023-06-16 19:25:17

【全球速看料】ipv4无网络访问权限怎么解决手机_ipv4无网络访问权限怎么解决

​1、IPV4无网络访问权限就进行组策略更新:1 打开 "程序 ",在搜索窗口中

2023-06-16 18:59:01

全球信息:英国监管机构批准亚马逊(AMZN.US)收购请求 iRobot(IRBT.US)盘前大涨22%

​周五,英国竞争监管机构批准了亚马逊公司以17亿美元收购Roomba吸尘器制

2023-06-16 18:18:33

韩媒:韩国年轻人迷上中国App无法自拔 实在太好用了

​韩媒:韩国年轻人迷上中国App无法自拔实在太好用了,韩国,中国,韩媒,app

2023-06-16 18:00:31

2023公安部第三研究所网络安全实战能力评价发布会隆重举行 环球热门

​6月15日下午,“2023公安部第三研究所网安中心网络安全实战能力评价发

2023-06-16 17:53:50

CCTV5直播!国足迎战缅甸 扬科维奇放豪言 球市遇冷遭看衰

​6月16日,国际足球友谊赛在大连梭鱼湾球场进行,中国队VS缅甸队,国足

2023-06-16 17:32:06

无限恐怖基因锁体系_无限恐怖之完美基因_环球信息

​1、不能T病毒原液通过楚轩改良版后能够开启一阶基因锁,如果没有楚轩改

2023-06-16 16:56:43

图说南阳 | 喜获丰收

​位于新野县歪子镇的河南可喜食品股份有限公司选择优良品种,采取严格管

2023-06-16 16:22:25

世界速看:6月16日石油沥青期货行情上涨

​2023年6月16日石油沥青期货行情上涨,沥青主力合约2310开盘于3557元 吨

2023-06-16 16:02:51

未来漫威电影的超级反派有哪些?一个比一个强大!_焦点速读

​《雷神4》的阵容是非常强大的,除了新加入的女雷神之外,就连银河护卫

2023-06-16 15:54:47