• 周六. 12月 4th, 2021

「干货知识共享」《秦时明月全球》手游游戏怎样用Unity定制化渲染管线?

adminqw17

10月 16, 2021

11月16日晚,主题风格为“自主创新思,享将来”的我国Unity网上技术性交流会宣布拉开序幕。大会上,腾讯官方魔方工作室工程师职称外交部部长以“《秦时明月全球》手游游戏的定制渲染管线”为主题风格发布演说,详细介绍了《秦时明月全球》手游游戏怎样依靠Unity完成定制渲染管线技术性,实际包含照相机与颜色空间、深度图、Grab Pass、后处理和多灯源好多个层面。

下列是演说內容(有选节):

小伙伴们好!我是来自于腾讯官方魔方工作室的外交部部长。今日为各位介绍的是《秦时明月全球》手游游戏的定制渲染管线。

《秦时明月全球》手游游戏是一款大中型MMO手游游戏。最先给各位展现一下游戏里面残月谷的一段副本作战,全部作战全过程融合Unity的TimeLine,大家做好了一镜到底,无缝拼接转换的作战和特效的表达形式。

今日主要是给各位产生《秦时明月全球》定制化渲染管线技术性有关的一些详细介绍。关键分多个层面,包含照相机与颜色空间、深度图、Grab Pass、后处理和多灯源这几类。

《秦时明月全球》中根据照相机和颜色空间主要表现的准备工作,主要是屏幕分辨率的分离出来,UI超清,情景动态性,均衡实际效果与高效率。

我们在全部手机3d游戏全球中,常常会根据PBR的超清的线性空间制做,可是传统的UI工艺美术平常习惯在Gamma室内空间工作中,造成两侧的工作内容有一些矛盾。UI的工艺美术不太融入线性空间的步骤,都不太可用线性空间下的色调在许多人的自产自销专用工具里制做。

可是,大家游戏里面要运用在线性空间下的步骤。为了更好地它们的统一,大家会将开展分离出来,把UI开展超清的像素表明,情景开展实时控制,情景中应用线性空间的步骤,UI应用Gamma室内空间的步骤开展绘制,那样就可以确保情景根据差异的型号、不一样的具体表现开展一个动态性屏幕分辨率的调节,确保UI的高清化。与此同时也使UI的资金能够在Gamma室内空间下完成恰当的表明,确保游戏里面情景的线性空间的展现和UI的Gamma室内空间的表明能够在一个恰当的工作流程下工作中。

大家的历程便是情景中应用一个线性空间的表达形式,它有直接的照相机区开展绘制,与此同时在与UI照相机开展blender,輸出到显示屏上。随后情景区域的摄像头开展Gamma校准,而UI自身也是在Gamma室内空间的步骤开展作业的,因此它不用Gamma校准。

下面再讲一下大家根据深度图的更新改造。

Unity为大家出示了深度1Pass这一全过程,协助开发人员能够在游戏活动中更快的某一环节获得深度图来开展绘制及取样深度1开展3D渲染。

《秦时明月全球》完成了定制化的更新改造,在非全透明物件中假如必须应用深度图,便会选用深度1Pass这类方法去获得深度图,假如在非透明化的物品下不用应用深度图,大家便会选用深度图获得的方法,立即从深度1Buffer中复制出去深度图开展应用,那样能够合理地减小附加的DC导致的3D渲染耗费,尤其是对一些千元智能机或是是针对DC尤其敏锐的手机上而言,这类应用方法高效率会高些。融合这2种方法,大家便会更有效地应用Unity的深度图。

我们在Unity的PC版、Unity的Editor,包含iOS版本号都是会应用旋转的Depth这类构造来表明深度1Buffer,可是在安卓应用软件,因为OpenGL ES的限定,并沒有应用这个方法。为了更好地统一这一方法,大家完成了更新改造,在安卓应用软件也应用深度1旋转的这一部分应用深度1Buffer。

关键因素取决于,大家的工艺美术,尤其是副本室内设计师和实体模型师在开展副本设计方案和财产设计方案的情况下,她们几乎是在PC服务平台或是是在非手机端开展副本的搭配及其副本的布局,那样常常会产生一些由于经纬度难题,造成副本进到到具体的手机上或是是挪动端版本号上,尤其是安卓系统的服务平台,因为精密度的难题,会产生一些副本上显示信息的缺陷。这个时候美术师或是是副本室内设计师就必须不断调节副本的构造,来确保表明实际效果的恰当,相对性而言是一个悠长用时的全过程,由于手机端要涉及到手机上端APK的装包,这种全过程都是会危害到全部副本制做的进展。

