借助第八代智能英特尔® 酷睿™ i7 处理器和 Unreal Swarm* 的强大性能快速构建光照-演道网

摘要

《虚幻竞技场》*、《Robo Recall》* 等游戏的成功与 Unreal Engine* 如何处理照明密切相关。原因之一就是静态光映射,但是这需要付出一定的代价:构建照明需要时间,而时间就是金钱。本文将分享改进生产管线的漫长过程,旨在充分释放我们办公室内英特尔® 处理器的强大性能。

背景

顾名思义,VRMonkey 的关注重点是虚拟现实 (VR)。VR 是一项挑战,因为大多数技术都是新技术,而且计算要求通常高于大多数公司 PC 的处理能力。VRMonkey 正在努力打造能快速集成至工作环境的经济的解决方案,他们选择使用 Unreal Engine* 4 设计高质量的 VR 体验。 

作为一款免费使用的开源解决方案,Unreal Engine 提供了强劲的工具,但是由于工具配置的复杂性或仅仅因为缺乏与这些高级选项相关的知识,工具常常闲置。将光照定义为“静态光”以及打印定义虚拟世界全局照明的纹理是它最突出的优势之一。该特性能够避免实时处理光照,同时节省宝贵的资源,以处理屏幕上的更多多边形或效果。

VRMonkey 某个项目包含 13 个不同的 VR 场景,调用 Unreal 中的地图,并且每个场景都需要构建光照。对于每个地图,构建光照将花费 7 到 10 个小时。在大多数时间,我们只能一次又一次地重复这个过程,以判断这些变化是好是坏。

Using the Swarm Coordinator in Unreal Engine* to build the lights
图1.使用 Unreal Engine* 中的 Swarm 协调器构建光照

同时,构建光照的图形工作者使用英特尔® 酷睿™ i7-4710HQ 或英特尔® 酷睿™ i5-4460 处理器。需要说明的是,光照构建流程只受 CPU 的限制。在阅读了解使用多台 PC 处理该流程后,VRMonkey 得到了一台搭载第六代智能英特尔® 酷睿™ i7-6770HQ 处理器的英特尔® NUC 套件 NUC6i7KYK (Skull Canyon)。这是一台低功耗设备,可以在办公室内 24 小时开机。借助该功能,VRMonkey 能够将构建时间缩短至 1 小时以内。

Dinos do Brasil

VRMonkey 的创始人 Pedro 和 Keila Kayatt 接触到第一代 Oculus Rift* 开发人员工具包 (DK1) 后,他们开始考虑使用这项卓越技术的绝佳方式是什么。他们首先讨论了创建人体内虚拟之旅的可能性,就像 1987 年的电影《惊异大奇航》。然后,他们回忆了童年时代的一个项目,一个巨大的玩偶 Eva Doll 被创建出来,人们可以走进去学习器官的工作方式。

这是一个非常好的想法,但是那时他们有一个更大、更疯狂的想法 – 重建恐龙世界,他们还想进一步向世界展示巴西(世界上面积最大的国家之一)有恐龙。2013 年,Dinos do Brazil 项目的构想便这样产生了。

Dinos do Brasil Illustration
图2.Dinos do Brasil 图解

他们开始组建研究人员和专家团队,以创建科学严谨、视觉震撼的生物。他们为梦想计划组建了顶尖的团队,汇聚了古生物学家、史前艺术学家、3D 设计师、古植物学家、程序员等众多人才。Pedro 和 Keila 开始为项目募集资金,最终获得《Rouanet Law》的批准,该法律通过税收鼓励文化项目投资。他们立即开始设计原型,以交付各个公司。

在 2015 年,这个小团队花了 6 个月的时间创建了一个原型,并将原型带到公司以筹集资金。巴西的危机没有帮他们渡过难关,但是他们与合作多年的几家公司建立了密切的联系,包括英特尔。VRMonkey 向这些公司展示了他们的项目,在年底,他们终于拿到了资金。英特尔巴西公司的最终投资使他们达到了最低限额,共计约 20 万美元,这与他们预计的 100 万美元的理想总额相差很多。项目实现起来不太容易,但是任何伟大的事业都是这样。

