Best Way to Use MetalFX in Unreal Engine 5.7 for macOS Port?

Hi everyone,

We’re currently porting a high-fidelity AA+ PC title built on Unreal Engine 5.7 to macOS (Apple Silicon), and we’re looking for guidance from anyone with experience in this area.

At the moment, the game is already runnable on Mac, but not yet at a playable level — we’re seeing performance around 10–15 FPS on an M4 device. We’re actively analyzing and defining the work needed to reach production-quality performance on macOS.

One of the key areas we’re exploring is leveraging MetalFX to improve frame rate. However, it seems there’s no official MetalFX plugin or direct integration available for Unreal Engine.

Has anyone here successfully integrated MetalFX into a UE5 rendering pipeline, or found a recommended approach to do so? Any insights on best practices, workflows, or references (docs, samples, etc.) would be greatly appreciated.

Thanks in advance!

Answered by DTS Engineer in 884968022

Thanks for the details on what you're working on.

Before focusing on MetalFX, it's worth stepping back to look at the overall performance picture. At 10–15 FPS on M4, there's likely a significant bottleneck in the rendering pipeline that should be identified first — MetalFX upscaling helps you render at a lower resolution and recover GPU time, but it won't bridge a gap that large on its own. Profiling with Metal System Trace and GPU counters in Instruments should help identify where the frame budget is being spent.

On the MetalFX side, the framework documentation and sample code cover the spatial upscaler, temporal upscaler, and frame interpolation APIs at the Metal level:

Integrating these into UE5's rendering pipeline is an engine-level modification that depends on Unreal's MetalRHI module. That's best discussed with Epic, as they would know where in the pipeline to inject the upscaling pass and how to feed the required motion vector and depth data.

Don’t use Lumen instead utilize legacy methods of global illumination. Keep raytracing as an option but make sure to integrate MetalFX Upscaler, Frame Interpolatee, and Denoiser to better optimize you game.

Thanks for the suggestion! Do you have any recommendations on the best way to integrate MetalFX Upscaler into a UE5 project?

Even a high-level overview of the workflow or approach would be really helpful.

Thanks for the details on what you're working on.

Before focusing on MetalFX, it's worth stepping back to look at the overall performance picture. At 10–15 FPS on M4, there's likely a significant bottleneck in the rendering pipeline that should be identified first — MetalFX upscaling helps you render at a lower resolution and recover GPU time, but it won't bridge a gap that large on its own. Profiling with Metal System Trace and GPU counters in Instruments should help identify where the frame budget is being spent.

On the MetalFX side, the framework documentation and sample code cover the spatial upscaler, temporal upscaler, and frame interpolation APIs at the Metal level:

Integrating these into UE5's rendering pipeline is an engine-level modification that depends on Unreal's MetalRHI module. That's best discussed with Epic, as they would know where in the pipeline to inject the upscaling pass and how to feed the required motion vector and depth data.

Best Way to Use MetalFX in Unreal Engine 5.7 for macOS Port?
 
 
Q