Some of you may have noticed: Substrate became the new default material system with Unreal 5.7. Without getting too deep into the pros and cons of Substrate (if you’d like me to write an article on this, please let me know), Substrate has also changed the PBR workflow from Metallic to Specular. As a result, the required textures have changed accordingly. To make converting existing materials as easy as possible, I’ve created a free tool called Metal2F0.
Brief background information
I don’t intend to delve too deeply into the topic in this article, but I’d like to briefly touch on the key differences between the two PBR workflows to clarify them.
In the metallic workflow, all color information is stored in the BaseColor texture. The metallic map is a grayscale map and serves as a mask to separate metallic and non-metallic areas. The metallic parts of the BaseColor are used for specular reflections, since metals themselves do not have colored surfaces. The non-metallic parts of the BaseColor correspond to the surface color; in reality, specular reflections from non-metals are never colored. This means a total of 4 color channels (1x Metallic + 3x BaseColor) are required to store the color information for both non-metallic surfaces and specular reflections from metallic surfaces.
In the specular workflow, all color information for non-metallic surfaces is stored in the diffuse/albedo map. All metallic components are black. All color information for specular reflections is stored in the specular/F0 map. Since the specular reflections of non-metallic surfaces are achromatic in reality and the light reflected in this way accounts for somewhere in the single-digit percentage range depending on the surface, their components in the specular map are very dark gray values. This means a total of 6 color channels (3x diffuse + 3x specular) are required to store all the color information.
So we need 4 color channels in one case and 6 color channels in the other to represent more or less the same thing. Why, then, should one use the specular workflow if it requires 50% more color channels and, accordingly, more storage space? Two arguments immediately come to mind:
- Transitions between metallic and non-metallic surfaces, such as partially oxidized metal surfaces, look significantly more realistic with the Specular workflow.
- In the stylized area, the effect of the art style can be further enhanced by adding colored reflections to non-metallic surfaces. It is important to proceed with great caution to avoid violating PBR principles, such as energy conservation—too severely.

Comparison of the results from both workflows in UE 5.8. Metallic workflow on the left, Specular workflow on the right.
Unreal’s compatibility layer
You can also continue to use the existing BaseColor and Metallic maps with Substrate. To do this, there is now a node in the Material Editor called Substrate Metalness-To-DiffuseAlbedo-F0 that can perform the conversion. The major drawback here is that this conversion is performed in real time at runtime. Runtime conversion comes at the cost of some performance.
Metal2F0
When I first started working with Substrate, it eventually occurred to me that there must be plenty of teams out there with large libraries of materials from previous projects based on the metallic workflow that was previously standard in Unreal. So I figured I could just write a little tool to convert those existing materials so they’d be directly compatible with Substrate. For new materials, you can take this into account right from the start, but recreating all the old materials from scratch would be an unrealistically huge effort. And that’s how Metal2F0 came about.

Metal2F0
- As you can see in the screenshots, there are two different modes of use:
- Single
- Single-file mode, to familiarize yourself with the program or to convert a single file.
- Batch
- Batch mode, in which you select a folder, configure the appropriate file extensions for each texture map, and then convert the entire folder at once.
Otherwise, the process is actually always the same and relatively simple. You select the BaseColor and Metallic textures. Since both individual maps (grayscale) and packed textures (RGB(A)) are supported for Metallic textures, you must select the desired color channel. Next, you define the output files and set the specularity value for the non-metallic areas. The default value of 0.04 (4%) corresponds to Unreal’s default setting. Depending on the source, the specularity value for non-metals in reality is said to range either between 0% and 8% or between 2% and 5%.
It’s also important to note that PNG, TGA, and EXR formats are supported.
Metal2F0 is both free and open-source, and there are also directly executable files available for download, so feel free to give it a try and let me know what you think.
Online- vs Offline Conversion
Whether to have Unreal convert your textures at runtime using the nodes it provides or to do so beforehand is a decision that must be made. You should consider whether the project has sufficient resources (processing cycles + VRAM) available at runtime for the additional calculations required by the shader-internal conversion, or whether the slightly higher storage consumption on the hard drive or SSD resulting from the pre-conversion is less of a concern.

