Piranha Bites and THQ Nordic have ported ELEX II to the Mac, and
will be available on the Mac App Store this June. It's not a UE5 game, using the custom Genome Engine. The developers claim that it took about eight months to port to Metal, and had assistance from Apple's engineers during the process.
On a more fundamental level, is the
technical FAQ sheet, which covers the process of porting to Metal.
Bringing ELEX II to Mac
Piranha Bytes always strives to deliver more complex and enhanced games, and bringing ELEX II to Mac was no exception. ELEX II takes advantage of the Metal shading language to tap into Apple silicon performance. With Metal's Indirect Command Buffer (ICB) approach on Mac, the game also fully embraces GPU driven pipelines. In a little over eight months, a team specializing in GPU and Metal ported the DX12 version of ELEX II to Mac
Tech FAQ of ELEX II on Mac
Overview
• GPU driven pipeline with ICB filled at the end of culling process
• There are more than 6+ GPU culling segments (Depth Pre-Pass, Shadows) in the
frame with ICB used in every segment
Tech Features Deep Dive
ELEX II worked closely with Metal engineers to take full advantage of the many powerful features and tools to deliver a truly wonderful game. We’ve outlined some of these features below:
ICB: ICB was used with the following parameters
• Inherited pipelines
• Inherited buffers
• Render only (not compute)
• All types of draw + tessellation as well
Shaders
• Slang tool ported to macOS with the source level HLSL->Metal 2.x conversion for: - Vertex and Fragment shaders
- Geometry shaders
- Tessellation shaders
- On/Off support for argument buffers
- Emulation of DX12 RootSignatures
- Support for most of ‘non-typical’ stuff like atomics, SIMD groups
Metal approaches on macOS
• Utilizing
multi-threaded Command Buffer encoding and submission, which means the game can efficiently render the massive open-world in a parallel manner
• The game uses double buffering and not a single ‘wait’, everything is happening without any CPU-GPU synchronization point.
• The game fully embraces
Argument buffers for passing textures and samplers inside shaders.
Game Technology used and ported to Metal
• Global Illumination
• Volumetric Fog
• Deferred Clustered Lighting • Procedural Sky
• GPU driven cloth
• GPU driven particles
• Realistic snow and rain
• Day/night cycles with relit reflection probes
Full compatibility with Metal
Tessellation shaders:
• Conversion of normal HLSL shaders into Metal based approaches
• Massive use of tessellation in effects (fire, water), extremely tessellated objects (alien lifeforms)
• Nothing was compromised, every aspect of tessellation was preserved
DX12 API to Metal
• Imitation of Root Signatures
• Imitation of Resources allocation/usage/DescriptorTables
• Behind the scenes switching of Render Command Encoder and pipeline states, into a separate library, which Engine just normally uses unaware of Metal API
Game Technologies Ported
• Full controller support with haptic feedback
• On-the-fly keyboard / gamepad switching
• Game ability to choose monitor to render
• Game cooking and packing is fully done on Mac • ARM and x64 support
• Xcode 13.x used as main build tool
• Xcode 14.x used as main development tool • GameCenter integration with achievements • AppStore ready bundle with Sandboxing