游戏引擎 源码-[{“

翻译”:[{“文本”:”

Cocos 引擎的最新里程碑,可自定义的数据渲染管线n

n

5月27-28日,为期三天的2023年GOTC全球开源技术大会(以下简称“大会”)在北京举行,由开放原子开源基金会、上海浦东软件园、Linux基金会亚太区和开源中国联合主办。开源教育培训、云原生等热门话题,畅谈开源未来,助力开源发展。

n

其中,在28日举行的“大后端趋势主题峰会”上,Cocos 引擎技术总监 Panda 和 Cocos 引擎架构师 Hyde 分享了“开源 3D 引擎里程碑:面向数据的自定义渲染管线”的话题。详细了解 Cocos 引擎渲染环境的基础设施:渲染图及其背后的设计理念,以及自定义数据渲染管线可以为开发人员带来什么。

n

n

Cocos是它明天将要去的地方,受益于开源社区,开源项目。Cocos 社区也有许多贡献者,从开发人员的角度来看,作为一个开源项目有很多用途。通过源代码,开发人员可以更好地了解引擎以及所有内容的实现方式,这有助于调试或从引擎设计中学习。

n其次,扩展

引擎和实现功能很容易游戏引擎 源码,Cocos 官方支持自定义引擎工作流程。第三,它很容易定制,即使引擎可能不是所有项目都完美无缺,但这些控制感对用户很重要。

n

n

如您所见,无论开发人员发布哪个平台,软件包中的所有内容都是 100% 可控的。开源帮助 Cocos 与开发者建立了信任,这要归功于他们的深度参与和对 Cocos 的所有贡献。

n

渲染图设计理念

n

渲染图是 Cocos 渲染环境的基础设施,有点类似于后端 React 等框架。我们希望通过声明式设计简化渲染环境的建立,让图片的实现更方便,更容易达到好的效果。Render Graph不是从天而降的,但也借鉴了从行业中吸取的一些经验教训。

游戏引擎 源码-[{“

n渲染

图概述了每个帧的渲染管线,简化了资源管理、软件重构、异步估计和资源重用。用户可以通过此套接字或接口更轻松地编译渲染模块,以获得更好的图像性能。开发人员还可以更轻松地调试和可视化渲染环境。

n

n

与往年的帧图设计不同,Cocos渲染图的设计更加数据驱动和数据导向,不仅包括每一帧的渲染过程,还包括场景的建立。

n

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

n

在这个构建流水线的过程中,因为它是声明式编程,所以 RenderGraph 的数据结构是通过 TS 或 JS 的脚显式建立的。它将更接近后端结构,例如Shadow DOM或Fabric。浏览器通常接收此结构来呈现网页。对于 Cocos 的渲染管线,我们进行了 3D 场景和后期效果渲染,因此我们受到了 React 的一些设计理念的启发。

n

这样,我们可以更好地推进整个环境创建和渲染的实现。由于我们已经有了渲染数据和场景数据的描述,因此我们可以对渲染图进行二次更改和转换。这是以前的游戏引擎或渲染引擎所没有的功能。

n

我们可以在没有用户感知的情况下做更多的事情。例如,调试、渲染过程的可视化、调试信息的显示。

n

n

在开发方法上,传统的帧图是用户通过编译回调函数完成渲染环境的建立,用户将建立的代码编译,传递给帧图组件,然后提交给硬件进行渲染。同时,调用用户的C++反弹来反向控制。

n

这样做有一些缺点,不能做太多的额外处理,因为只能调整用户的一些弹跳,引擎对弹跳内容的控制较弱,用户的写作弹跳对开发要求比较高。

n

Cocos 设计的逻辑是用户编译渲染环境的描述,直接生成渲染图数据等数据结构,然后交给流水线的执行层执行。这有点像我们为浏览器提供一些 DOM 数据来执行和渲染。整体数据流是一致的,整个实施过程比较直接,不会有反弹等理解困难。

n

n

Cocos的图与其他图的不同之处在于它具有叠加数据结构。最基本的是命令图是一个树结构。图的左半部分是光照通道,它执行一些场景光照,例如阴影、直接光照或间接光照估计。右半部分是后处理,我们的命令图通过编写脚本来说明此树结构。但对于渲染来说,仅靠这种结构是不够的,因为前后似乎有一些相互的数据依赖关系。

n

所以我们会在命令图的基础上叠加一层依赖图,比如中间的光辉纹理作为中间的数据交换,光照的结果会交给后期处理做更多的功效,比如泛光和色调映射。

n

底层的命令图,再是一层依赖图,带来更强的表现力和表达能力,达到更复杂的疗效。

n

n

上图是更复杂的渲染实现示例,包括深度预渲染和延迟渲染。例如,几何数据信息的收集在几何通道中完成,并输出到法线贴图、材质贴图,并在最后的光照阶段,将此信息聚合以进行估计。

n

每个节点都是一个结构化树,我们将有一个相应的有效无环图(DAG)来连接资源并呈现估计节点。

n

n

整体来看,Cocos 的流水线是基于 TS 的用户套接字,它有总的流水线对象,有点像 React 对象。

n

我们可以在里面改进,添加渲染通道,渲染队列,就像在 React 之上添加组件一样,我们希望整个套接字的使用更简单,即使是后端用户也可以构建复杂的渲染管线。

n

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

游戏引擎 源码-[{“

n

n

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

n

n

Cocos 引擎会做更多的估算,帮助用户得到他们想要的图片,我们会推断出整个估算的调度,并插入一些资源障碍。管道上所需的某些资源转换障碍可能需要图形知识才能理解。对于用户提供的图形数据,我们已经可以对渲染管线进行一些调整,以达到额外的功效,用户不需要更改代码,引擎的代码也不需要更改。

n

通过用户输入,我们可以直接插入一些新的执行过程,例如插入复制通道,复制一些照明或草图的结果,并在屏幕上渲染。这样的过程,不被用户感知,不需要编写额外的代码,可以改善用户开发体验。

n

对于引擎开发者来说,因为不需要改变整个前端的实现或者改进新流程,只需对输入数据做一些处理即可。这大大简化了发动机开发过程并节省了开发成本。

n

渲染图形编辑

n

以上是渲染图可视化编辑的效果。比如做 Bloom 相关的设置,开头节点之间的边缘就是表示它们之间的数据流,我们可以动态编辑图来影响功效。

n

n

Cocos 内部使用 Shader,需要做描述符排版,类似于后端 Flex 接口的排版。渲染需要使用着色器,需要使用纹理资源,并且需要为性能做一些优化工作,例如合并资源和重用资源。

n

如果用户很难自动进行布局,我们将通过手动算法帮助用户节省用户的资源和精力。

游戏引擎 源码-[{“

n

n

描述符布局图算法分为三个部分。首先,做一些信息总结到顶部。根据收集到的信息,将其合并和排版。最后,我们将排版描述符反向传播回原始着色器文件,进行一些模板替换,并修改着色器的描述符布局。这样的过程不被用户感知,同时可以达到更好的性能和功效。

n

自定义管道方案

n

n自定义管道

有很多应用场景,而 Cocos 是一个跨平台的引擎,对流水线的可扩展性和通用能力有着非常苛刻的要求。我们有很多GFX基础设施,包括Vulkan,Metal,Gles,WebGPU,支持许多图形API,并且具有良好的可扩展性。

n

Cocos 的底层管道运行在 Web 和所有原生平台上。基本流水线用于小游戏平台和Web应用,标准流水线可用于所有连接的设备、台式笔记本、车载电脑、云服务器。标准管道在本机平台上运行,具有更通用的估计功能,并且还将使用平台功能(如渲染子通道或帧缓冲提取)来提高性能并减少热量。

n对于基本管道,我们提供基本的光栅化渲染能力游戏引擎 源码,在

标准流水线上,有针对联通平台优化的基于平铺的光栅化渲染。

n

基本管道还支持可编程着色器、多重采样、前向照明渲染等。我们扩展了标准管线,使用了计算着色器、变速着色 VRS 和延迟渲染等技术。

n

基础流水线具有全平台部署、开发方便、代码量小等优点。标准流水线针对联通平台进行了非常优化,也可以在桌面平台上运行,功能更多,性能更高,帧率更低,这是硬件特性的结果。

n

n

上图是 Cocos 统一的跨平台渲染架构,底层是各个平台的图形 API。最重要的是GFX抽象层,设计是更现代的API设计,类似于Vulkan。下层是面向用户的管线混凝土层,流水线上方是编译特定渲染算法的过程,如前向渲染管线、延迟渲染管线等,最后由用户构建和设计渲染场景。

游戏引擎 源码-[{“

n

n

Cocos 原生适应下一代 Web 图形插孔 Web GPU。我们的架构基于 Wasm,它将渲染管道编译到 Wasm 中,并将其提供给 Typescript 进行调用。同时,Wasm渲染器调用WebGPU的JS API,可以充分利用WebGPU的图形功能。

n

n渲染管线

可以完全由用户自定义,并且是一个高度自由的渲染管道,主要目标是向用户充分暴露GPU硬件特性,让用户进行完全调用。它还支持主流渲染算法,例如前向渲染和延迟渲染。我们将进行一些程序化验证,以提高结果的可靠性和可用性。

n

我们会做一些自动推理来完成渲染的执行,用户不需要自动插入一些资源转换壁垒或同步工作。n在渲染算法

方面,主流渲染算法

如Bloom、HBAO、FSR、TAA等主流渲染算法目前都支持,还可以进行聚类光照。

n最后,我们

专用平台,在联通平台上,我们将使用基于平铺的延时渲染,并且还支持可编程混合混合。在高性能平台上,我们未来还可以实现 GPU 驱动的渲染加速和动态全局光照。

n

n

这只是 Cocos 自定义管线的开始,我们还有很多功能需要开发,例如光线追踪、桌面和连接的光线追踪、动态全局照明、云渲染等。上图是 Cocos 未来的一些监管方向,包括 AI 的能力,如集成推理引擎,结合 AI,在此基础上实现 DLSS 等超分辨率算法,以及材质、纹理模型数据压缩、图像风格化等功能。

n

过去是美好的

n

“,”

to“:”en“,”sentLen“:{”srcSentLen“:[34,1,1,14,173,30,5,103,76,5,14,30,41,46,5,40,40,5,14,36,48,5,25,52,43,34,5,57,39,25,5,14,89,5,31,5,68,36,21,58,5,29,50,23,5,27,26,5,14,88,28,5,70,5,76,30,42,5,14,39,26,45,47,37,5,128,5,69,5,5,14,35,59,5,49,5,14,54,5,88,5,74,5,14,37,65,5,14,62,33,66,5,64,39,5,49,24,5,23,30,67,5,15,61,5,47,5,15,35,14,18,77,28,5,17,15,52,68,5,34,52,85,5,61,5,32,56,5,29,60,5,15,38,44,68,5,15,35,52,59,5,15,67,23,31,5,58,5,68,5,74,43,5,15,71,96,5,12,14],“transSentLen”:[93,0,1,14,292,150,5,254,208,5,14,102,124,155,5,134,148,5,14,121,129,5,33,127,198,103,5,164,123,79,5,14,237,5,99,5,174,78,64,128,5,112,143,83,5,49,92,5,14,311,71,5,268,5,242,80,163,5,14,84,62,148,106,129,5,277,5,168,5,14,132,215,5,141,5,14,118,5,224,5,219,5,14,130,178,5,14,176,113,231,5,189,152,5,175,91,5,28,64,193,5,15,131,178,5,150,5,15,70,52,62,160,111,5,33,15,188,135,5,72,194,204,5,192,5,110,129,5,109,214,5,15,140,106,278,5,15,79,123,117,5,15,221,99,106,5,194,5,212,5,157,132,5,15,222,318,5,24,14]}}]}]

做一个游戏

并不容易游戏引擎 源码,通过学习编码和编程来构建一个游戏尤其困难,以及纯粹的盲目运气。但是,获得更多优质资源可能会为您节省很多弯路。

游戏引擎 源码-[{“

在竞标Minecraft开发商Mojang四年后,谷歌宣布将开源游戏的一些Java代码,供开发人员和玩家自由使用。Minecraft 是有史以来最受欢迎的游戏之一,迄今为止已售出 1.54 亿份,活跃用户为 9100 万。

开源代码

托管在 GitHub 上,并在 MIT 开源许可证下获得许可,这意味着开发人员可以自由使用开源代码。任何开发人员都可以进入项目,他们可以贡献代码,他们可以帮助改进游戏引擎。或者,如果他们正在制作自己的游戏游戏引擎 源码,他们不必重新绘制小模块。访问开源游戏库 – 从特别流行的游戏中尝试和测试了很多。

Mojang开源了两个独立的游戏库,第一个是Brigadier,它是Minecraft使用的命令引擎(命令解析器和调度程序),第二个是DataFixerUpper,顾名思义,它对Minecraft使用的数据很少。它也是整个Minecraft游戏引擎中最重要的部分,即使它不是很用户友好,它也是Minecraft中一切的基石。

游戏引擎 源码-[{“

Mojang计划在未来开源更多的库,它目前正在考虑的库是代号为Blaze3D的渲染引擎。

地址:

送书!

游戏引擎 源码-[{“

开源中国联合机械工业出版社为您带来《PHP高性能开发:基础、框架和项目实践》一书。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 游戏源码 游戏引擎 源码-[{“ https://www.wkzy.net/game/130224.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务