经过几次会议和修改后,格式最终确定下来 – 从太空到不同环境的 13 个场景,展现了现代巴西所在区域的 15 种不同的史前生物。所有场景都在 Unreal Engine 4 中虚拟建模、制作动画和组装。超过 20 人参加了该项目,VRMonkey 很快发现他们面临一个非常常见的 VR 体验开发问题:性能。

他们需要使用不太昂贵的装备实现 90 帧/秒 (FPS) 的帧速率。为什么?因为项目发生了重大变化。在寻找最佳合作伙伴的过程中,VRMonkey 与 Catavento Cultural(拉丁美洲最大的博物馆之一)的工作人员会面并有了意想不到的收获。Catavento Cultural 非常喜欢这个项目,并提出永久展出该项目,让全巴西的儿童都能参观。展览包括 25 把椅子,每把椅子都配有全套的 VR 设备,包括 PC 和 Oculus Rift* CV1 VR 头显。这一切都非常棒,但是有一个问题:所有设备的成本均由 VRMonkey 承担。长话短说,大约一半的投资将用在硬件上。

Dinos do Brasil permanent VR exhibit at Catavento Cultural
图3.Catavento Cultural 的 Dinos do Brasil 永久 VR 展览

回到性能问题,VRMonkey 如何在 VR 中进行逼真的渲染,同时不牺牲宝贵的帧?他们首先想到了烘培光照。光照主要以两种方式实现:动态光(改变游戏引擎在运行时处理阴影的方式)或静态光(运行体验时无法改变)。Unreal Engine 以处理擅长静态光而著称,创建了非常真实的光反射,并通过在对象纹理上构建光照,创建了美丽的环境照明。

但是静态光有一个缺点,它们必须被处理。这意味着需要使用光照引擎对它们进行编译,这将花费很长时间才能正确地完成。Unreal Engine 甚至推出了预设配置,以简化光照效果的预览,但即使在预览模式下,部分场景仍需要 7 到 10 小时来渲染。13 个场景将花费长达 130 个小时生成项目光照的预览,这点让人头疼。

此时,Pedro 从英特尔® 创新者峰会返回,并带来了英特尔® NUC 套件 NUC6i7KYK (Skull Canyon),它虽然外形小巧,却是真正的性能怪兽,搭载第六代智能英特尔® 酷睿™ i7-6770HQ 处理器、16GB RAM 和 256GB SSD。设备本身就可以运行卓越的 VR 任务,搭配使用 VRMonkey 的多个台式机工作站使其如虎添翼。

然后,Pedro 回忆起读过 Unreal Engine 的 swarm 应用。大体上将几台计算机连接到本地网络,并使它们对处理器的所有内核可用。例如,Pedro 配置英特尔 NUC 以向 swarm 共享所有 8 个内核,其他工作站共享 3 或 4 个内核,以减小对设备上工作的人的影响。

Networking provided a lot of computational power to be available
图4.网络提供了大量可用的计算能力

VRMonkey 通过 CAT5 以太网线缆连接了所有的本地网络,支持以 100MB/秒的惊人速度传输文件至 LAN。它们还能将英特尔 NUC 用作协调器,运行整个 swarm,将光照处理速度提升到之前的 10 倍以上。借助该装备,他们基本上可以在一天时间内重新运行所有场景的光照。

经过一年的辛勤付出,Dinos do Brasil 终于完成,于 2017 年 3 月发布。截至本文撰写之时,展览已经接待了 10 万多名游客。每天,越来越多的人来这里第一次体验 VR。

当看到孩子们提前 5 或 10 年体验如此美妙技术时的反应以及古生物学家看到他们的研究成果变为现实时流下的泪水,Pedro 和 Keila 觉得他们的梦想和付出都得到了充分的回报。

