Material properties

How materials work, and how you can configure them

Summary

Last documented update: Apr 20 2024 by manavortex

This page gives an explanation and overview about material properties. For more detailed explanation of a specific kind of material, please check the nested pages in the wiki's file tree, or check the "next" link at the bottom of the page.

Material properties

The properties of a material (or a shader) are defined in its shader file. Those files have the extension .mt or .remt and are widely used and extended.

You should never replace a .mt or .remt — this will affect every single thing using the material. If you want to change specific surfaces, look out for the right .mi file and change that, or create one and start custompathing.

Checking material properties

You can find a wiki page with an overview of shaders under Shader Docs, but it needs expanding. Maybe you'd like to contribute?

You can see a material's default properties by opening the .(re)mt file in WolvenKit and inspecting the parameters array.

yourMaterialType > .remt|.mt

Any properties that you don't overwrite by adding them to your CMaterialInstance or .mi file will take the default properties specified in the file.

Here, you can also see what value a shader template will use if you don't give it any properties.

What do these mean?

The interesting bit is on the right side of the arrow in the picture above, since it specifies the type of parameter:

Type: CMaterialParameter…CKeyValueexplanation

Vector

Vector4

A vector with X, Y, Z, W (coordinates and space). This is also used for colour values (Wolvenkit usually supports those).

Texture

RRef:Texture

A texture (.xbm) via DepotPath

Color

Color

A color (RGB/color picker)

MultilayerMask

RRef:MultilayerMask

a multilayerMask (.mlmask) via depotPath

MultilayerSetup

RRef:MultilayerSetup

a multilayerSetup (.mlsetup) via depotPath

Scalar

CFloat/CDouble

a numeric value with decimals. Float has 7 decimals, Double has 15

TextureArray

???

a texarray via depotPath

StructBuffer

???

RRef:.hp

A hair profile (.hp) via depotPath

Transparency

Whether or not a material can be transparent depends on the shader. Transparency can be switched on/off via the EnableMask property, or clamped via AlphaThreshold (see Shared properties).

Glow / Light

Whether or not a material emits light depends on the shader, e.g. metal_base.remt supports this via the Emissive texture property. For a documentation of this, see Emissive Material Properties.

Shared properties

This section will list properties that are common to many materials and give a short explanation of what they do.

Not all materials use all of these properties.

The same parameters can be named differently across different shaders (e.g the base texture can be called BaseColor, Diffuse, or Albedo).

Properties with texture paths can end in Texture, e.g. BaseColorTexture instead of BaseColor.

As this is a horrible mess, it is easiest to look up the properties in the shader if you're not certain.

Property name(s)Explanation

LayerTile LayerScale

Material scaling (zoom on surface) > 1 zooms in, >1 zooms out

Roughness Rough

Whether a surface is rough or smooth. White: full, Black: none

Metalness Metallic

Whether a surface is metallic or not. White: full, Black: none

Normal GlobalNormal

A material's bump map. Yellow normal maps are called swizzled.

BaseColor Diffuse Albedo

A material's base colour value. This is usually a colour, but it can also be a vector4. Wolvenkit usually supports this, but if you don't see a colour picker, please write a ticket (and use the color picker .blend)

AlphaThreshold

Clamps transparency. (TODO: how exactly?)

EnableMask

Should the material enable masking? (will use the diffuse texture's alpha channel)

Mask

A mask (transparency) texture (like a layer mask in Photoshop)

Roughness/Metalness

Last updated