虚幻引擎5.2带来对Apple Silicon的原生支持以及针对macOS的其他改进

技术撰稿人Michael Prinke和首席平台程序员Zack Neyland
从虚幻引擎5.2开始,macOS版虚幻编辑器将以通用二进制文件的形式构建和发布,在一套软件包中原生支持上一代基于Intel处理器的Mac和这一代基于Apple Silicon处理器的Mac。这篇技术博客文章将阐述此事产生了怎样的意义,它会如何影响你在使用macOS时的工作流程,以及为该平台开发支持功能的开发者将来需要满足哪些要求。我们也会简要介绍为macOS提供的一些额外新功能,包括允许该平台使用更多虚幻商城资产,并新增对Nanite的实验性支持;我们还将概述虚幻引擎在该平台上的限制。
A5 Cabriolet模型由奥迪商业创新公司提供,已包含在虚幻商城“汽车配置器”项目中,现在可在macOS上使用。

macOS通用二进制文件是什么?

2020年,苹果公司针对其未来移动设备和Mac台式电脑推出了Apple Silicon系列专有处理器。这标志着Mac设备将从Intel的x86-64处理器过渡到ARM64架构。为了简化过渡,搭载Apple Silicon的Mac使用Rosetta 2指令转译器在新架构上运行传统的x86应用程序,以确保兼容性,但代价是会增加一些CPU开销。

对于未来的应用程序,将项目构建成通用二进制文件是一种更优的做法,换言之,即构建同时支持x86-64和ARM64的二进制文件。如此一来,只需要提供一套可分发文件,就可以让应用程序原生运行在上一代基于Intel处理器的Mac和这一代基于Apple Silicon处理器的Mac上。
虚幻商城中的“汽车大桥场景”现已支持macOS。

虚幻引擎在5.2版本中对Apple Silicon的支持情况如何?

虚幻引擎从5.0版本开始,就提供了对Mac通用二进制文件的支持,但支持范围仅限于打包UE项目的独立构建。在UE 5.1中,对于通过原生ARM64二进制文件运行UE的源代码构建,我们提供了Beta阶段的支持,但UE的编辑器构建仍然依赖Rosetta。在UE 5.2中,我们正式发布了预构建的通用二进制版虚幻引擎,用户可通过Epic Games启动程序下载。
 

这对于将来在macOS上使用虚幻引擎有什么影响?

从源代码构建虚幻编辑器的用户需要执行一些额外的步骤来构建通用二进制文件,详情请见下文。运行虚幻编辑器的用户几乎不会感到其工作流程发生了改变。但是,对于发布项目或插件,有一些新的要求。

首先,在macOS上运行虚幻引擎5.2的用户必须满足以下开发要求:
  • 最低的macOS版本:12.5 Monterey或更新版本
  • 推荐的macOS版本:最新的macOS Ventura
  • 最低的Xcode版本:14.1

这些与新公布的App Store最低要求相一致。

其次,在虚幻引擎5.2及以后的版本中,卖家在虚幻商城发布代码插件时,需要为其提供通用二进制文件,这样我们才会认为它兼容macOS。这主要会影响到使用了第三方库的代码插件,例如libaws-checksums.dylib等Amazon Web Services库(lib.AWS)。
 

对于虚幻商城资产在macOS平台上的可用性,这产生了怎样的意义?

通过这些变化以及对商城资产的新要求,运行虚幻引擎5.2的macOS用户现在可以在虚幻商城中获得更多资产。其中包括《虚幻争霸》资产包等Epic Games的免费资产。
更多虚幻商城资产开放给了macOS平台,包括《虚幻争霸》中的莫瑞尔角色。

如何为虚幻编辑器启用对Apple Silicon的支持?

在macOS上通过Epic Games启动程序下载虚幻引擎的用户将自动收到包含通用二进制文件的可分发软件包。通过启动程序运行虚幻编辑器的实例时,它将使用适合设备原生架构的软件部分。因此,如果你拥有Apple Silicon设备,编辑器将自动启用对Apple Silicon的原生支持。