如何配置 Light Swarm

您可能认为设置 Swarm 是一个复杂的任务,但是实际上没有那么难。在开始前,您只需了解几个关键点,然后很快它就开始运行了。首先,选择用作协调器的计算机,它将在大多数时间开启,并负责其他所有 PC 的连接。

以下步骤将英特尔® NUC 套件 NUC6i7KYK (Skull Canyon) 用作协调器,因为它具有较低的热设计功耗 (TDP),可以 24 小时全天候运行也不会有任何影响。

一旦设置英特尔 NUC 后,转至文件夹:

[UE4ROOT]\Engine\Binaries\DotNET

 

  • AgentInterface.dll
  • SwarmCommonUtils.dll
  • SwarmCoordinator.exe
  • SwarmCoordinator.exe.config
  • SwarmCoordinatorInterface.dll
  • SwarmInterface.dll
  • UnrealControls.dll
  • SwarmAgent.exe

配置协调器

这些文件是独立的,您可以将它们复制到任何文件夹中的协调器。我们将它们放在名为 Swarm 的文件夹中,并将其拖放到您选择作为协调器的设备的桌面上。当您打开 SwarmCoordinator.exe 时,应看到:

Screenshot of the SwarmCoordinator.exe
图5.SwarmCoordinator.exe 的截图

需要指出的一点是:该应用必须始终开启,以便其他对等连接。因此,下一步是确保在打开 PC 时它始终处于开启状态。最简单的方法是执行 Windows* (Win+R) 的 Run 命令并输入 “shell:startup”,以打开 Windows Explorer,地址为:C:\Users\[YOURUSER]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

按下 Alt 键拖放 SwarmCoordinator.exe,为它创建一个快捷键。现在,每当您打开电脑时,协调器可执行程序将自动启动。

将协调器设置为对等

还可以将协调器设置为对等,这意味着处理连接的计算机也可以与您的 Swarm 共享处理器性能。为此,打开 SwarmAgent.exe 文件来设置 Swarm Agent。

The SwarmAgent.exe file will open in your task bar as shown here
图6.如此处所示,SwarmAgent.exe 文件将在任务栏中打开

您也可以将可执行文件的快捷键添加至 Windows Startup。如果有可能损害计算机的性能,请勿执行该步骤,因为光照编译会占用所有的 CPU。下一步是展示如何配置代理,以指定它从 CPU 中获得的内核数量。

配置 Swarm Agent

双击图标以打开 Swarm 界面,当您从 Unreal* 创建光照时,该代理将自动打开,但是它总是从您的 UE4ROOT(Unreal 的安装文件夹)打开。如果您之前打开了 Swarm 文件(按照您现在使用 Startup 文件夹的方式),它只会将来自引擎的调用分配给该应用版本。这很重要,因为某些用户关闭 Swarm(手动)会导致 Unreal 自动打开一个新的文件,但是其中的配置都不见了。

The Swarm Agent interface
图7.Swarm Agent 界面

Settings 选项卡配置

Settings 选项卡上必须更改的几个字段。

CoordinatorRemotingHost 必须指向协调器设备的 IP 地址(通常类似于 192.168.1.X)作为一个选项,它可以是设备名称(如图 7 所示,使用 skullcanyon)。 注:修改该选项后,应用将立即冻结,因为它将连接协调器。通过使用不同的窗口,您可以看到新代理已连接协调器,如图 8 所示。

Screenshot showing that the new agent has connected to the coordinator
图8.显示新代理已连接协调器的截图

如图 7(蓝色方框中)所示,AgentGroupName 和 AllowedRemoteAgent Group 是一样的,这是因为我想部署光照构建,同时为其他设备部署光照构建。

AllowedRemoteAgentNames 从默认的 RENDER* 更改为 *。该设置将支持网络上的任何设备都能使用 swarm 配置构建光照。

ShowDeveloperMenu 将它更改为 true,这样您便可以设置所需的其余配置。

