Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Properties of emissive (glowing) materials: Let There Be Light
Created: Jan 14 2024 by Last documented update: Jan 14 2024 by
This page documents glass shaders and their properties.
For an overview of emissive shaders, see Cheat sheet: Materials-> #emissive-materials
For an explanation of material properties and further links, see Material properties
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.
For a list of such templates, check here.
Find a ready-to-use glowing .mi file here.
You can find the shader under base/fx/shaders/device_diode.mt
The properties need to be documented at some point
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
)
Animated materials and their properties
For a list of effect materials, check Cheat sheet: Materials -> #fx-shaders
This shader glimmers
base\fx\_shaders\metal_base_glitter.mt
base\fx\_shaders\holo_mask.mt
base\fx\_shaders\hologram.mt
Holo material (example .mi)
base\fx_shaders\oda_helm.mt
You can find a mesh-as-effect as component inside base\characters\cyberware\player\a0_003__mantisblade\appearances\a0_003_wa__mantisblades_edge.app
Created: Jan 14 2024 by Last documented update: Jan 14 2024 by
This page documents glass shaders and their properties.
For an overview of glass shaders, see ->
For an explanation of material properties and further links, see
To turn on material transparency, the EnableMask
property must be set to True
!
Cyberpunk's glass material, such as base\materials\glass_onesided.mt
All glass materials can consider the vertex color attribute, which you can edit .
For a glass material without view distortion and warping, use base\vehicles\common\materials\glass_windshield_tinted_black.mi
base\environment\decoration\electronics\devices\device_neokitsch\textures\device_neokitsch_glass_black.mi
base\fx\shaders\parallaxscreen.mt
There are a number of ways you can colorize your glass. GlassTint is the texture used to determine glass color. TintColor is procedural color. TintFromVertexPaint value determines how much vertex color affects the glass color. GlassTint seemingly has the highest priority, as in it will override other color parameters. Below is a test result from the process of making a glass wing.
Hair and skin shader
Published: Apr 05 2024 by Last documented edit: Apr 05 2024 by
This page gives an explanation of properties for the hair and skin shaders.
You can look up different hairstyles and -colours under
You can look up information about skin under and
Or you can learn more about
Or you can learn how to make a with the
Find a ready-to-use bottle glass .mi .
Find a ready-to use glass .mi file
Find a ready-to-use example of a turned-off screen .
Download the here
Parameter name | Value |
---|
You can see the material in action on mana's mod, or download the .mi file from the
Property | Value |
---|
Opacity/OpacityBackFace | float, |
FrontFacesReflectionPower / BackFacesReflectionPower | float, |
TintColor/TintSurface | Surface and refraction color as RGB (copy from e.g. |
ParalaxTexture | Texture that your screen should display, e.g. |
LayersSeparation | 1 |
ScanlinesIntensity | 0 |
ScanlinesDensity | 0 |
Emissive | 0 |
Roughness | 0.200000003 |
Metalness | 0 |
baseMaterial |
|
TintColor | white (220, 220, 220, 0) |
IOR | 0.100000001 |
NormalStrength | 5.74905014 |
Roughness | base\materials\placeholder\black.xbm |
GlassRoughnessBias | 0 |
BlurRadius | 1 |
baseMaterial |
|
enableMask | true |
TintColor | RGB | colours the material |
IOR | 0.300000012 | Index of refraction |
Opacity | 1 | the material's transparency will be determined by the mask texture |
NormalStrength | 2.74905014 |
MaskTexture | texture (black/white) | black parts of the mask will not be affected by this material |
Roughness | texture (black/white) | use |
Normal | texture (normal map) |
|
GlassRoughnessBias | 0 | ??? |
MaskOpacity | 0.629999995 | 0 - 1, controls glass opacity |
BlurRadius | 0 | will blur the things behind the glass |
BaseColor
path to your texture.xbm (Diffuse/Albedo)
BaseColorScale
an RGB color value
Roughness
path to your roughnessMap.xbm (if you have one)
Metalness
path to your metalnessMap.xbm (if you have one)
Normal
path to your normalMap.xbm (if you have one)
Opacity | float, |
GlassTint | A texture to tint your glass. (TBD: Does it work as a mask?) |
TintColor | Glass tint as RGB (copy from e.g. |
IOR |
Refraction Depth | float |
FresnelBias | float, |
BlurRadius | float, |
VertexColorTint | float, |
Strand_ID | Texture - Paths to an identity map ( |
Strand_Gradient | Texture - Paths to a root map ( |
Strand_Alpha | Texture - Paths to an opacity mask texture ( |
RoughnessScale | Scalar with a decimal value between 0 and 1.0. Determines how rough or smooth hair material look. 0 = least rough (high specular, shiny reflection characteristics). 1.0 = most rough (high diffuse, matte reflection characteristics). Hair will look unnatural if this is too low (shiny). |
RoughnessBias | Scalar with a decimal value between 0 and 1.0 that is applied between min and max |
AlphaCutoff |
Flow | Texture - Paths to an anisotropic rotation map ( |
FlowStrength | Scalar with a decimal value between 0 and 1.0. Anisotropic materials have unique reflection characteristics as a result of their grooved/ridged surface. The more anisotropic a material is, the more its reflection is influenced (stretched/blurred) by the direction of its grooves/ridges. 0 = fully isotropic. 1.0 = fully anisotropic. Hair should have high or full anisotropy. |
VertexColorStrength | Scalar with a decimal value between 0 and 1.0. Determines how much influence vertex colour has in the material. Vertex colour is a mesh attribute (colour, red channel). Cyberpunk hair meshes are vertex coloured red on the cap mesh and the innermost layer of hair clumps. They fade to black at the outermost layer of hair clumps. RGB 255, 0, 0 = max dull/dark. RGB 0, 0, 0 = max bright/glossy. |
Scattering | Scalar with a decimal value between 0 and 1.0. Effect is not well understood at this time. Related to some internal light scattering function in hair shader. It affects the colour and reflection characterics of hair materials. There is some interaction between this and advanced game options for hair rendering. Specifically AlphaShifts R, TT, TRT (light scattering modes), single scattering and multiple scattering. Default values can be overridden with CET console commands. e.g. |
ShadowStrength |
ShadowMin |
ShadowMax |
ShadowRoughness |
DebugHairColor |
HairProfile | HairParameters - Paths to a hair profile or |
Albedo | Texture - Paths to an albedo texture ( |
SecondaryAlbedo | Texture - Paths to a secondary albedo texture ( |
SecondaryAlbedoInfluence |
Normal | Texture - Paths to a primary global normal map ( |
DetailNormal | Texture - Paths to a secondary global normal map ( |
Roughness |
DetailRoughnessBiasMin |
DetailRoughnessBiasMax |
MicroDetailUVScale01 | Scalar - UV scale compensation factor for |
MicroDetailUVScale02 | Scalar - UV scale compensation factor for |
MicroDetail | Texture - Paths to a microdetail texture ( |
MicroDetailInfluence | Scalar with a decimal value between 0 and 1.0. Determines normal strength of |
TintColorMask |
TintColor | Color - RGB uint8 colour value multiplied with the per pixel colour of |
TintScale |
SkinProfile |
Detailmap_Stretch |
EmissiveMask |
EmissiveEV |
Detailmap_Squash |
CavityIntensity |
Bloodflow | Texture - Path to a bloodflow (vein) texture ( |
BloodColor |
DetailNormalInfluence |
How materials work, and how you can configure them
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.
If you want to see a list of materials grouped by class, check Cheat sheet: Materials
If you want to learn how material assignments work on the object, check 3d objects: .mesh files
If you want to understand reusable material templates, please check Re-using materials: .mi
The Modding Guides section has multiple guides on editing materials, e.g. Changing materials, colors and textures or AMM: Textured items and Cyberpunk Materials using Custom Props
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.
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.
To find a shader template, use the (you can copy the query):
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.
The interesting bit is on the right side of the arrow in the picture above, since it specifies the type of parameter:
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).
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.
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.
Created: Jan 14 2024 by manavortex Last documented update: Jan 14 2024 by manavortex
This page documents liquid shaders and their properties.
For an explanation of material properties and further links, see Material properties
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.
It shares various properties (such as IOR, FresnelBias, BlurRadius) with the glass shader.
Find a ready-to use (black) liquid .mi file here.
Materials for colouring splines (e.g. monowire)
Created: Oct 19 2024 by Last documented update: Oct 19 2024 by
Based on research by Aanderz and wizard bakery
This page documents monowire materials and their properties.
The monowire's wire is a spline
, not a regular mesh. It will appear invisible in 3d preview and behave in interesting ways if you put any different shader on it than the intended one. Please fuck around, find out, and then document your results!
base\fx_shaders\nanowire_string_spline_deformed.mt
Documentation of properties, with screenshots if applicable
Sets a color from within the file. Hex codes corresponds to rows and columns in substance painter.
Depot path to the base material from which the surface inherits its properties (lightbreaking, subsurface scattering…).
Example values:
base\surfaces\materials\paint\car_paint\car_paint_metallic_01.mltemplate
base\surfaces\materials\metal\enameled_hq\enameled_hq_01_30.mltemplate
Scaling (tiling multiplier) of the material across the mesh. The higher the value, the smaller it is.
Clamps metalness input levels. This value corresponds to a (generated?) greyscale texture across the entire mesh.
Clamps metalness output levels. This value corresponds to a (generated?) greyscale texture across the entire mesh.
Applies or ignores the base mesh's normal map to this layer. This value can be greater than 1!
For logos: X-offset on the texture. Used for e.g. targeting a certain label.
For logos: Y-offset on the texture. Used for e.g. targeting a certain label.
Transparency of the layer, 0 means that it isn't displayed, 1 means that it's fully visible.
TODO
Determines the roughness of a material
You can only use microblends if this layer's mask is not fully white.
Depot path to the base microblend texture (xbm), a seamless pattern which will be projected on the surface. Think of an extra normal map that tiles across a layer.
A crossfade between the layer mask and the microblend mask (the black parts of the microblend texture). If you set this to >=1, then the layer will be blocked out where the microblend texture is black.
This requires the xbm's AlphaChannel (transparency) to be set up.
X-offset for the microblend texture.
Y-offset for the microblend texture
Properties of the multilayered material
Created: Jan 14 2024 by Last documented update: Jan 14 2024 by
This page documents multilayered shader properties.
For an overview of glass shaders, see ->
For an explanation of material properties and further links, see
If a layer with a greyscale mask is invisible, set MicroblendContrast in the .mlsetup
to 1!
For a full documentation, check the corresponding .
To set it up, use these keys for the "values" array of your material:
as float, 1.0-2.0:
The refraction properties of your material. (Water > glass > air)
See for a picture
Scalar with a decimal value between 0 and 1.0. Determines how wet/shiny or dry/matte skin material appears. 0 = least rough (most wet/shiny). 1.0 = most roughness (most dry/matte). See for a picture
Type: CMaterialParameter… | CKeyValue | explanation |
---|---|---|
Property name(s) | Explanation |
---|---|
Like , this determines the scaling of the microblend. The higher the value, the smaller it is.
Like for the microblend.
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
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)
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
MainColor | Influences the color but is overridden by Temperature |
EmissiveMaskPower | Influences the brightness of the Monowire, but Temperature takes priority. |
StartGradient | Influences the gray wire near the hand. Set to -1 to disable. |
NoiseScale | Influences the animation of the Monowire, but Temperature takes priority. |
NoiseAmount | Noise scale and amount set how much the wire wobbles when used. Unstable wires, which wobble across the entire screen, are set to a scale of 1.5 and amount 50. |
Thickness | Influences the thickness of the Monowire. |
MinimumEmissive | Influences the brightness of the Monowire, but Temperature takes priority. |
Emissive | Influences the brightness of the Monowire, but Temperature takes priority |
Temperature | The key value. The higher the value, the brighter it gets, and it changes color in the following order as it increases: black → red → orange → yellow → white |
GlobalNormal | path\to\normal.xbm |
MultilayerMask |
MultilayerSetup | path\to\material.mlsetup |
path\to\mask.mlmask ()
Properties of textured (PBR) materials
Created: Jan 14 2024 by manavortex Last documented update: Feb 20 2024 by manavortex
This page documents textured (PBR) shaders and their properties.
For an overview of PBR shaders, see Cheat sheet: Materials-> #textured-materials
For an explanation of material properties and further links, see Material properties
The most commonly used material for anything textured is engine\materials\metal_base.remt
. Despite its name, this material isn't necessarily metallic.
To use this material as emissive (light), check Emissive Material Properties
You can change the colour of a texture on-the-fly by using the BaseColor
property (color picker blend file here)
The material can be transparent by setting enableMask
to True
(and make sure its not overriden in the material chain). When set, the material will use the alpha
channel of the BaseColor.
To make your mesh load a texture, use the following CKeyValuePair
s in your material's "values" array:
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
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:
You can find a ready-to-download template here.
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
path to your normalMap.xbm (if you have one)
BaseColor
base\materials\placeholder\white.xbm
Normal
optional: path to your normal map
Roughness
optional: path to your roughness map
RoughnessBias
0.200000003
BaseColorScale
Colour as x/y/z values (color picker blend file here)
LayerTile
Material scaling (zoom on surface) > 1 zooms in, >1 zooms out