Unreal Engine 5.2 brings native support for Apple Silicon and other developments for macOS

Michael Prinke, Technical Writer and Zack Neyland, Lead Platform Programmer
Starting with Unreal Engine 5.2, the Unreal Editor for macOS is built and distributed as a universal binary, providing native support for past-generation Intel-based and current-generation Apple Silicon-based Macs in a single package. This tech blog will explain what that means, how it impacts your workflow when using macOS, and what the future requirements for developers supporting it are. We will also provide a quick overview of some additional new features for macOS—including access to more Unreal Engine Marketplace assets and Experimental support for Nanite—as well as outlining Unreal Engine's limitations on the platform.
A5 Cabriolet model courtesy of Audi Business Innovation, now available for macOS as part of the ‘Car Configurator’ project on Unreal Engine Marketplace.

What are Universal Binaries for macOS?

In 2020, Apple introduced Apple Silicon, its proprietary processor line for future mobile devices and Mac desktop machines. For Mac devices, this marked a transition from Intel’s x86-64 processors to an ARM64 architecture. To ease this transition, Apple Silicon Macs use the Rosetta 2 instruction translator to run legacy x86 applications on the new architecture, ensuring compatibility but at the cost of some added CPU overhead.

For future applications, it is preferable to build projects as universal binaries; in other words, binaries that include both x86-64 and ARM64 slices. This way, applications can run natively on either previous-generation Intel-based Macs or Apple Silicon Macs with only one distributable.
‘Automotive Bridge Scene,’ now available for macOS on Unreal Engine Marketplace.

What is the status of Unreal Engine’s support for Apple Silicon in 5.2?

Unreal Engine 5.0+ supported universal binaries for Macs, but only when packaging standalone builds of UE projects. In UE 5.1, we introduced Beta support to run source builds of UE with native arm64 binaries, but still relied on Rosetta for editor builds of UE. In UE 5.2, we’re officially releasing prebuilt universal binaries for Unreal Engine when downloading it through the Epic Games launcher.
 

How does this impact working with Unreal Engine on macOS in the future?

Users building the Unreal Editor from source will need to perform a few extra steps to build universal binaries, which are detailed below. Users running the Unreal Editor should experience minimal changes to their workflow. However, there are some new requirements for releasing projects or plugins.

First, users running Unreal Engine 5.2 on macOS must meet the following development requirements:
  • Minimum macOS version: 12.5 Monterey or newer
  • Recommended macOS version: Latest macOS Ventura
  • Minimum Xcode version: 14.1

These reflect the new minimum requirements for the App Store.

Second, in Unreal Engine 5.2 and later, sellers publishing Code Plugins on the Unreal Engine Marketplace will need to include universal binaries to be considered compatible with macOS. This will mainly impact code plugins that use third-party libraries, like Amazon’s Web Services library (lib.AWS), for example libaws-checksums.dylib.
 

What does this mean for the availability of Unreal Engine Marketplace Assets for macOS?

With these changes and the added requirements for Marketplace assets, macOS users running Unreal Engine 5.2 will now have access to more assets on the UE Marketplace. This includes Epic Games’ free assets, such as the Paragon asset packs.
More Unreal Engine Marketplace assets are now available on macOS, including this Muriel character from ‘Paragon.’

How do I use Apple Silicon support for Unreal Editor?

Users downloading Unreal Engine through the Epic Games launcher on macOS will automatically receive a distributable that includes universal binaries. When you run an instance of the Unreal Editor through the launcher, it will use the slice appropriate for your device’s native architecture. Therefore, if you have an Apple Silicon device, the editor will automatically use native support for Apple Silicon.

To create universal binaries when building the editor from source, you need to explicitly build with the “x64+arm64” architecture selected, as command line builds default to the x64 architecture and Xcode builds default to the host machine’s architecture. For more details about this process, refer to this article in the documentation.
 

What is the benefit of native Apple Silicon support for the editor?

If you run the Unreal Editor with native support for Apple Silicon, you should see a reduced CPU overhead and a performance improvement now that Rosetta 2 translation is no longer necessary.

Additionally, we have added some polish to the user experience when running the editor on Apple Silicon Macs. This includes fixes to handling window focus and improved support for the “notch” at the top of current-generation Mac screens.
‘Infinity Blade: Grass Lands’ scene from Unreal Engine Marketplace running in Unreal Editor on macOS.

What are the limitations of macOS support in Unreal Engine?

Support for macOS is a work in progress, and there are notable limitations when running either Unreal Editor or standalone projects on macOS devices.
  • Nanite relies on image atomics and forward-progress guarantees that Apple M1 devices may not support. Experimental support is available for M2-based Macs, but disabled by default, and enabling it comes with caveats (see below for more details). We hope to fully enable Nanite for Apple Silicon devices in the future, but for now, it is not fully supported.
  • Quixel assets set to use Nanite will fall back to non-Nanite versions of those assets. Otherwise, they will function as intended.
  • Hair/fur/Groom strands are not currently supported on macOS, as Groom requires image atomic support, but hair cards and meshes are supported.
  • Hardware-accelerated ray tracing is not currently supported on macOS. Due to this limitation, Lumen can only use the software ray tracer on Apple Silicon. Software ray tracing produces lower-quality results (for example, reflections are less detailed and dynamic meshes are not visible in them) compared to hardware ray tracing.
  • Anti-aliasing performance: The default anti-alias mode, Temporal Super Resolution (TSR), is currently hitting software and hardware limitations on Apple Silicon, making its runtime cost less optimal than on other platforms. We are looking into this, and hope to improve the runtime performance in future releases. In the meanwhile, if you wish to switch to another anti-alias mode, you can do so by searching in your project’s settings for “Anti-aliasing” and selecting an alternative method.
 

How can I use Experimental Nanite support on M2 devices?

As a first step towards the eagerly anticipated full support for Nanite on macOS, Experimental support is now available in the ue5-main and 5.2 branches on GitHub, although it is disabled by default. To enable it, you need to perform the following modifications in Unreal Engine’s source code:
  1. Set PLATFORM_MAC_ENABLE_EXPERIMENTAL_NANITE_SUPPORT=1 in UEBuildMac.cs (Engine/Source/Programs/UnrealBuildTool/Platform/Mac/UEBuildMac.cs). 
  2. Enable UE_EXPERIMENTAL_MAC_NANITE_SUPPORT in spirv_msl.hpp.
  3. Rebuild ShaderConductor per the instructions in UEBuildMac.cs.
  4. Set bSupportsNanite=true and bSupportsUInt64ImageAtomics=true in Data Driven PlatformInfo.ini (Engine/Config/Mac/DataDrivenPlatformInfo.ini).

Use caution when enabling this support, as it comes with several caveats. First, this will only work on M2 hardware. Second, performance and reliability are not guaranteed, as this has not been thoroughly tested. As previously indicated, this support is Experimental, and intended as a stepping stone for establishing further support in future releases and for future generations of Apple Silicon hardware. We’d love to get your feedback—please chime in on our Epic Developer Community forums.

    Get Unreal Engine 5.2 for macOS today!

    If you’re an existing Unreal Engine user, you can download the universal binary of Unreal Engine 5.2 for macOS from the Epic Games launcher. If you're looking to dive in for the first time, click the link below to get started. Either way, we hope you’ll enjoy the new features and updates.