DeveloperSettings 选项卡配置

现在已经配置了 SwarmAgent,您可能想更改 DeveloperSettings。

如图 9 所示,在该选项卡,您需要设置使用的处理器(逻辑处理器)数量并根据本地光照构建或远程光照构建(另一台设备所要求的)设置任务的优先级。请记住,如果 CPU 已经被占用,Swarm Agent 将通知协调器,不会将任务传送给您的代理。

Configurations for the DeveloperSettings tab
图9.DeveloperSettings 选项卡的配置

配置对等设备

设置 Swarm Agent 在您的每台对等设备(客户机)上运行。为此,从 Swarm 协调器的文件夹 ([UE4ROOT]\Engine\Binaries\DotNET) 中复制相同的文件,但是您现在能够将其放在更独立的文件夹,如 C:/UnrealSwarm/(或您喜欢的任何文件夹)。请记得设置 SwarmAgent.exe,以获得 Startup 文件夹的快捷键,但是不要对 SwarmCoordinator.exe 执行此操作。

从该文件夹打开 SwarmAgent.exe 并设置在上文应用于协调器的所有配置。然后,您可以根据需要在 DevSettings 选项卡中自定义本地和远程处理器数量。对网络上的每台 PC 执行该操作,很快 Light Swarm 便可以随时用于您的 Unreal 项目!

如欲了解更多信息,请参见 Unreal Swarm* 文档概述。

将更新的处理器技术集成至设置

所有操作都能在第六代处理器上流畅运行,如果您升级为第八代智能英特尔® 酷睿™ i7 处理器将会怎样?VRMonkey 已经开始考虑使用更强大的 PC 运行逼真的 VR 体验,因此,他们决定试一拭。

VRMonkey 选择了 Alienware* Aurora* 台式机,这是一台具有中塔机箱的性能怪兽,搭载英特尔® 酷睿™ i7 8700K 处理器,采用配备双通道 HyperX* DDR4(2933MHz)的 32GB RAM 和配备 8GB GDDR5X 的 NVIDIA GeForce* GTX 1080。

The beautiful new addition to VRMonkey offices
图10.VRMonkey 办公室的高颜值新成员

新一代处理器将物理内核数量从 4 增加至 6,支持 8 到 12 颗逻辑处理器,运行速度高达 3.7GHz!VRMonkey 迅速地在他们的 Swarm 上进行设置与测试。

Testing out the Swarm on the new processor
图11.在新处理器上测试 Swarm

VRMonkey 顺利地启动和运行系统,对于图 11 中的特定场景,导出场景花费的时间实际上比编译与处理数据还要长。Pedro 发现了一篇文章《比较 Unreal Engine 4 的 Unreal Editor 中的 CPU 性能》

第八代智能英特尔® 酷睿™ i7 8700K 处理器不包括在对比中,因此,Pedro 使用类似的方法比较他们在 VRMonkey 办公室使用的不同设置的构建时间。他生成了下图来展示在 Unreal 上单独构建默认场景所花费的时间。

Comparison of light build across different processors using Epic Games* Zen Garden for the test
图12.比较不同处理器上的光照构建,使用 Epic Games*《Zen Garden》进行测试

后续步骤

VRMonkey 团队发现强大的处理器不仅能在单机上发挥巨大价值,还能对 swarm 的性能造成积极影响。

除了改进管线之外,VR Monkey 还有一个修改 Unreal Engine 源代码的新项目。他们想将静态光构建的策略应用于 Unreal 源代码。考虑到这一点,他们正在寻找解决方案。对于 Unreal Engine 来说,IncrediBuild* 似乎是一种现成的选择。它是一款免费的应用,但是有许多限制。他们继续寻找,发现了另一款有前景的解决方案 Fastbuild。请参阅英特尔® 开发人员专区的独家文章,随时了解 VRMonkey 团队所追求的最新选项和其他建议(如共享数据高速缓存)。

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn