Texture Reference

Technical reference for Textures and Texture settings

Usage

Suffix

Compression

Base Color

_D

DXT1/BC1

Normal

_N

DXT5/BC5

Alpha/Opacity

_A

G8

Alpha/Opacity Edge

_AE

G8

Metallic

_M

G8

Height

_H

G8

Alpha/Rough/Metallic (packed)

_ARM

Masks/DXT1

Custom Input

_CI

G8

When creating a new Decal Designer graph instance the _ARM packed Texture needs compression settings changed to Masks, otherwise the material will not render correctly

Texture channel packing

Masks can be optionally packed into the RGB channels of a single texture rather than individual textures per mask in order to save memory.

For Decal Designer this is done by using any of the "_Pack" variants of the Substance Instance Factory. These variants output "_ARM" textures which channel pack Alpha Roughness and Metallic. In the Material Instance in Unreal, enable "UsePackedMask" and use your "_ARM" texture in the TEX_ARM slot.

Using the example of a 2048x2048 Decal material (BaseColor, Roughness, Normal, Opacity, Metallic) there is about a 55% memory saving for packed (11.1MB) vs non packed (24.8MB). For this reduction in memory there is a slight trade off in quality. Due to how DXT compression cross talk occurs it is possible for the quality of the channel packed version to look slightly lower, with small blocky artifacts present. Most of the time this quality difference isn't perceptible as the combination of roughness, normal and all other channels that comprise a material obscure the compression, especially when applied as a Decal over another material.

If memory is not a consideration and quality is absolutely paramount, use the non packed versions of the Decal Designer graph.

Change _ARM Texture compression to Masks

If you are not using the packed "_ARM" texture you can ignore this section.

To change the _ARM Texture to the correct compression setting first double click on the "_ARM" Texture in the content browser

In the Asset Window change Compression Settings from Default to Masks (no sRGB)

Masks compression uses DXT1 with no sRGB as the packed channels of the _ARM texture contain data that should be read in the linear format.

Unfortunately there is currently no way to set this compression setting in the Substance plugin output by default. These steps will need to be done each time you make a new "_ARM" texture. See below if you would like to fix these textures in bulk

Fixing compression settings on multiple Textures

If you have multiple textures which need compression settings changing or you are unsure if you missed setting any Textures up correctly there is a quick way to do this.

Search for all "ARM" textures in the content browser. Select all of the Textures you wish to check and then Right Click>Asset Actions>Bulk Edit via Property Matrix...

In the Bulk Edit window you can quickly see if any textures are incorrectly set.

Check the Compression Settings and sRGB columns are correct. If not you can multiple select any incorrect textures and change the compression settings in the right panel to fix them. Close the bulk edit window and Save All

Textures are out of sync with the Decal Designer graph

There is a bug in the Substance plugin (reported) that can creep up if you change a lot of parameters quickly in a very short period, usually affecting the Normal channel the most. Sometimes this bug fixes itself if you wait a second, other times you need to refresh the graph.

Although not usually an issue, Save All in Unreal before refreshing the graph

To refresh the graph Right Click>Reimport on the Substance Graph instance in the Content Browser. Your graph and output textures should now be back in sync with the parameters you have set. Save all once again.

If you are using _ARM textures in Unreal 4.24 or 4.25 and you refresh the graph, the ARM Texture will lose it's compression setting of MASK. Newer versions of Unreal do not have this issue. See ARM compression settings

Although I have tried a lot, unfortunately there is nothing I can do to fix this bug as it occurs within the Substance plugin. I was very disappointed when I found it. Hopefully it will be fixed in newer versions of the plugin.

Please note that refreshing the graph also refreshes any siblings under the parent Factory. For this reason it is good practise to copy a factory into each broad category as I have done in the Library e.g. Blood. This way you're not refreshing your entire Decal library each time, and a refresh takes seconds if the bug occurs.

Last updated