January 23, 2020
Updates to mobile rendering support in Unreal Engine 4.24 and 4.25
Our Goals for Mobile Platform Support
Classically, limitations and variance in mobile hardware have made it necessary for us to maintain alternate rendering pipelines between desktop, Android, and iOS, with certain rendering features only exposed to specific feature levels. However, our long-term goal is to establish consistency between each of these platforms in terms of fidelity, performance, and available features.To that end, we are working to develop functionality for mobile devices that are equivalent to desktop rendering much sooner for each release than we have in the past. For example, we have made mesh auto-instancing available for mobile devices, and soon we will also bring both virtual texturing and the desktop forward renderer to mobile.
New Default Feature Levels
In support of this initiative, we have taken advantage of mobile hardware improvements within the last several years to gradually improve our base feature levels for mobile devices, bringing each of them up to similar standards.Prior to Unreal Engine 4.23, OpenGL ES2 was Unreal Engine's default feature level for Android projects. However, with the release of 4.23, the new default for Android became ES3.1. With Unreal Engine 4.25, we will remove ES2 completely.
Similarly, because Unreal Engine 4.25 will use iOS 11 as the minimum version of iOS, we are also going to update the minimum version of Metal to 2.0 and remove Metal 1.2.
Because the capabilities of ES3.1 and Metal 2.0 are very similar, these changes will simplify the process of parallel feature development between iOS and Android in the future, which in turn will make it easier for us to progress our technology for mobile games in future releases. This change will also benefit artists making assets for mobile games in Unreal Engine by making their available tools and features more consistent.
Using ES2 and Metal 1.2 in Unreal Engine 4.24
This comes with caveats for users upgrading to Unreal Engine 4.24. While ES2 and Metal 1.2 are still available in this version of the engine, we have already begun to deprecate them, and users whose projects still rely on these feature levels will need to take special action to keep using them.If you are upgrading to 4.24 from a version of Unreal Engine where ES2 was the default, and you never changed your feature levels in your Project Settings, ES3.1 will automatically take over as the new default setting for your project. If you need to continue using ES2, you will need to open your Project Settings and manually re-enable it. This can be found in the Platforms > Android section, under the Build category.
Similarly, if your project uses Metal 1.2 by default, then when you upgrade to 4.24, your feature level will automatically be changed to Metal 2.0 as the new default. If you want to continue using Metal 1.2, you will need to manually override it. Unlike with ES2, it is no longer possible to enable Metal 1.2 in the Project Settings UI. Instead, you need to make the following change to the appropriate *Engine.ini for your project:
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
MaxShaderLanguageVersion=2
With these settings, you should be able to migrate to 4.24 without losing support for your legacy devices. However, keep in mind that this option will no longer be available in 4.25 and beyond.