Enlighten手机游戏中的全域光照
手机游戏现象
2016年,手机游戏在全球游戏领域将会第一次超出PC的份额,整个游戏市场共9.96亿美元。市场膨胀,移动设备激增、消费者互联性的增加和智能手机性能的提升都在刺激市场的发展。
全世界有超过两千万个智能手机用户;在英国,76%的成人拥有智能手机而且他们每天用手机上网、浏览社交媒体、网上购物超过两个小时。2009到2015年间,移动设备功能改进很大,计算速度提升了100倍,在图像性能方面提升了300倍。95%以上的智能手机都采用ARM的IP,ARM最近的产品声明提到:新的ARM Mali-G71与去年的GPU Mali-T880相比,设备的性能会提升1.5倍以上。
手机游戏的额外性能是什么意思呢?三星Galaxy S7的Exynos 8 Octa芯片集里的GPU是Mali-T880,最新的Mali-G71GPU比Mali-T880每秒多计算675M的三角形和109个像素。这意味着每帧可以消耗更多的几何图形,可以绘制更丰富的纹理,并且最终的渲染成果会具有更细致的底纹和后期效果作为润色。这意味着复杂3D场景——那种使计算机生成的世界看起来像真的一样的场景——正离玩家越来越近。
在全球各地,最受欢迎的手机游戏仍是休闲游戏;这些游戏中时有时无的低回报反映了那些基本不固定玩游戏的用户的使用习惯,这些游戏使用的乐趣也向非传统玩家打开了目标市场。
然而,有几个有趣的趋势,移动应用下载列表中名列前茅的的休闲游戏的优势可能因此趋势而被削弱。
虚拟现实刚刚开始学习的脚步:在其平台上反复试验什么会起作用,什么不会起作用,这与移动游戏刚起步时一模一样。多亏了移动设备的无处不在和良好性能,移动设备会成为虚拟现实的媒介,让虚拟现实技术成为主流,而不是成为PC或者控制台的复制品。但是,为了使虚拟现实技术成功,移动VR需要提供相应的高品质以及身临其境的用户体验。休闲体验将会是上述体验的一部分,移动设备上对于复杂3D图形日益增长的需求可以被预期为虚拟现实的腾飞。
第二个趋势就是竞争的加剧,但是游戏公司越来越多地保证说移动是他们想要打的一场仗。让我们把中国作为最极端的例子:仅中国自己就囊括了全球25%的游戏收入。核心移动领域是开始调拨PC游戏上的花费,今年中国移动游戏领域预期将达到一亿美元,比2015年增长了41%。在中国不同的应用市场上,每天有超过100个新移动游戏主题发布。在这一地区,特别是游戏工作室,正在增加移动游戏的预算,并且旨在创建多元化的用户体验,无论是通过游戏、音频还是图像。
移动全域光照
鉴于上述情况,很可能未来的移动消费者将要求他们的设备支持更复杂的3D 图形,可能是为了游戏,或虚拟现实或其他多媒体体验,例如建筑可视化。
这种复杂性可能来自于大量的形式。物理的正确性是一个——移动图形能做到多真实?互动是另一个; 在以毫秒为单位的基础上,用户移动或者改变时,场景能提供可信图形显现能到何种程度。
随着物理正确性变为这些体验更期望的部分,全域光照会起到重要促进作用。全域光照是一种效果,当光与场景中物质相互作用时,光会从一个物体反射到另一个物体,或者被吸收,全域光照会计算光的整个路径。这与自然界中的光是一样的,依据光交互的材质不同,光会改变颜色和亮度,这种计算机图形技术也起到相同作用。这一事实——模拟光在真实物理世界中的运作方式——让这种效果成为现实主义和计算机图形准确性的巨大促进因素。
为了可信的交互,全域光照需要实时计算。如果用户决定移动物体,或者关闭灯光,或者改变表面的属性,那么场景中的光需要准确迅速地做出反应,否则场景中的沉浸感将会被打破。目前这些交互在游戏中无处不在——想象着探索有火炬的地牢,在这样一个封闭的空间里,灯光是如何影响全域光照的。这对于其他多媒体也是非常重要的,比如说像之前提到的建筑可视化。想象一下在会议上向客户展示一个室内设计;在理想的世界里,这个体验应该可以在运行时移植和修改,这样客户就可以与开发者进行循环设计,无论他们的会议在哪儿开,并且无论设计决定怎么样他们都可以看到房间的精确呈现。
将实时全域光照纳入应用有极大好处。虽然渲染方程定义了离开表面上一点时光发生的改变,这在过去三十年中是所有实际渲染技巧的基础,但是在运行时这种计算太复杂了,特别是在移动平台上。
所以,行业想出了变通方法。
烘焙的全域光照
因为烘焙的全域光照的实时成本很低,所以它是移动游戏开发者最常用的技巧。但是,这个负担能力的代价是运行时的活力。使用烘焙的照明,当光线和材质被实时更新时,全域光照不会随之改变。它们要么保持不变,要么用户必须接受结果中的视觉失真。
烘焙的全域光照为静态场景完全预计算了照明信息,并且以静态数据结构形式输出,该数据结构之后会被片段着色器使用。最常用的数据结构是纹理、球面谐波探测和立方体贴图。
作假
就像一位摄影师设置了一套为拍摄一组照片,以获得某种特别的效果,所以一个艺术家也可以在场景中通过放置模拟反射光的“假”灯来设置光线。这是游戏工作室都常用的技巧,因为艺术家可以很快通过循环来取得最终结果。但是,用这项技术很难产生物理上正确的结果。而且,特别是在性能较为有限的平台上,引擎可能会限制直接光源的可用数目。比如说:UE 4.9只允许每个被照亮的物体上有四个动态点光源。
Enlighten
回望在本节开始的渲染方程,如果你只有有限的一组元素和漫射传播会发生什么事?事情变得非常简单。
材质依赖可以从积分中移除,积分现在是其他元素光能传递与两元素间形状因子乘积的和。形状因子是光离开元素j能到达元素i的比例。用材质属性乘上这个和,之后加上所有自身发出的光和场景有的光能传递。
这就是Enlighten解决全域光照问题的方法。下面,相同的方程以更直观的方式呈现。对于每个像素,它离线计算该像素能看到哪些元素,之后再实时把所有组件颜色加起来。
可能需要操纵几次手柄以取得收敛结果,但是要解决这个问题,也可以在CPU的一些帧上运行,完全独立于渲染帧率。这让移动设备变得完美,在移动设备上,开发者可以为Enlighten设定预算,而且无需担心其阻塞GPU和生成阻碍。
前进中的移动开发
移动发展的挑战之一是设备可用的广度。智能手机市场不只是包括最新的版本,如三星 Galaxy S7;大多数游戏玩家自己的手机都是ARM定义的那种“中档”或“入门级”的手机——成本少于 350 美元。这些设备通常是有上一代的处理器技术, 上一代的 API 支持或只有少量的内核。
Enlighten长久以来能够在移动设备上计算出动态全域光照。在所有移动设备上,这种动态全域光照挑战一直存在,所以,无论玩家使用什么样的设备,都可以从中获得好处。这将会是一个更大的挑战。
在2016年前半年,Enlighten团队为了实现上述目标做了一些变化。
表面重照明模型
虽然在 PC 和控制台上最新Enlighten表面重照明模型的成本是可以接受的,但是对于移动设备来说,还是希望拥有更高效的方法。我们已经引入了UE集成,为移动设备创建一个更高效的模型,该模型仍然依赖于定向照明,但是只存储少量数据。
立方体贴图支持
Enlighten立方体贴图用于实时抓取间接照明变化,现在可以在移动设备路径上实时抓取放射环境。
Enlightened移动开发者
Unity引擎是领先的全球游戏开发软件。与其他游戏技术相比,更多的游戏采用Unity制作,更多的玩家玩用Unity制作的游戏,更多的开发者们依靠我们的工具和服务以推动其业务。Unity引擎是领先的全球游戏开发引擎,它具有全球游戏引擎市场 45%的市场份额,大约是紧随其后的竞争对手所占份额的三倍。
特别对于移动来讲,最卖座的 3D 手机游戏绝大多数是使用Unity进行制作的。
在 2015 年Unity公布了他们的第五版引擎,特别重点在于恢复图形的保真度和照明。自Unity3以来,引擎一直受限于烘焙光照贴图,但经过整合,Enlighten作为实时全域光照解决方案,动态照明已经在用Unity的游戏中成为可能。这项技术现作为所有Unity客户作为标准正在广泛传播。
Exient 是总部设在英国的开发公司,其产品有卖的最好的游戏——如愤怒的小鸟!和愤怒的小鸟升级版。
公司许可Enlighten有两个核心的原因。首先,他们依靠为当前的游戏持续创造的新的内容来留住客户。由于Enlighten的内置编辑器充满活力,照明艺术家都能够在短期内建立可发布的关卡。
SimonBenge是Exient的带头技术美工,他说:“Enlighten的实时照明工作流是一个游戏革新者。烘焙的照明对于任何团队来说都是一个巨大的产品瓶颈;很难高效地创建关卡来满足那些玩家的期望。”他还说:“单独的美工使用Enlighten可以无需中断任何管道正常工作,而且对于照明和关卡变化的反应比比用烘焙技术的100人团队还要快——甚至产生更高质量的内容!”
其次,他们即将推出的游戏应该会在2016年下半年在iPhone和安卓市场上发布,该游戏主题包括在场景中让玩家控制材质和灯光的游戏元素。该游戏将是显示他们内部引擎能力的案例;精确全域光照必须能够对这些更新做出反应——Enlighten甚至可以在移动平台上在实时实现这个目标。
完美世界是视频游戏领域内重要的中国开发商和出版商。它的起源是在MMO空间,但是它已经通过自身努力抓住了移动领域的机会。然而,如前所述,中国手机游戏市场的竞争非常激烈,必须要保证特异性才能成功。对于完美世界来讲,在他们的游戏中使用Enlighten,Enlighten可以作为质量保障,能够确保游戏里的图像质量非常好让用户满意。
“Enlighten重新定义了计算机游戏光线传送到显示器的方式,并且为全域光照设定了新的标准,”完美世界的技术副总崔明如是说。“在我们的手机游戏集中使用Enlighten可以传送最高品质的图像,而且我们投资了一种能够在行业竞争中给予我们独特优势的技术,这会确保客户不会流失。”
移动案例中的Enlighten研究
Transporter
引擎:Unity 5pre-alpha建立
平台: 三星 Galaxy Note 10.1 (2014 版) Exynos version
概念: 一个太空中心飞跃过一颗明亮的星星
Enlighten可以计算烘焙的灯光和动态光。Transporter中的一些光源是静态的,所以烘焙这些光源是为了提升性能;这些进行全域光照的光源在运行时会闪烁或移动,它们可以实时更新。甚至在被直接光源遮挡的表面上,结果也是准确的。
在Transporter有几个有趣的Enlighten特点需要提一下。第一个就是列入动态反射效果——在移动设备上实时计算这种效果比较棘手,下一代平台上,用在移动设备的屏幕空间反射技术开销太大了。这个示例物理上基于着色模型建立,asset极具金属感因此会反光——以上图为例,地板和墙面都包括镜面反射。通过使用Enlighten立方体贴图,在这些反射高效抓取变化光线是有可能的。
Transporter也利用了Enlighten对于反射表面的支持。建立这些反射表面很简单,在脚本中变成动画比较琐碎,对于GPU工作量有最小的影响,因为这些表面算作间接光源,而且完全是Enlighten在CPU上计算的。Transporter中反射材质的例子是第二张图中门框上的白灯;当触发这些灯时,它们会变成红色并且闪光。
冰穴
引擎:带有自定义着色器的Unity 5
平台:SamsungGalaxy S6,搭载Samsung Exynos 7 Octa芯片集
概念:一个神秘、寒冷的洞穴,内有受中国十二生肖启发而设定的雕像和一头幽灵虎。
冰穴让Enlighten成为全域光照解决方案的明智选择,因为冰穴中有很多动态光效果。首先,开发团队想要在洞穴外有一个日周期时间,在洞穴内部有内设。其次,你在图片上方看到的萤火虫是作为动态光源,场景中充满了反射,需要确保这些反射能够对飞行萤火虫产生的变化光作出准确反应。最后,应用程序需要将灯光控制权交予玩家,这样一来玩家就可以选择打开或关闭特定的灯光或者改变灯光颜色。
美杜莎(蛇发女妖)
引擎:UE
平台:Arndale开发板
概念:一个封闭的空间,内有被动态光照亮的复杂石雕。
此案例展示了移动设备上的实时全域光照,光线来自1080P的动态光源。所有房间内的光线都在移动,Enlighten全域光照用实际的反射光填充了整个场景。场景中没有环境光。
为了提升Enlighten的性能,该案例利用ARM Mali GPU芯片上可用的Raw Tile Buffer扩展的优势。该案例使用延迟渲染来达到显示屏上要显示动态光的数目,这是PC和控制台上非常流行的技巧。但是,延迟渲染的代价很大,主要在于内存带宽开销。通过在移动设备上使用Raw Tile Buffer,我们可以节省大量内存带宽开销。你要是希望节省开销,1GB/s是最小值了,而且这个数字会增加屏幕分辨率。
地铁移动
引擎:UE
平台: 三星 Galaxy S6
概念: 一个充满华丽灯光箱的停用地下铁站
为了测试智能手机性能的极限,这是一个地铁到移动的PC版本的端口。我们想要尽可能多的启用原始Enlighten特征,包括玩家控制灯光(带着火炬和预大灯箱交互)和销毁(实时移除一面墙时,在之前墙两边独立区域间持续的全域光照)。
由于UE目前在安卓上对于移动聚光灯的限制(这是在UE 4.8中开发的,在4.9的移动改进之前),我们选择点亮整个场景,其中发光表面作为区域光源。这意味着尽管光线可以在运行时动画或者被改变(例如,玩家可以像在原始PC例子中一样设置 ),光线必须是静态的。角色选择的立方体中的动态光不再可用。
很高兴在此应用程序中看到实时的动态对象间接照明。在上图中,你可以看到一组可以由玩家移动的岩石。当边墙上的区域光线颜色变化时,这些岩石会选择新的颜色,也会实际地、持续地对变化光条件作出反应。
将此案例移植到移动设备开销大的部分是着色器成本。Enlighten的基本规则是:如果你能够渲染场景,你就能够点亮它。
水晶洞(移动和移动VR)
引擎: UE
平台: 三星 Galaxy S7 (Exynos 版本) (载有三星 Galaxy Gear VR)
概念: 在一条河的大山洞中充满了魔幻的发光的水晶,一条船经过这个山洞
此案例中的关键概念是与水晶的自然交互,以及玩家能够在任意点实时控制灯光,在整个过程中都保持近于可怕的沉浸感。
在移动平台上实现这种效果,使用动态区域光是理想的,因为它们不存在GPU开销或直接光有的限制。使用这种效果我们就能够快速、轻松地将怨市场净移植到手机上,需要一些轻微扭曲来优化几何图形和用户交互界面(原始场景使用LEAP移动控制器)。
如果案例以60FPS运行移植到手机,该团队决定看看是否案例可以在三星Galaxy Gear VR上运行。此过程中主要的问题不是场景的照明——事实上,Enlighten动态区域光运行效率非常高——它在UE中自己渲染场景。该引擎对于Gear VR上可能的绘制调用数目有严格限制,并且限制遮挡支持。为了解决这一挑战,团队可以用一种独特的方式来使用Enlighten。他们引入基于光线的遮挡,这个技巧是可能实现的,因为整个场景被Enlighten动态点亮。当部分场景不需要渲染时,灯光会关闭,遮挡的区域会陷入黑暗。当需要某个区域时,灯光逐渐减弱,区域会被渲染。依赖于玩家的位置,灯光和几何图形会打开和关闭,这允许几何图形弹出的更严格的选择和隐藏。
本案例的VR版本以60FPS在三星Galaxy S7上运行,有18个动态光源,28544个光贴图像素,Enlighten平均解决时间是7.6ms。
性能示例
评估者了解Enlighten对于移动设备的性能影响是非常有用的。为了在对Enlighten开销感兴趣的群体中提升兴趣度,我们在三星Galaxy S7中采取如下措施,这是一个最初为Windows PC开发的应用程序,我们使用的手机版本是Photons。我们以固定帧率和无限制的帧率运行场景。
Enlighten的好处之一是你只需要为你的更改买账。如果你的场景用友大量快速移动的动态光效果,例如在Photons示例中就是这样,那么Enlighten会比有像太阳一样单一、缓慢移动的动态光源的场景的开销相应大一些。
该场景具有如下属性:
· 分辨率:本机(2560×1440)
· 初始量:每帧150
· 每帧三角形量:最多425,036
· 每帧绘制调用:最多142
· Enlighten复杂度:
o 28,480个光照贴图像素
o 81个动态光源
o 解决时间:最多24ms
用户为Enlighten设置一个CPU预算来解决多个帧的全域光照。因为间接光照是柔和、低频率的效果,如果间接光不是立即更新用户体验不会受影响。
在60FPS渲染帧率内,24ms的解决时间很轻易就覆盖4个渲染帧,同时提供了每秒15次解决的Enlighten更新率。这会提供一个流畅的用户体验,每帧只需要花费CPU 6ms时间。
Enlighten文档包括更长远的建议——如何让一个场景达到最佳效果/性能平衡,这份白皮书的最后一章列出了一些案例研究,关于之前的应用程序是如何在必要的性能预算下实现它们的设计目标的。
点击此处下载PDF文件:
商标
本文中出现的商标在EU和/或其他位置的ARM有限公司(或其子公司)是注册的和/或非注册的商标。版权所有。其他出现的标志可能分别是它们所有人的商标。想要阅读更多信息,请访问 。
【版权声明】
原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权;
GAD小妹时间
GAD小妹
【今晚8:00直播】点击阅读原文观看直播
御龙主策:揭开御龙端游历久弥新的秘诀
近期热文