周正龙
CocosCocos 引擎主架构师
周正龙毕业于上海交通大学,在新加坡国立大学获得博士学位。曾任职于巨人网络、搜狐畅游、腾讯天美等公司,负责过3D MMO端游、手游的图形引擎、渲染算法研发工作。现在Cocos担任引擎主架构师,负责渲染管线的设计研发工作。 演讲内容摘要:最近,Render Graph和Frame Graph在现代引擎中得到了广泛的应用。我们提出了一种新的方法,将可编程渲染管线和面向数据的设计相结合,以简化 Cocos 引擎中的管线设置和执行。 以前的Render Graph实现通常选择代码驱动的方法,这需要熟练的编程技能,并且不能进行可视化编辑。在 Cocos 中,我们使用面向数据的Render Graph来呈现渲染管线和场景描述。Render Graph可以使用脚本语言(如 JavaScript)在运行时构建,也可以离线生成。在管线执行时,将编译Render Graph,并自动分配和处理所有所需的资源、状态和资源屏障。Cocos 引擎将使用这些生成的信息进行渲染。 面向数据的Render Graph相对传统管线更易于使用且高度可定制。由于它以数据形式存储,因此一个Render Graph可以转换为另一个或由编辑器进行可视化,这使得其用途远远超出了渲染。例如,它可以描述用于程序内容生成的异构计算任务。 另一个好处是用户可以根据特定平台优化渲染管线。Cocos 引擎是一个跨平台,包括浏览器、Windows、Mac、Linux、Android、iPhone、Switch 和微信小游戏等。以前我们很难为这么多平台实现图形效果并针对平台优化性能,可扩展性是我们遇到的问题。有了Render Graph,我们可以为不同平台设计不同的算法,并以更快的速度推出渲染功能。 随着游戏变得越来越复杂,用户发现他们很难创造想要的视觉效果。我们认为引擎的责任是简化这个过程并承担重任。我们的Render Graph设计花费了很多精力来为用户做尽可能多的工作。例如,在设置渲染通道时,我们将实时计算通道依赖关系,而用户需要做的就是根据所需的顺序添加渲染通道(Render Pass)。 在这次演讲中,我们详细解释了我们的面向数据的管线设计并展示了其应用。我们希望它能激发开发人员的灵感,即Render Graph可以做更多的事情而不仅仅是渲染。