Main Materials

This is a breakdown of how to use some of the master/common materials found in Satisfactory. While not exhaustive and updated manually it should be relatively accurate and helpful to anyone creating visual content. For performance’s sake it’s important to reuse materials in any game, Satisfactory especially so.

If you want to re-use other existing materials or textures that are not currently in the modding project, checkout this guide; however, materials with static compilation flags may not work perfectly by reference alone and may require more accurate reverse engineering.

It’s important to understand the UE4 concept of material instances.

Normal maps, AO Masks, and Surface Maps should have sRGB disabled. Unreal will do this automatically for normal maps, but is not smart enough to do it for all linear textures like the ReflectionMap on Factory_Baked. Albedo however should still be sRGB.

Factory Machine/Array (MM_Factory_Array)

Main material used on most buildable factory parts and recommended material for most building content. Works with the painting system. Uses an atlas of several material types, expects decals to be added with DecalColor_Masked and Decal_Normal to add detail, is responsible for the metal texture on most machines.

Several materials are based off the one master material, many exist for legacy purposes to not break old content, for example.

  • /FactoryGame/MasterMaterials/MM_Factory_Array Master Material

  • /FactoryGame/-Shared/Material/MI_Factory_Base_01 Instance of MM_Factory_Array

  • /FactoryGame/-Shared/Material/MI_Factory_Base_01_Emsiv_AO Instance of MI_Factory_Base_01

Inner workings

At runtime the game creates a texture atlas which contains the base colours from several parameters, notably the primary and secondary colour. Several other textures are then overlaid and mixed to create proper PBR surfaces for use in the game. A full list of parameters and their expected uses can be found by looking in the material editor of the version in the sample project.

Notably the master material is not directly applied to most machines and instead material instances that customize the properties like bloom, composite color, and overlay density are created.

UV channel 0 is used for mapping the main surface, UV channel 1 was previously for adding an AO map; however, that is no longer done. Vertex colours are ignored.

How to use

Do you wish to customize some properties not covered by the painting system like composite_color (I.E. The awesome sink does this)?

No? Apply MI_Factory_Base_01 directly as your base material and do not create any instances.

Yes? Create a material instance of MI_Factory_Base_01 and apply your custom settings. If desired you may copy /Utils/Materials/MI_MachineStarter into your mod folder and rename it, but you will need to adjust custom settings still.

Color Decals (DecalColor_Masked)

Used to add signs, hazard stripes, and screws to the surface of a mesh.

Inner workings

Satisfactory uses a deferred rendering pipeline, this means that new data can be injected onto already drawn surfaces to great effect. This is used to simply inject only the relevant new information found in the material leaving as much from the material before as possible.

This material performs a depth hack and may appear over other surfaces when viewed at distance, for performance and to avoid this glitch remove it from distant LODs.

UV channel 0 is used for the textures.

How to use

When making your mesh float geometry above your regular surface, use small values but not microscopic (~1 millimeter not micrometers). Adjust the UVs to show the decal in full or part as desired. Apply the /FactoryGame/Buildable/-Shared/Material/DecalColor_Masked material in editor. Or if your decals lack any transparent elements you may use the /FactoryGame/Buildable/-Shared/Material/Decal_Color material instead.

Normal Decals (Decal_Normal)

Used to add dents, details, and bolts to the surface of a mesh.

Inner workings

Satisfactory uses a deferred rendering pipeline, this means that new data can be injected onto already drawn surfaces to great effect. This is used to simply inject only the relevant new information found in the material leaving as much from the material before as possible.

When applying normals SF doesn’t merge with existing normals but instead overwrites them, it also re-calculates the tangent surface so that mirrored or scaled UVs don’t create artifacts.

This material performs a depth hack and may appear over other surfaces when viewed at distance, for performance and to avoid this glitch remove it from distant LODs.

UV channel 0 is used for the textures.

How to use

When making your mesh, make floating geometry above your regular surface to hold the decal. Use small distances but not microscopic (~1 millimeter not micrometers). Adjust the UVs to show the decal in full or part as desired. Apply the /FactoryGame/Buildable/-Shared/Material/Decal_Normal material in editor.

It is possible, and expected, to mirror flip and stretch the normal decals. Several details are half details that are mirrored against themselves and others use "9-slice" like approaches to stretch the parts of the mesh needed to reshape the detail. However, take care with your vertex normals. The vertex normals of your decal geometry should be as similar as possible to the underlying normals else visible seams appear at decal edges. If using Blender you may want to use the "Transfer Data" modifier.

Factory Baked (MM_FactoryBaked)

This material handles several separate use cases; items in world, items on belts, small detailed machines, and more. Works with the painting and conveyor systems. Requires unique textures per mesh to take advantage of. Never used directly and always used via material instances. Common examples are pipe connectors, power poles, and any conveyor belt item.

Inner workings

The full internal workings of this material for Update 4.2 & 5.0 were provide by CSS (#PraiseBen) and are implemented in the material found in your Unreal starter project. Importantly this material went under major changes, 'Legacy' behaviour is 4.2 and documented behaviour is 5.0. Pre 4.2 behaviour is not longer available.

When marked as paintable the main Albedo texture is faded out to match the primary or secondary colour. This is done via the 'AOMasks' Texture’s channel packing:

  • R: AO

  • G: PaintPrimary

  • B: PaintSecondary

The 'ReflectionMap' is a Linear Texture (sRGB off) which is channel packed texture. Just like AOMasks; however, it targets different properties. You can tell what the packing is by looking at a textures suffix, commonly MRE for baked materials.

  • R: Metalness

  • G: Roughness

  • B: Emission Mask

For full information on how to setup the material to perform as a Conveyor Item, please reference the Conveyor Rendering page.

UV channel 0 is used for all textures.

How to use

Setup a PBR painting workflow like Substance or Quixel and then configure its outputs to match what is listed in the Inner workings. Once your output textures are made, import them into your mod.

Next step is to create a material instance of MM_Factory_Baked and configure it according to your intended use. Located in the /Utils/Materials/ folder you will find several start materials you can copy into your mod and reconfigure at will:

  • MI_BakedMachineStarter: Common setup for factory machines like workbenches and power poles.

Factory Glass (MM_FactoryGlass)

Pair of glass materials to be swapped between at distance.

Inner workings

Classic transparent tint-able glass with scalable repeating dirt that fades to opaque with distance. On the LOD shader the m and s properties are for metalness and smoothness respectively. On the main shader adjust the fade falloff and distance fade property to help control the opacity. The normal and refraction textures are hard coded and not parameters that can be adjusted.

How to use

Apply a material instance of MM_FactoryGlass to LOD0. Add LODs to your model and tweak the model LOD timing and the materials fading to match up. On the new LOD model when, everything is opaque, switch to a material instance of MM_FactoryGlass_LOD. Keep the settings as identical as you can in both to reduce popping.

The wavy textures may seem overly harsh with the default settings on a new material instance. /Utils/Materials/ has two material instances you can copy with more common parameters compared to the other in-game glass. MI_StarterGlass for the transparent version and MI_StarterGlass_LOD for the distant LOD version.

Fog Plane (InputFog)

Used to fade objects to black as they enter belt connectors or other parts of a factory machine.

Inner workings

Simple Unreal Depth fog

How to use

Apply the material /FactoryGame/Buildable/-Shared/Material/InputFog to a mesh where you want the fading to start. It will take a short distance to fade 100% so the mesh surface should be away from the actual vanishing point.

The material can be applied directly to your static mesh, a custom static mesh, or the InputFogPlane mesh of which several instances are then placed in your blueprint. Post Update 4 it is recommended to use Fog Plane instances.