Materials: How to configure them
An overview and introduction
You can see a material's default properties by opening the
.(re)mt
file in WolvenKit and inspecting the parameters array. 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.
To set it up, use these keys for the "values" array of your material:
GlobalNormal | path\to\normal.xbm |
MultilayerMask | |
MultilayerSetup | path\to\material.mlsetup |

an example multilayered material
The most commonly used material for anything textured is
engine\materials\metal_base.remt
. Despite its name, this material isn't necessarily metallic.To make your mesh load a texture, use the following
CKeyValuePair
s in your material's "values" array:BaseColor | path to your texture.xbm (Diffuse/Albedo) |
Roughness | path to your roughnessMap.xbm (if you have one) |
Metalness | path to your metalnessMap.xbm (if you have one) |
Normal |

example use of metal_base.remt as a textured material
The .xbm is a container around the texture. Export the xbm to png via WolvenKit.
If your texture has any brightness issues in-game, toggle around the isGamma flag during import.
The expected
isGamma
settings are:normals: false
diffuse/albedo: true
anything that is used in .inkatlas files: true
LayerTile | Material scaling (zoom on surface) |
The most commonly used material for anything textured is
engine\materials\metal_base.remt
. Despite its name, this material isn't necessarily metallic.To turn the material into plastic, use the following
CKeyValuePair
s in your material's "values" array:BaseColor | base\materials\placeholder\white.xbm |
Normal | optional: path to your normal map |
Roughness | optional: path to your roughness map |
RoughnessBias | 0.200000003 |
BaseColorScale |
You can make
engine\materials\metal_base.remt
glow by adding the correct parameters, or you can poke through the game files and search for emissive > .mi
to find Cyberpunk material templates to learn from. Emissive | path to emissive texture, e.g. engine\textures\editor\white.xbm
The texture works like an alpha mask. |
EmissiveEV | float, e.g. 2.0 : emissive brightness. Brightness varies depending on your colour. Unless you want to actively blind people, you might want to stay below 4. |
EmissiveColor | Glow colour as RGB (copy from e.g. mi_neokitsch_fridge_z_emissive.mi ) |
Cyberpunk's glass material, such as
base\materials\glass_onesided.mt
Opacity | float, 0.0 - 1.0 : Controls glass transparency. |
GlassTint | A texture to tint your glass. (TBD: Does it work as a mask?) |
TintColor | Glass tint as RGB (copy from e.g. mi_neokitsch_fridge_z_emissive.mi ). |
IOR | |
Refraction Depth | float 0.0-10.0: Control refraction amount here. |
FresnelBias | float, 0.0 - 2.0 : How much does the glass behave like a lens (that is, warp the picture behind it)? |
BlurRadius | float, 0.0 - 1.0 : Blur amount when looking through the glass |
For a glass material without view distortion and warping, use
base\vehicles\common\materials\glass_windshield_tinted_black.mi
Opacity/OpacityBackFace | float, 0.0 - 5.0 : Controls glass transparency. OpacityBackFace will only affect inside-facing normals. |
FrontFacesReflectionPower / BackFacesReflectionPower | float, 0.0-10.0 : How strongly should the glass reflect? |
TintColor/TintSurface | Surface and refraction color as RGB (copy from e.g. mi_neokitsch_fridge_z_emissive.mi ). |
base\environment\decoration\electronics\devices\device_neokitsch\textures\device_neokitsch_glass_black.mi
base\fx\shaders\parallaxscreen.mt
ParalaxTexture | Texture that your screen should display, e.g. base\materials\placeholder\black.xbm |
LayersSeparation | 1 |
ScanlinesIntensity | 0 |
ScanlinesDensity | 0 |
Emissive | 0 |
Roughness | 0.200000003 |
Metalness | 0 |
Cyberpunk has its own liquid shader(s) such as
base\materials\fillable_fluid_vertex.mt
. Projecting this material onto a submesh will turn the submesh into a transparent container filled with the liquid you specified. If you flip the container on its head, the fluid will drain to the bottom and fill it up again.To control the offsets, you need to adjust the vectors FluidBoundingBoxMax and FluidBoundingBoxMin.
TintColor | liquid's color as RGB (copy from e.g. mi_neokitsch_fridge_z_emissive.mi ). |
FillAmount | float, e.g. 0.0 : Probably works in combination with the bounding box. You'll have to experiment. |
FluidBoundingBoxMin
FluidBoundingBoxMax | Vectors (X, Y, Z, W) controlling the maximum distance from the container's walls. Each value is a float (decimal) speficying the axis in question - you'll simply have to play around with them (you can ignore W).
For a bottle material I've used
Max: 0.03, 0.03, 0.155
Min: -0.03, -0.03, 0.09 |
Last modified 3d ago