I’m testing UE 5.8 on macOS and have run into what appears to be an issue when enabling the experimental Metal Mobile SM6 Renderer.
Environment
Unreal Engine 5.8 (Installed build)
macOS 26.5.1
Apple M3 Pro
Xcode 26.5
iOS SDK 26.5
Steps to reproduce
Open a project.
Enable:
Metal Mobile SM6 Renderer (Experimental)
Package for iOS (Shipping).
Result
Packaging fails almost immediately before any project code is compiled.
The relevant output is:
[1/5] Unzip libmetalirconverter.embeddedframework.zip
unzip: cannot find or open
../Binaries/ThirdParty/Apple/MetalShaderConverter/IOS/libmetalirconverter.embeddedframework.zip
Result: Failed (OtherCompilationError)
ExitCode=6
There is also this warning:
MetalShaderConverter.build.cs: warning:
Referenced directory
Engine/Source/ThirdParty/Apple/MetalShaderConverter/include/metal_irconverter_ext
does not exist.
bSupportsMetalMobileSM6=True → always fails with the missing libmetalirconverter.embeddedframework.zip error.
Reverting:
Metal Language Version back to 7
Minimum iOS Version back to 17
does not change the behaviour.
The only setting that changes the outcome is enabling/disabling Metal Mobile SM6 Renderer.
Because the build fails before compiling project code, this appears to be occurring inside UnrealBuildTool while setting up the Metal shader toolchain.
Has anyone else encountered this, or is there an additional Metal Shader Converter component that needs to be installed for SM6 on UE 5.8?
The UE 5.8 Installed Build appears to be missing the iOS Metal Shader Converter framework and extension files required by the experimental Metal Mobile SM6 renderer.
Workaround
Download and install Metal Shader Converter 4.0 beta from Apple:
Enter your UE installation path when prompted, for example:
/Users/Shared/Epic Games/UE_5.8
The script detects Apple’s installation under /usr/local, creates the framework archive expected by UBT, and installs the missing metal_irconverter_ext files.
After running it, iOS SM6 packaging proceeded past the missing-framework error.
Note that UE 5.8 contains Metal Shader Converter 3.1.1 headers, while Apple currently provides 4.0. This is therefore an unofficial experimental workaround. An Epic Launcher update or engine verification may also remove the installed files.
I managed to work around the missing files using Apple’s Metal Shader Converter 4.0 package. The project now packages successfully for iOS SM6, but the application crashes during startup on an M5 iPad.
The framework is embedded and loaded successfully, so this is no longer a missing-framework or signing problem. The crash occurs when Metal attempts to create a graphics pipeline:
CreateMTLRenderPipeline
FMetalShaderPipelineCache::GetRenderPipeline
FMetalDynamicRHI::RHICreateGraphicsPipelineState
HandlePipelineCreationFailure
Shader compilation failures are Fatal
One potentially important detail is that the Metal Shader Converter headers bundled with UE 5.8 identify themselves as:
Metal Shader Converter 3.1.1
However, the package currently available from Apple is:
Metal Shader Converter 4.0.0
Apple’s downloads page currently appears to offer only versions 3.0 and 4.0. I cannot find a 3.1 or 3.1.1 package.
The version mismatch may be responsible for the runtime pipeline failure, although I have not confirmed this yet.
Does anyone know:
Where Metal Shader Converter 3.1.1 can be downloaded?
Whether Epic supplies this version through a separate UE dependency package?
Whether UE 5.8 is expected to support Metal Shader Converter 4.0?
Is the missing 3.1.1 iOS framework in the Installed Build a packaging omission?
At this stage, 4.0 allows packaging to complete, but the resulting application does not run successfully on the device.