为了更好地统一这一方式,大家就在安卓系统端也采用了深度1旋转的技术性,确保与在PC端及其iOS端应用一样的Buffer解决方式,那样就可以极大地减轻副本室内设计师在制造环节由于深度1矛盾造成的表明中的缺陷,统一副本设计方案中由于平台化导致的精密度难题导致的表明上的缺陷。总体而言,减少了副本制做的困难及其周期时间。

下边再讲一下《秦时明月全球》定制管道中有关Grab Pass的定制全过程。

最先,Unity自身的Grab Pass是依照传统化的方式,如果是同样的名称取名,它会运用同一张Grab Pass,如果是不一样的名称取名,它会各自采用不一样的Grab Pass。如果是新项目中应用不小心,便会产生许多 Grab Pass导致的一些RT的猛增,造成运行内存猛增的难题。《秦时明月全球》这里边运用了单一的调节方法,能够合理地减轻这类处理方法。

最先,它会搜集要求,Grab Pass的Renderer,严禁绘制,随后估算每一个Renderer的由此可见性,分辨必须什么RT,与此同时依据实际的要求,我们可以采用全屏幕分辨率的RT,还可以采用不一样状况缩小屏幕室内空间的一些RT姿势,那样能够合理地操纵RT的屏幕分辨率,节省运行内存。

在全部绘制环节,运用Unity给予的CommandBuffer,我们可以更快地提取显示屏,而且在指定的环节会去运用这一Grab截屏,随后完成特别的实际效果。

下边介绍一下大家《秦时明月全球》中定制管道的后处理步骤。

《秦时明月全球》应用的是Unity为大家带来的后处理部件,传统式的后处理部件全部的具体步骤是如此的方式,最先根据一个显示屏室内空间的屏幕分辨率,通过多个后处理的步骤,进到到一个Unity给予的UberShader,随后再通过FinalPass全部的环节,为了更好地兼容传统式的后处理步骤OnRender Image的办法来确保传统式的全屏幕解决绘制表明,最后再绘制到显示屏上,随后结合到UI照相机表明到显示屏上。

https://www.qwh168.com/

能够看见全部流程会形成很多的RT转换,等同于硬件配置FBO的转换,在Tile GPU上面导致另外的存储空间的回读,特性很多地耗费,并且最少会出现两到三次的全屏的实际操作,那样会极大地影响到总体的特性,促使后处理环节会是一个在《秦时明月全球》新项目中特别关键的特性耗费点。

根据这一,大家提升了后处理的步骤,减少了它全部3D渲染的全过程。最先,大家除掉了UberShader的全过程,将UberShader及FinalPass和绘制显示屏这一全过程三个全屏幕的实际操作统一到一起,与此同时又将传统化的根据显示屏室内空间的绘制移祛除,那样就可以保障大家后处理的步骤只是应用规范的一个全屏解决就可以同时与UI照相机结合,绘制到显示屏上,不容易产生另外的FBO的转换,也不会导致另外的FBO的回读实际操作,大幅度降低了运行内存中的回读及其全屏的计算实际操作,进而增强了后处理自身https://www.qwh168.com/的高效率。

下面讲《秦时明月全球》的定制渲染管线的多灯源。

Unity中有灯源的处理方法在传统式的渲染管线中采用的是ForwardAdd这类方法,选用好几个Pass绘制好几个灯源。《秦时明月全球》选用了单Pass多灯源的方法绘制。

最先,应用静态数据支系去提升机器设备,与此同时操纵运行内存,应用阳光照射的地方来界定光源类型,Shader中也会依据地区开展区划。《秦时明月全球》中针对多灯源主要是采用的是光源和舞台聚光灯,全部流程会采取单Pass多灯源的方法绘制。根据这个方法,就可以降低ForwardAdd提升Pass的这个状况,换句话说在多灯源的情形下全部绘制全过程,一个Pass会把所有的灯光效果绘制到这一物件上,能够确保我们在针对DC尤其敏锐的设施上不容易应用多Pass这类方法来提升系统软件的耗费,提高全部多灯源实际效果上总体功能的花销。

给各位展现一下实际效果。关键展现的是我们在应用多灯源的与此同时应用的一个单Pass多灯源的实际效果。能够看见在专业技能施放的环节中,在专业技能有关的部位会出现好几个光源去危害全部情景还有角色。但与此同时好几个灯源又是由于一个Pass来绘制的,会大大的节约特性。

这个是后处理的边界模糊不清和多一点转动的实际效果。

这是一个混帧的实际效果。

这也是《秦时明月全球》中少林轻功的色彩分离出来及其轴向模糊不清的后处理展现。

这也是河面实际效果的展现。这里边就用到了刚刚提及的Grab Pass,用于做映射解决。

感谢大家!

检举/意见反馈