通过源代码构建编辑器时,若要创建通用二进制文件,你需要明确选择“x64+arm64”架构进行构建,因为命令行默认会构建x64架构的文件,而Xcode则会默认参照宿主机器的架构。如需详细了解该过程,请参阅文档中的这篇文章
 

编辑器原生支持Apple Silicon将带来哪些益处?

如果你运行原生支持Apple Silicon的虚幻编辑器,就应该会看到CPU开销的降低和性能的提高,因为现在不再需要Rosetta 2转译。

此外,在搭载Apple Silicon的Mac上运行编辑器时,你将察觉我们对用户体验做出的一些改进。这包括修复了对窗口焦点的处理,改进对这一代Mac屏幕顶部“刘海”的支持。
虚幻商城“无尽之剑:草地”场景在MacOS版虚幻编辑器中运行。

虚幻引擎对macOS的支持存在哪些限制?

对macOS的支持工作仍在进行中,当在macOS设备上运行虚幻编辑器或独立项目时,存在明显限制。
  • Nanite依赖图像原子技术和前向执行保证,而Apple M1设备可能不支持它们。在搭载了M2芯片的Mac上,我们提供了对Nanite的实验性支持,但它默认处于禁用状态,如要启用,则需要注意一些问题(详见下文)。我们希望将来能在Apple Silicon设备上完整启用Nanite,但目前的支持尚不完善。
  • 设置为使用Nanite的Quixel资产将回退到其非Nanite版本。在其他方面,它们将按预期发挥作用。
  • 由于Groom依赖图像原子技术,因此我们目前在macOS上尚不支持头发/毛发/Groom发束,但支持发片和头发网格体。
  • 硬件加速的光线追踪目前不支持macOS。该限制导致Lumen只能在Apple Silicon设备上使用软件光线追踪。与硬件光线追踪相比,软件光线追踪的结果质量较低(例如反射细节较少,动态网格体在其中不可见)。
  • 抗锯齿性能:默认的抗锯齿模式——时序超级分辨率(TSR),目前在Apple Silicon设备上受到软件和硬件的限制,因此运行时成本不如其他平台那么理想。我们正在研究这个问题,希望在将来的版本中改善运行时性能。在此期间,如果你希望切换到其他抗锯齿模式,可以在项目的设置中搜索“抗锯齿”,然后选择一种备选方法。
 

如何在M2设备上启用对Nanite的实验性支持?

为了在macOS上全面支持Nanite,以满足众人的热切期待,作为第一步,我们在GitHub上的ue5-main5.2分支中提供了对它的实验性支持,然而,它默认是禁用的。要启用它,你需要在虚幻引擎的源代码中做出以下修改:
  1. 在UEBuildMac.cs(Engine/Source/Programs/UnrealBuildTool/Platform/Mac/UEBuildMac.cs)中,设置PLATFORM_MAC_ENABLE_EXPERIMENTAL_NANITE_SUPPORT=1
  2. spirv_msl.hpp中,启用UE_EXPERIMENTAL_MAC_NANITE_SUPPORT
  3. 按照UEBuildMac.cs中的说明重新构建ShaderConductor。
  4. 在Data Driven PlatformInfo.ini(Engine/Config/Mac/DataDrivenPlatformInfo.ini)中,设置bSupportsNanite=truebSupportsUInt64ImageAtomics=true

启用该支持时需要谨慎,存在几个注意事项。首先,这种方法仅适用于M2硬件。其次,由于尚未经过彻底测试,其性能和可靠性无法得到保证。如前所述,这种支持是实验性的,旨在为未来的虚幻引擎版本和未来几代Apple Silicon硬件提供进一步支持铺平道路。我们希望收到你的反馈,请在我们的Epic开发者社区论坛上发表意见。

    立即获取macOS版虚幻引擎5.2!

    如果你已是虚幻引擎用户,可从Epic Games启动程序下载适用于macOS的通用二进制版虚幻引擎5.2。如果你是首次使用,想要深入了解,请点击下方链接开始。我们希望新老用户都能喜欢这些新功能和更新。