Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
RED4 shaders (mt)
Every visual asset in REDengine uses a specific shader, designated by REDengine as MT (.mt) files. Even meshes "without a shader" are in-fact using a debug shader such as debug_coloring.mt. Shaders are the most basic expression of a surface, ranging from glass, skin, concrete, and steel. Each shader contains a combination of constant hidden-variables, and exposed variables for artists to tweak. For example, all skin exhibits some similar properties such as subsurface scattering so there is no reason to expose this; artists cannot use the skin shader without subsurface scattering. However skin color can vary dramatically, so these parameters are exposed to the artists using textures or color parameters. Artists are able to create "instances" of shaders called Material Instances, which contain localized variations of the textures and properties exposed by the base shader.
For an overview of the most common shaders and their use cases, see Cheat sheet: Materials
Materials are a specific instance of a shader, to be used on a mesh or subset of meshes. Materials are contained inside mi (material instance) files or within mesh files themselves as a CMaterialInstance chunk. While internal material instance chunks can be handy to have inside the mesh, external mi files can be used for multiple meshes. It's important to remember that materials are simply instances of shaders. The variables contained within the material only take effect when those same variables are present inside the base shader. For example, if RoughnessTexture is not present within the base shader adding this property to a material instance will have absolutely no effect.
Meshes rarely use shaders directly, but instead rely on any number of .mi files (check the player's skin materials for an example, or check Re-using materials: .mi ->#why-do-i-need-this).
If the baseMaterial path ends in .mi, you're looking at a daisy chain.
This approach lets you bundle shared properties. If you have 30 materials with 4 properties and 3 of them never change, then it's the perfect time for a .mi file.
Daisy-chaining those together lets you define and refine templates. For example, every human has skin, and all skin has veins and blood vessels — but the player, your average Maelstrom gangoon and bog-standard vanilla NPCs are not using the same textures. And that is before skin colours come in.
Think of them as photoshop layers, applied in reverse order: the first one that's loaded is the shader itself with its default properties, then each .mi in the chain gets applied on top of that.
Properties in the mesh will be applied last, and will thus overwrite anything from the chain.
The closer to the mesh, the more override!
Overview and introduction
This is the landing page for materials in Cyberpunk 2077. It contains a definition and a rough overview.
Check the section's sub pages in the wiki's navigation tree for more detailed information about the different kinds of materials. Additional material-related information can be found here:
Handy list of references: Cheat sheet: Materials
Re-using materials as templates: Re-using materials: .mi
How it works in the example: 3d objects: .mesh files
General information: Multilayered: Cyberpunk's supershader
Properties and definition: Multilayered Material: Properties
Preview images: Multilayered: Previews
In its original state, a 3d objects: .mesh files is a collection of vertices (pixels). The space between those vertices is filled by faces, which form the 3d object's surface.
The shader is the thing that goes on top of the surface, rendering a material such as glass, skin, concrete, steel…
Without a shader, objects would be invisible in the game, the surface simply being transparent. In Cyberpunk, a default shader will be assigned in such cases (such as debug_coloring.mt).
In Cyberpunk 2077, REDEngine shaders are implemented as .mt
/.remt
files.
If you have ever messed with an item's materials, then you already have.
To use a shader, you create a Material Instance, where you can configure the parameters. Not every parameter of a shader can be configured: since skin always has subsurface scattering, it makes no sense to tweak this. But since skin color already varies dramatically if you don't throw exotic chrome into the mix, you can change them easily via tint.
For details how materials are used on a mesh, see the 3d objects: .mesh files, or learn how materials can be defined in a mesh via #materialinstance-the-local-material or loaded externally from
In the context of Cyberpunk, a material is the thing that lets the shader define the surface properties of a 3d objects: .mesh files. Typically, you create a local instance, which will then pull in a shader via baseMaterial
.
The property baseMaterial
can point at a .mt
/ .remt
file directly, or to an intermediary .mi
file:
Each part of a mesh (submesh) can have a different material assigned.
Do you want to know more? ( =>#chunkmaterials)
For a hands-on guide and something to play around/experiment with, check Textured items and Cyberpunk materials.
If you have modded other games, you're used to PBR materials with a bunch of textures like diffuse, normal, metalness etc.
See Cheat sheet: Materials -> #pbr-material for a list.
To change a textured material, see Changing materials, colors and textures -> #step-2-finding-the-correct-appearance
Did you know? You can make Cyberpunk's default textured material glow.
This is specific to Cyberpunk, and it is incredibly cool. If you're used to textured materials, you're probably going to hate it at first, but it has incredible versatility and re-usability.
What is a multilayered material and how does Multilayered: Cyberpunk's supershader work?
What are these properties, how do I use them?
A decal material is applied to a decal (sub)mesh, which is located on the surface of another mesh like a sticker.
There are various kinds of emissive materials. See Cheat sheet: Materials -> #emissive-materials for a list.
What kinds of textures exist, and what do they do?
This page aims to give an overview on different kinds of textures and what the game is using them for.
If you just want to make textures and don't care for the theory, you can find the guides under Modding Guides -> Textures and LUTs
By default, all textures in Cyberpunk2077 are Y-flipped (upside down). WolvenKit will take care of that for you during import/export via the VFlip
property.
If you just want to know how to import/export textures, see here.
This texture is directly projected onto a mesh to give it colour and appearance. Used by shaders like metal_base.remt
.
In the game files, these files will be named <name>_d.xbm
(e.g. base\environment\decoration\food\packaged_food\textures\synthetic_snack_01_d.xbm
)
When importing a diffuse texture with a non-default file name, make sure to check the isGamma box in the import properties.
Also known as "bump map", this texture is used to give a mesh depth and surface details. Used by shaders like metal_base.remt
.
In the game files, these files will be named <name>_n.xbm
(e.g. base\environment\decoration\food\packaged_food\textures\synthetic_snack_01_n.xbm
)
For a guide how to make your own normal maps, see here.
Also known as "gloss map", this texture defines how light scatters across the surface of your 3d model. Used by shaders like metal_base.remt
.
For an overview image, see Roughness/Metalness overview.
In the game files, these files will be named <name>_n.xbm
(e.g. base\environment\decoration\food\packaged_food\textures\synthetic_snack_01_r.xbm
)
Also known as "metallic map", this texture defines which parts of the material behave like metal and which parts don't. Used by shaders like metal_base.remt
.
For an overview image, see Roughness/Metalness overview.
In the game files, these files will be named <name>_m.xbm
(e.g. base\envment\decoration\food\packaged_food\textures\synthetic_snack_01_m.xbm
)
Used for in-game items and UI elements, these textures contain a collection of images. They are made available to the game via inkatlas files.
In the game files, these files will be named atlas_<name>.xbm
(e.g. base\gameplay\gui\fullscreen\hacking_minigame\atlas_minigame_programs.xbm
)
How materials work, and how you can configure them
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.
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 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.
The interesting bit is on the right side of the arrow in the picture above, since it specifies the type of parameter:
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
.
We do not have official documentation from CDPR about how shaders are used by artists. Thus any 2d/3d artist is looking at hundreds of black-box shaders with unknown usage. This is extremely demotivating for anyone looking to bring new assets to life with REDengine. The following list of tables is an attempt to make life easier for artists by using the community to document commonly used shaders.
The name and path of each shader will be documented by the header.
Next we are using a table for each texture parameter with the exact name listed by CDPR in the w2mg file, how REDengine uses each specific RGBA channel, and the usable range of the channel if not 0-1/0-255.
When applicable, vertex color properties will be listed underneath the texture table with a similar format.
Scalar, vector, color, and other properties will follow with their own unique description table.
An asterisk (*) is used to notate some degree of uncertainty, or need for more independent testing.
skin
The DetailNormal texture contains generic normal details that are shared between most faces. This is not a tiling/procedural texture. The DetailNormalInfluence scalar parameter can be used to lower the intensity to simulate makeup or synthetic skin.\
The MicroDetail texture contains a microblend tiling texture used to add procedural detail to the normal map. We believe the Roughness texture blue channel is used to mask parts of the face from exhibiting this detail, such as the lips, eyelids, and ears.
mesh_decal
DiffuseColor multiplies against the texture color to add procedural color
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.
There are many different other glass shaders, this one is just the most basic that is used for small objects.
AdTexture: TV screen will play looping animations that are actually sprites like a .gif. We believe this is for optimization purposes since videos are heavy.
TilesWidth, TilesHeight, and PixelsHeight combine will help the game define the dimension of your tile (sprite) on the sprite sheet.
You should calculate your sprite sheet dimension so it completely fits in a square sheet. For example, a simple dimension is 5x5 tiles with 300x300 pixel sprite. Such a dimension will produce animation with 25 frames of a square sprite.
More examples of such sprite sheets can be found in the path below
There are many screen shaders, this one is used for small TV screens.
If used cleverly with a properly done mesh, you can make use of this shader to put animation on your clothing or other items
Last documented update: Apr 20 2024 by
If you want to see a list of materials grouped by class, check
If you want to learn how material assignments work on the object, check
If you want to understand reusable material templates, please check
The section has multiple guides on editing materials, e.g. or
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 .
You can find a wiki page with an overview of shaders under , but it needs expanding. Maybe you'd like to contribute?
To find a shader template, use the (you can copy the query):
Type: CMaterialParameter… | CKeyValue | explanation |
---|
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 ).
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 .
As this is a horrible mess, it is easiest to if you're not certain.
Property name(s) | Explanation |
---|
This section gives you an overview of shaders and their properties. For a detailed explanation, see .
Texture | Red | Green | Blue | Alpha |
---|
Vertex Colors | Description |
---|
Properties | Description |
---|
Texture | Red | Green | Blue | Alpha |
---|
Properties | Description |
---|
Texture | Red | Green | Blue | Alpha |
---|
Vertex Colors | Description |
---|
Properties | Description |
---|
Texture | Red | Green | Blue | Alpha |
---|
Properties | Description |
---|
It's recommended that you use free tools like to make .gif and convert it into a sprite sheet for AdTexture
Albedo | Color | Color | Color | ? |
SecondaryAlbedo | ? | ? | ? | ? |
Normal | Normal | Normal | None | ? |
DetailNormal | Additive Normal | Additive Normal | None | ? |
Roughness | Roughness | None | MicroDetail mask (0.5-1)* | ? |
MicroDetail | Additive Normal | Additive Normal | None | ? |
TintColorMask | ? | ? | ? | ? |
Detailmap_Stretch | Additive Normal | Additive Normal | None | ? |
Detailmap_Squash | Additive Normal | Additive Normal | None | ? |
EmmisiveMask | ? | ? | ? | ? |
Bloodflow | ? | ? | ? | ? |
Red | Ambient Occlusion* |
Green | Subsurface Scattering Mask |
Blue | Improved Facial Lighting Mask |
SecondaryAlbedoInfluence | ? |
SecondaryAlbedoTintColorInfluence | ? |
DetailRoughnessBiasMin/Max | ? |
MicroDetailUVScale01/02 | ? |
MicroDetailInfluence | Controls MicroDetail normal intensity |
TintColor | ? |
TintScale | ? |
SkinProfile | ? |
EmissiveEV | ? |
CavityIntensity | ? |
BloodColor | ? |
DetailNormalInfluence | Controls DetailNormal normal intensity |
DiffuseTexture | Color | Color | Color | Opacity Mask |
SecondaryMask | ? | ? | ? | ? |
NormalTexture | Normal | Normal | None | ? |
NormalAlphaTex | ? | ? | ? | ? |
NormalsBlendingModeAlpha | ? | ? | ? | ? |
RoughnessTexture | Roughness* | Roughness* | Roughness* | ? |
MetalnessTexture | Metalness* | Metalness* | Metalness* | ? |
VertexOffsetFactor | ? |
DiffuseColor | Procedural Color |
DiffuseAlpha | Alpha |
UVOffsetX/Y | ? |
UVRotation | ? |
UVScaleX/Y | ? |
SecondaryMaskUVScale | ? |
SecondaryMaskUVInfluence | ? |
NormalAlpha | ? |
UseNormalAlphaTex | ? |
NormalsBlendingMode | ? |
RoughnessScale | ? |
RoughnessBias | ? |
MetalnessScale | ? |
MetalnessBias | ? |
AlphaMaskContrast | ? |
RoughnessMetalnessAlpha | ? |
AnimationSpeed | ? |
AnimationFramesWidth | ? |
AnimationFramesHeight | ? |
DepthThreshold | ? |
GlassTint | Color | Color | Color | ? |
MaskTexture | ? | ? | ? | ? |
Roughness | Roughness | Roughness | Roughness | ? |
Normal | Normal | Normal | Normal | ? |
Red | Color |
Green | Color |
Blue | Color |
TintColor | Procedural Color |
Opacity | Overall Opacity |
OpacityBackFace | Opacity of back face |
TintFromVertexPaint | Control how much vertex color will tint the glass color. If set to max value, vertex color will completely replace TintColor. |
FrontFacesReflectionPower | How much front face reflect light |
BackFacesReflectionPower | How much back face reflect light |
IOR | Index of Refraction? |
RefractionDepth | ? |
FresnelBias | ? |
GlassSpecularColor | Color of light reflected from glass |
NormalStrength | Control how much normal map affects mesh |
NormalMapAffectsSpecular | Control how much normal map affects reflected light |
SurfaceMetalness | Metalness |
MaskOpacity | ? |
GlassRoughnessBias | ? |
MaskRoughnessBias | ? |
BlurRadius | ? |
BlurByRoughness | ? |
AdTexture* | Color | Color | Color | Color |
DirtTexture | Color | Color | Color | Color |
TilesWidth* | How many tiles are on the horizontal axis of the sprite sheet |
TilesHeight* | How many tiles are on the vertical axis of the sprite sheet |
PlaySpeed | Speed of which animation will play |
InterlaceLines | How much screen scanline is visible |
PixelsHeight* | Height of sprite in pixel |
EmissiveEV | Energy Voltage of light emission |
EmissiveEVRaytracingBias | Energy Voltage of light emission by Raytracing |
EmissiveDirectionality | ? |
EnableRaytracedEmissive | Enable Raytraced Emission |
BlackLinesIntensity | ? |
BlackLinesRatio | ? |
BlackLinesSize | ? |
LinesOrDots | ? |
DistanceDivision | ? |
Metalness | ? |
Roughness | ? |
IsBroken | If enabled, the animation will have a broken TV overlay effect |
UseFloatParameter | ? |
UseFloatParameter1 | ? |
AlphaThreshold | ? |
DirtOpacityScale | Opacity of Dirt Texture |
DirtRoughness | Roughness of Dirt |
DirtUvScaleU | UV Scale of Dirt Texture |
DirtUvScaleV | UV Scale of Dirt Texture |
HUEChangeSpeed | ? |
| Vector4 | A vector with X, Y, Z, W (coordinates and space). This is also used for colour values (Wolvenkit usually supports those). |
| RRef:Texture | A texture (.xbm) via DepotPath |
| Color | A color (RGB/color picker) |
| RRef:MultilayerMask |
| RRef:MultilayerSetup |
| CFloat/CDouble | a numeric value with decimals. Float has 7 decimals, Double has 15 |
| ??? | a texarray via depotPath |
| ??? |
RRef: |
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 |
BaseColor Diffuse Albedo |
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) |
This page documents glass shaders and their properties.
For an overview of glass shaders, see Cheat sheet: Materials-> #glass
For an explanation of material properties and further links, see Material properties
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 directly in Blender.
Find a ready-to-use bottle glass .mi here.
For a glass material without view distortion and warping, use base\vehicles\common\materials\glass_windshield_tinted_black.mi
Find a ready-to use glass .mi file here
base\environment\decoration\electronics\devices\device_neokitsch\textures\device_neokitsch_glass_black.mi
base\fx\shaders\parallaxscreen.mt
Find a ready-to-use example of a turned-off screen here.
Download the .mi file here
You can see the material in action on mana's Barong Tagalog mod, or download the .mi file from the resource repository
Properties of textured (PBR) materials
This page documents textured (PBR) shaders and their 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 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:
This page documents liquid shaders and their 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.
a (.mlmask
) via depotPath
a (.mlsetup
) via depotPath
A hair profile () via depotPath
A material's . Yellow normal maps are called swizzled.
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 (and use the )
Created: Jan 14 2024 by Last documented update: Jan 14 2024 by
Parameter name | Value |
---|---|
Property | Value | |
---|---|---|
Created: Jan 14 2024 by Last documented update: Jan 14 2024 by
For an overview of glass shaders, see ->
For an explanation of material properties and further links, see
For a full documentation, check the corresponding .
Created: Jan 14 2024 by Last documented update: Feb 20 2024 by
For an overview of PBR shaders, see ->
For an explanation of material properties and further links, see
To use this material as emissive (light), check
You can change the colour of a texture on-the-fly by using the BaseColor
property (color picker blend file )
The material can be transparent by setting enableMask
to True
(and make sure its not overriden in the ). When set, the material will use the alpha
channel of the BaseColor.
You can find a ready-to-download template .
Created: Jan 14 2024 by Last documented update: Jan 14 2024 by
For an explanation of material properties and further links, see
It shares various properties (such as IOR, FresnelBias, BlurRadius) with the .
Find a ready-to use (black) liquid .mi file .
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
Index of refraction as float, 1.0-2.0:
The refraction properties of your material.
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
VertexColorTint
float, 0.0 - 1.0
: Transparency of vertex colour tint
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
).
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
baseMaterial
base\materials\glass_onesided.mt
TintColor
white (220, 220, 220, 0)
IOR
0.100000001
NormalStrength
5.74905014
Roughness
base\materials\placeholder\black.xbm
GlassRoughnessBias
0
BlurRadius
1
baseMaterial
base\materials\glass_onesided.mt
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 base\materials\placeholder\white.xbm
for maximum roughness
Normal
texture (normal map)
path\to\your\normal_n01.xbm
GlassRoughnessBias
0
???
MaskOpacity
0.629999995
0 - 1, controls glass opacity
BlurRadius
0
will blur the things behind the glass
LayerTile | Material scaling (zoom on surface) > 1 zooms in, >1 zooms out |
TintColor | liquid's color as RGB (copy from e.g. |
FillAmount | float, e.g. |
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 |
GlobalNormal | path\to\normal.xbm |
MultilayerMask |
MultilayerSetup | path\to\material.mlsetup |
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 |
BaseColor |
|
Normal | optional: path to your normal map |
Roughness | optional: path to your roughness map |
RoughnessBias | 0.200000003 |
BaseColorScale |
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
Properties of emissive (glowing) materials: Let There Be Light
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
Substance Designer 2077: How it works and why it's actually super
Everyone asks this question in the beginning, but you're only a single epiphany away from a change of mind. The multilayered shader can pack up to 20 layers of texture into a single file! Read on to find out how it works.
While the multilayered supershader is very common, there are hundreds of other non Substance-style shaders, some with traditional baked PBR textures.
This wiki contains multiple guides about editing multilayered materials, such as:
For editing .mlsetup files:
The multilayered shader is composed of three distinct parts:
MLMASK files are the core element of the substance-style integration. These files contain an array of up to 20 textures which are used to control the blending between pre-defined surfaces called mltemplates. These mask textures are more-or-less 1:1 with substance-style layer masks.
As shown above, each mesh using the multilayer shader uses a unique mlmask file that is hand authored by CDPR artists. To take effect in game, each mask file is linked by the mlsetup file.
MLSETUP files are fairly self-explanatory when considering the name, multilayer setup. These files correspond with an mlmask file and are responsible for setting up parameters for each layer from the mlmask. Each layer within an mlsetup contains information very similar to materials or shaders.
MLTEMPLATE files are the actual visible surfaces that appear on meshes using the multilayered.mt supershader. The multilayer templates include a wide variety of surfaces such as steel, iron, aluminum, plastic, nylon, linoleum, carpet, soil, grass, rubber, concreate, and everything else imaginable. Each template can use a unique color, normal, roughness, and metallic PBR texture. The mltemplate files are selected from within each layer definition of an mlsetup file. Meshes can blend up to 20 mltemplate surfaces into a single material by masking them with the mlmask.
multilayered
Collect preview pictures for multilayered materials here
ToDo: These need to be grouped (one picture per type), and then they need to be linked with nice headers. But I'd rather put them on here before they rot away on my disk for a few more months
path\to\mask.mlmask ()
path to your normalMap.xbm ()
Colour as x/y/z values (color picker blend file )
Created: Jan 14 2024 by Last documented update: Jan 14 2024 by
Published: Apr 05 2024 by Last documented edit: Apr 05 2024 by
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
A significant portion of assets for Cyberpunk 2077 leverage the complex multilayered.mt supershader. The supershader has several different component files which are used to create masks to blend procedural textures without baking them. You can read more about this technique in by CDPR Technical Art Director Krzysztof Krzyścin.
For a list of shader properties in multilayered.mt, see
For editing .mlmask files:
->
->
Layer Masks | Mask textures that control where each surface is visible
Layer Definitions | Controls procedural effects such as tiling or color for each layer
Layer Surfaces | Links PBR textures to create numerous pre-defined visual surfaces
For editing mlsetup files, you'll want to use the ()
To edit .mlsetup files, it's recommended that you use the software.
For a definition of the properties, see .
For a guide on how to edit one, check .
Multilayered Shaders |
---|
Texture Channels | Red | Green | Blue | Alpha |
---|
Name | Description |
---|
@jato on the has created 3D rendered previews as .jpeg
files of all the .mlsetups
in the game. Original post can be found . The following list has been generated from these previews. A .zip
is also on this Wiki.
More accurate previews rendered in-game (check ) can be created with the .
aluminium_annodised | aluminium_bare_01_300 | aluminium_brushed_01_300 |
---|
aluminium_old_01_300 | aluminium_polished_01_300 | aluminium_rolled_annodised |
---|
aluminium_rolled_bare_01_300 | aluminium_rolled_rough_01_300 | aluminium_rough_01_300 |
---|
asphalt_old_01_300 | asphalt_old_fractured_01_300 | asphalt_old_patches_01_300 |
---|
asphalt_paint_01_300 | asphalt_road_01_300 | asphalt_road_damaged_01_300 |
---|
asphalt_road_new_01_300 | asphalt_road_old_01_300 | asphalt_tires_01_300 |
---|
blood_smooth_1_30 | brass_bare_01_300 | brass_brushed_01_300 |
---|
brass_old_01_300 | brass_polished_01_300 | brass_rolled_bare_01_300 |
---|
brass_rolled_rough_01_300 | brass_rough_01_300 | bricks_old_damaged_01_200 |
---|
bricks_old_painted_01_200 | bricks_old_rough_01_200 | bronze_bare_01_300 |
---|
bronze_old_01_300 | bronze_polished_01_300 | bronze_roof_tile_bare_01_300 |
---|
bronze_rough_01_300 | canvas_clean_01_30 | car_paint_metallic_01 |
---|
carbon_fiber_01_30 | carpet_office_felt_clean_01_300 | carpet_ribbed_clean_01_300 |
---|
carpet_thick_clean_01_300 | carpet_underlay_old_01_300 | ceramic_6x6_01_300 |
---|
ceramic_6x6_damaged_01_300 | ceramic_6x12_01_300 | ceramic_6x12_damaged_01_300 |
---|
ceramic_16x16_01_300 | ceramic_16x16_01_metal_300 | ceramic_16x16_dirty_01_300 |
---|
ceramic_16x16_missing_01_300 | cinderblock_01_300 | cinderblock_painted_01_300 |
---|
circuit_board_01_30 | cliff_rock_01 | cliff_rock_02 |
---|
cliff_rock_03 | colour_checker_plastic_tech | concrete_cast_rough_01_300 |
---|
concrete_cast_rough_dyed_01_300 | concrete_new_clean_01_300 | concrete_new_clean_dyed_01_300 |
---|
concrete_new_cracked_01_300 | concrete_new_dirty_01_300 | concrete_new_painted_01_300 |
---|
concrete_new_painted_matte_01_300 | concrete_new_rough_01_300 | concrete_new_rough_dyed_01_300 |
---|
concrete_old_damage_01_300 | concrete_old_damage_rebar_01_300 | concrete_old_panels_01_300 |
---|
concrete_old_panels_cracks_01_300 | concrete_old_panels_horizontal_01_300 | concrete_old_panels_horizontal_cracks_01_300 |
---|
concrete_old_panels_leaks_01_300 | concrete_old_shuttered_01_300 | concrete_old_shuttered_cracks_01_300 |
---|
concrete_old_shuttered_leaks_01_300 | concrete_old_shuttered_painted_01_300 | concrete_road_01_300 |
---|
concrete_road_cracked_01_300 | concrete_road_fractured_01_300 | concrete_road_painted_01_300 |
---|
concrete_road_tires_01_300 | concrete_rough_01_300 | concrete_rough_cracked_01_300 |
---|
concrete_rough_damaged_01_300 | concrete_rough_damaged_rebar_01_300 | concrete_rough_leaks_01_300 |
---|
concrete_smooth_01_300 | concrete_smooth_cracked_01_300 | concrete_smooth_dyed_01_300 |
---|
concrete_smooth_dyed_polished_01_300 | concrete_smooth_old_01_300 | concrete_smooth_polished_01_300 |
---|
concrete_smooth_tile_hex_5x6_01_300 | concrete_smooth_tile_hex_foil_5x6_01_300 | concrete_smooth_tile_hex_foil_5x6_02_300 |
---|
copper_bare_01_300 | copper_brushed_01_300 | copper_old_01_300 |
---|
copper_polished_01_300 | copper_rolled_bare_01_300 | copper_rolled_rough_01_300 |
---|
copper_roof_tile_bare_01_300 | copper_rough_01_300 | corduroy_clean_01_30 |
---|
cotton_shirt_clean_01_30 | cotton_shirt_clean_02_30 | cotton_shirt_neon_02_30 |
---|
cotton_twill_clean_01_30 | debug_outdated | debug_parity_test |
---|
debug_uv_testing | default_gray | denim_camo_01_30 |
---|
denim_clean_01_30 | denim_clean_02 | denim_neon_01_30 |
---|
dirt_universal_01_300 | duct_tape_characters_01_10 | duct_tape_clean_01_10 |
---|
dust_light_01_50 | ebony_irregular_bare_01_300 | ebony_irregular_bare_02_300 |
---|
ebony_irregular_bare_02_hrz_300 | ebony_irregular_polished_01_300 | ebony_irregular_polished_02_300 |
---|
ebony_straight_bare_01_300 | ebony_straight_bare_02_300 | ebony_straight_polished_01_300 |
---|
ebony_straight_polished_02_300 | ebony_straight_polished_02_hrz_300 | ebony_straight_polished_floor_01_300 |
---|
ebony_straight_polished_floor_02_300 | elastic_clean_01_30 | elastic_ribbed_clean_01_30 |
---|
enameled_hq_01_30 | enameled_metal_clean_01_30 | enameled_metal_weathered_01_30 |
---|
factory_floor_cracked_01_300 | factory_floor_cracked_dyed_01_300 | factory_floor_old_01_300 |
---|
factory_floor_painted_01_300 | factory_floor_painted_old_01_300 | factory_floor_rough_01_300 |
---|
felt_clean_01_30 | foam_01_100 | foam_pyramid_01_100 |
---|
gold_bare_01_300 | gold_brushed_01_300 | gold_old_01_300 |
---|
gold_polished_01_300 | gold_rough_01_300 | graffiti_01_100 |
---|
graphics_logos_001 | graphics_logos_002 | graphics_logos_003 |
---|
grass_dry_01 | grass_green_01 | grass_scrub_01 |
---|
gravel_01 | grime_film_01_300 | houndstooth_clean_01_30 |
---|
insulation_quilted_01_200 | iron_bare_01_300 | iron_brushed_01_300 |
---|
iron_cast_01_300 | iron_cast_painted_01_300 | iron_cast_painted_studs_01_300 |
---|
iron_cast_polished_01_300 | iron_cast_studs_01_300 | iron_old_01_100 |
---|
iron_old_rusted_01_100 | iron_polished_01_300 | iron_rolled_bare_01_300 |
---|
iron_rolled_rough_01_300 | iron_rough_01_300 | jersey_clean_01_30 |
---|
latex_01_30 | latex_neon_01_30 | leather_bull_01_30 |
---|
leather_croc_01_30 | leather_holes_01_30 | leather_old_01_30 |
---|
leather_old_02_30 | leather_rough_01_30 | leather_standard_clean_01_30 |
---|
led_matrix_16x16_01_16 | linen_burlap_01_30 | linen_clean_01_30 |
---|
linoleum_floor_6x6_01_300 | linoleum_floor_6x6_worn_01_300 | linoleum_floor_strip_eggshell_01 |
---|
marble_plain_01 | marble_plain_polished_01 | marble_plain_raw_01 |
---|
metal_floor_dirty_01_100 | metal_floor_painted_dirty_01_100 | metal_generic_cast_hq_01_30 |
---|
metal_generic_hq_01_30 | mirror_01_100 | mud_01 |
---|
multilayer_debug | multilayer_default | mylar_clean_01_30 |
---|
mylar_insulation_crumpled_01_200 | mylar_insulation_quilted_01_200 | nylon_01_30 |
---|
nylon_metallic_01_30 | nylon_strap_01_10 | nylon_strap_02_10 |
---|
oxford_clean_01_30 | paint_fine_clean_01_300 | paint_fine_clean_matte_01_300 |
---|
paint_fine_old_01_300 | paint_thick_01_300 | paint_thick_chequer_01_300 |
---|
paint_thick_hazard_01_300 | paint_thick_old_01_300 | paint_thick_peeling_01_300 |
---|
patina_01_300 | patina_roof_tile_01_300 | pebbles_smooth_01_200 |
---|
photovoltaic_cells_01_200 | plaid_clean_01_30 | plaid_clean_02_30 |
---|
plaid_clean_03_30 | plaid_clean_04_30 | plaster_exterior_01_300 |
---|
plaster_exterior_damp_01_300 | plaster_exterior_damp_neutral_01_300 | plaster_exterior_neutral_01_300 |
---|
plaster_exterior_patched_01_300 | plaster_exterior_patched_neutral_01_300 | plaster_exterior_rough_01_300 |
---|
plaster_exterior_rough_neutral_01_300_copy | plastic_camo_01_30 | plastic_hard_scratches |
---|
plastic_hard_smooth | plastic_lightcover_01_50 | plastic_pattern_bubble_01_30 |
---|
plastic_pattern_diamond_01_30 | plastic_pattern_smooth_01_30 | plastic_pattern_square_01_30 |
---|
plastic_pattern_squiggle_01_30 | plastic_scraped_01_300 | plastic_scraped_matte_01_300 |
---|
plastic_scraped_matte_leopard_01_300 | plastic_scraped_matte_zebra_01_300 | plastic_scraped_old_01_300 |
---|
plastic_hard_smooth | plastic_lightcover_01_50 | plastic_pattern_bubble_01_30 |
---|
plastic_pattern_diamond_01_30 | plastic_pattern_smooth_01_30 | plastic_pattern_square_01_30 |
---|
plastic_pattern_squiggle_01_30 | plastic_scraped_01_300 | plastic_scraped_matte_01_300 |
---|
plastic_scraped_matte_leopard_01_300 | plastic_scraped_matte_zebra_01_300 | plastic_scraped_old_01_300 |
---|
plastic_scraped_textured_01_300 | plastic_scraped_textured_hq_01_300 | plastic_scraped_tread1_01_300 |
---|
plastic_tarp_01_200 | plastic_tech_01_300 | plastic_tech_dirty_01_300 |
---|
plastic_tech_glossy_01_300 | plastic_tech_hq_01_30 | plastic_tech_neon_01_300 |
---|
plastic_tech_threadplate_01_300 | plastic_tech_worn_01_300 | player_wa_shirt_01 |
---|
polyester_knit_clean_01_30 | polyester_knit_clean_02_30 | polyester_knit_clean_03_30 |
---|
polyester_knit_metallic_01_30 | polythene_sheet_01_200 | polythene_sheet_leaks_01_200 |
---|
polythene_sheet_moisture_01_200 | rock_debris_01 | rubber_bumper_01_300 |
---|
rubber_bumper_damaged_01_300 | rubber_clean_hq_01_30 | rubber_simple_clean_01_30 |
---|
rubber_simple_weathered_01_30 | rust_thick_flaky_01_300 | rust_thick_rough_01_300 |
---|
rust_thick_smooth_01_300 | rust_thick_spots_01_300 | sand_compressed_01 |
---|
sand_dry_cracked_01 | sand_loose_01 | sequin_clean_01_30 |
---|
silk_clean_01_30 | silver_bare_01_300 | silver_brushed_01_300 |
---|
silver_old_01_300 | silver_polished_01_300 | silver_rough_01_300 |
---|
soil_peat_coarse_01_100 | soil_peat_fine_01_100 | soil_rocky_01 |
---|
soil_rocky_01 | soil_sandy_01 | spandex_clean_01_30 |
---|
spandex_clean_02_30 | stains_oil_01_100 | steel_bare_01_300 |
---|
steel_bare_annodised_01_300 | steel_bare_threadplate_01_300 | steel_brushed_01_30 |
---|
steel_brushed_01_300 | steel_dented_01_100 | steel_dented_annodised_01_100 |
---|
steel_dented_coroded_01_100 | steel_dented_coroded_01_100 | steel_galvanized_01_300 |
---|
steel_galvanized_corrugated_01_300 | steel_galvanized_corrugated_02_300 | steel_galvanized_corrugated_painted_01_300 |
---|
steel_galvanized_corrugated_painted_02_300 | steel_galvanized_corrugated_rust_01_300 | steel_galvanized_corrugated_rust_02_300 |
---|
steel_hq_brushed_01_10 | steel_hq_milled_01_10 | steel_hq_milled_02_10 |
---|
steel_hq_noise_01_10 | steel_old_01_300 | steel_old_rusty_01_300 |
---|
steel_old_rusty_threadplate_01_300 | steel_old_scraped_01_300 | steel_old_threadplate_01_300 |
---|
steel_perforated_01_100 | steel_polished_01_300 | steel_rebar_01_30 |
---|
steel_rolled_bare_01_300 | steel_rolled_bare_annodised_01_300 | steel_rolled_rough_01_300 |
---|
steel_rough_01_300 | steel_rough_threadplate_01_300 | steel_tempered_large_01_30 |
---|
steel_tempered_large_02_30 | steel_tempered_medium_01_30 | steel_tempered_small_01_30 |
---|
sticker_bomb_01 | terrain_asphalt_old_01 | terrain_asphalt_old_fractured_01 |
---|
terrain_cliff_rock_01 | terrain_cliff_rock_02 | terrain_cliff_rock_03 |
---|
terrain_concrete_road_01 | terrain_concrete_road_cracked_01 | terrain_grass_dry_01 |
---|
terrain_grass_green_01 | terrain_grass_scrub_01 | terrain_gravel_01 |
---|
terrain_mud_01 | terrain_rock_debris_01 | terrain_sand_compressed_01 |
---|
terrain_sand_dry_cracked_01 | terrain_sand_loose_01 | terrain_soil_rocky_01 |
---|
terrain_soil_sandy_01 | terrain_trash_01 | titanium_bare_01_300 |
---|
titanium_brushed_01_300 | titanium_old_01_300 | titanium_polished_01_300 |
---|
titanium_rolled_bare_01_300 | titanium_rolled_rough_01_300 | titanium_rough_01_300 |
---|
trash_01 | unused | velvet_clean_01_30 |
---|
wallpaper_pattern_a_old_01_300 | wallpaper_plain_01_300 | wallpaper_plain_damp_01_300 |
---|
water_puddle_01_150 | windows_opaque_01_200 | windows_opaque_foil_01_200 |
---|
windows_opaque_foil_streaky_01_200 | windows_opaque_streaky_01_200 | wood_hq_burl_01_30 |
---|
wood_plain_beech_01_300 | wood_plain_beech_stained_01_300 | wood_plain_oak_01_300 |
---|
wood_plain_pine_01_300 | wood_plain_pine_polished_01_300 | wood_plain_plywood_01_300 |
---|
wool_crossknit_clean_01_30 | wool_knit_clean_01_30 | wool_knit_clean_02_30 |
---|
wool_knit_clean_03_30 | wool_knit_clean_04_30 |
---|
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)
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
)
engine\materials\multilayered.mt |
base\materials\multilayered_clear_coat.mt | Adds clearcoat effect |
base\materials\vehicle_destr_blendshape.mt | Adds procedural vehicle damage |
base\materials\cloth_mov_multilayered.mt |
base\materials\multilayered_terrain.mt |
base\materials\ver_mov_multilayered.mt |
GlobalNormal | Normal R | Normal G | ? | ? |
MaskAtlas | ? | ? | ? | ? |
MultilayerMask | See mlmask |
MultilayerSetup | See mlsetup |
GlobalNormalIntensity | Sets visual intensity of normal map texture |
GlobalNormalUVScale | ? |
GlobalNormalUVBias | ? |
MaskAtlas | ? |
MaskTiles | ? |
Layers | ? |
LayersStartIndex | ? |
SurfaceTexAspectRatio | Sets number of mlmask layers to be used |
MaskToTileScale | ? |
MaskTileSize | ? |
MaskAtlasDims | ? |
MaskBaseResolution | ? |
SetupLayerMask | ? |
NormalsTextureDDXYMultiplier | ? |
MicroblendsTextureDDXYMultiplier | ? |
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 |
Troubleshooting guide for materials.
If you have done everything correctly, then something in the mesh got borked. Easiest way to fix:
Export your mesh
Re-name it to act as a backup
Replace it with something where transparency definitely works
Import over that mesh
Copy-paste the material setup from the original mesh
It's possible that you have a texture ref inside an object that expects mlsetups or mlmasks, or vice versa. File validation can't test for this, so you'll have to do it by hand.
Make sure to have the correct kind of cKeyValuePair for your kind of material.
Test if it is the material, or if your mistake is somewhere else. Replace your material's basePath
with something that you'll definitely recognize, such as base\environment\decoration\containers\cases\coffin\textures\m_z_gold.mi
.
If the gold material shows up and your custom material doesn't, then you have an issue with the material.
If the gold material also doesn't show up, then your problem lies somewhere else. Maybe the entire chunk is hidden?
Documentation of properties, with screenshots if applicable
Sets a color from within the mltemplate file. Hex codes corresponds to rows and columns in substance painter.
Depot path to the base material mltemplate 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.
Like #mattile, this determines the scaling of the microblend. The higher the value, the smaller it is.
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.
Like #normalstrength for the microblend.
X-offset for the microblend texture.
Y-offset for the microblend texture
Published: Jan 20 2024 by manavortex Last documented update: Jan 20 2024 by manavortex
This page will teach you how to get Cyberpunk materials into Blender (and how to bake them into textures).
Most Cyberpunk shaders are procedurally generated from mlsetups and mlmasks. As such, there aren't any textures that you can import.
So how is everyone doing it?
This is where the Wolvenkit Blender IO Suite comes in:
On export, Wolvenkit creates a .material.json
file containing the .mesh
file's material setup in a machine-readable form.
When importing a .glb into Blender, the plugin reads this file and automatically generates a list of materials. After selecting a mesh, you can see all available options in the Materials tab:
To change the assigned material, complete the following steps:
Select a mesh in Object mode
Switch to Edit Mode (hotkey: Tab
)
Select all vertices (hotkey: A
)
In the list on the material tab, select the appearance that you want to display
Under the list, click "Apply"
Be sure to select "Material Preview" as the Viewport Shading Method (see the screenshot below)
Please see the WKit Blender Plugin: Troubleshooting page.
What is UV mapping and how does it work?
This page contains the theory of how to connect meshes (3d objects) with textures (which are 2d after all)
This is the technical term for the process of mapping a flat texture on your three-dimensional object. The most hands-on example for this is Christmas chocolate:
Regardless of that, you can not eat it.
To look at an object's UV mapping, you'll have to fire up Blender (or a 3d editing software of your choice).
An object's UV maps are visible in the Data tab:
To look at an object's UV mapping, you'll have to fire up Blender (or a 3d editing software of your choice).
Open the UV editing perspective, select a mesh, and switch to Edit Mode. If you select vertices in the viewport
on the right, you can see their UV islands in the UV editor
on the left:
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
That happens when one of the depotPath
s can't be resolved. Double-check your values
— can help you with this.
Published: Jan 21 2024 by Last documented update: Jan 21 2024 by
For a hands-on guide to UV mapping, check ->
For import/export help, check
You change the mapping by editing those UV islands. For a more hands-on guide of this, refer to ->