超实用!移动端游戏制作,光照渲染小贴士

在移动端游戏的渲染中,光照是一个影响较大的因素,也是视觉风格不可缺失的一部分。然而,艺术效果和游戏性能往往会处于一种鱼与熊掌不可兼得的情况中。幸而,我们依旧有许多方法在移动硬件的限制下尽可能地兼顾两者。

渲染管线

在Unity的内置渲染管线中,开发者可以选择两种渲染路径:前向渲染(Forward)和延迟渲染(Deferred)。在前向渲染中,实时光照的耗费非常大,要减少开销,可以选择每像素上需要渲染的光照数量。延迟渲染需要有GPU的支持,可渲染出大量高清晰度的实时光照。

延迟渲染对于PC或主机上大量使用光照的游戏非常适合,但在移动端GPU上,由于大部分设备带宽受限,渲染并没有那么出色。

移动游戏注重的是设备兼容性和运行流畅度,而要优化移动端光照,通用渲染管线显然更胜一筹。

Unity通用渲染管线是一个预制的可编程渲染管线,默认为前向渲染,拥有许多可提升应用性能到最大的功能。

选取最佳光照

将光照烘焙到光照贴图和光照探针中,是对渲染性能提升到最优的方法之一。在实时光照中,直接光照、阴影这类内容需要在每一帧上单独计算一次,同屏光照数量越多,计算量就越大。因此,屏幕上的内容量很大程度上取决于性能预算。而通过“光照贴图烘焙”流程预先完成运算,可以在硬件限制下提升一定的图像表现。

光照贴图烘焙会将光照和阴影信息储存到特定纹理(一般称作“光照贴图”),为场景加入运算量巨大的光照特性,如反射广和软阴影,强化写实风格。

然而,光照贴图依旧有几个不容忽视的局限。

烘焙光照不能随场景的动态元素变化而更新,动态对象的信息不会加入到光照贴图中。

不过此处仍有一种预计算方案来应付动态对象——“光照探针”。

光照探针有许多类似的优点,包括预先计算光照数据。许多运算开销仅会在编辑时产生,不会出现在运行时。不同之处在于,光照贴图将场景表面体素上接收到的光照编码储存,而光照贴图则会储存穿过场景空间的光照。捕捉到的数据可用于照亮动态对象,将其整合到带有光照贴图对象的场景中。

超实用!移动端游戏制作,光照渲染小贴士

体素

Texel体素是texture element元素纹理的简称,是贴图中的单个像素,它们构成了光照贴图、储存有光照信息。可以通过控制体素来影响光照质量、烘焙运算时间、磁盘存储开销,以及光照贴图的视频RAM(VRAM)开销。

在设置光照烘焙时,一般需要确定光照贴图分辨率和每单位体素数。这里的一个单位指的是Unity的默认单位(一般为1米)。光照贴图分辨率属性可在Unity的光照窗口中寻得。而要想查看场景体素的排布方式,可以勾选“Show Lightmap Resolution(显示光照贴图分辨率)”,或者在菜单中点击相应光照图标。

对象将被棋盘式图像覆盖,展示出光照烘焙后的体素分布。而在下方是两个形状相同、设置不同的光照示例。左边方块数量设置为5、右边为2.5,数值越高,计算量也越大;数值越低,所需光照贴图空间越小,光照贴图也就越少,当然质量也会更低。请自行尝试找出最适合项目的方案。

超实用!移动端游戏制作,光照渲染小贴士

不能烘焙时,假装有烘焙

在大部分元素使用的都是离线烘焙时,游戏中仍可以加入实时光照效果,如人物的影子。实时阴影通常使用称作“阴影贴图”的技术生成,场景几何形渲染到阴影贴图上的花销与阴影所接受的顶点数量成比例关系,需要限制投射阴影的几何形及实时光照的数量。

要想实现实时阴影效果,可以在人物身下添加一小块3D网格,再加上一个模糊纹理。这个方法简单且行之有效,可替代开销巨大的阴影贴图。

超实用!移动端游戏制作,光照渲染小贴士

不管你的任务是光照和烘焙、项目优化,还是对游戏光照好奇,每个人都能为精美画面的制作出一份力。游戏是展示多学科知识的独特舞台。快去与团队分享本次学到的知识吧,你可能会为他们带去一些灵光。

转自: Unity官方平台

最新文章