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.

Both Normal maps 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 should still be sRGB.

Factory Machine (MI_Factory_Base_01)

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, the simple hierarchy looks like this.

  • /FactoryGame/MasterMaterials/MM_Factory Master Material

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

  • /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, AO maps, and overlay density are created.

UV channel 0 is used for mapping the main surface, UV channel 1 is sometimes used for adding an AO map. Vertex colours are ignored.

How to use

Do you have a custom AO bake you wish to apply to your model?

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_Emsiv_AO and apply your AO map to it and customize the AO settings to taste. If desired you may copy /Utils/Materials/MI_MachineStarter into your mod folder and rename it, but you will need to set the custom AO map 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 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/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.

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 post Update 4.2 were provide by CSS (#PraiseBen) and are implemented in the material found in your Unreal starter project.

When marked as paintable the main Albedo texture is multiplied into the paint colours gated by the texture’s alpha. The alpha value is packed to allow for selection between several paint colours, these thresholds can be adjusted using the primary and secondary bias values, below are the defaults:

  • 0.50 < x ⇐ 1.0 : Albedo

  • 0.25 < x < 0.50 : Primary paint color

  • 0.0 ⇐ x < 0.25 : Secondary paint color

The 'ReflectionMap' is a Linear Texture (sRGB off) which is channel packed surface property texture (MREO) with the following properties:

  • R: Metalness

  • G: Roughness

  • B: Emission Mask

  • A: Ambient Occlusion

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. Given the complexity of its use there are some examples. 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.

  • MI_BeltItemStarter: Root material as needed for Conveyor Rendering.

  • MI_BeltItemStarter-LOD1: Conveyor material for close inspection.

  • MI_BeltItemStarter-LOD2: Conveyor material for distant rendering.

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.