Substance Designer 2077: How it works and why it's actually super
Published: Last documented edit: Oct 15 2024 by
This page describes Cyberpunk's multilayered supershader.
This wiki contains multiple guides about editing multilayered materials, such as:
For editing .mlmask files: Textures: Custom MultilayerMask
For editing .mlsetup files:
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.
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 this documentation by CDPR Technical Art Director Krzysztof Krzyścin.
While the multilayered supershader is very common, there are hundreds of other non Substance-style shaders, some with traditional baked PBR textures.
For a list of shader properties in multilayered.mt, see Multilayered Material: Properties
The multilayered shader is composed of three distinct parts:
Layer Masks | Mask textures that control where each surface is visible .mlmask files
Layer Definitions | Controls procedural effects such as tiling or color for each layer .mlsetup files
Layer Surfaces | Links PBR textures to create numerous pre-defined visual surfaces .mltemplate files
For editing mlsetup files, you'll want to use the MlSetupBuilder (download)
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.
To edit .mlsetup files, it's recommended that you use the MLSETUP Builder software.
For a definition of the properties, see Multilayered Material: Properties.
For a guide on how to edit one, check R&R: Colour Editing.
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
Multilayered Shaders |
---|
Texture Channels | Red | Green | Blue | Alpha |
---|---|---|---|---|
Name | Description |
---|---|
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
?
Collect preview pictures for multilayered materials here
@jato on the Cyberpunk 2077 Modding Community Discord server has created 3D rendered previews as .jpeg
files of all the .mlsetups
in the game. Original post can be found here. The following list has been generated from these previews. A .zip
is also hosted on this Wiki.
More accurate previews rendered in-game (check below) can be created with the Material Preview AMM Prop.
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 |
---|---|---|
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
The selection of materials and the available colours for each material in Cyberpunk 2077 is very limited and often underwhelming. The colours the game offers by default lack saturation and are usually either too light or too dark. The way of getting around this is layering different materials of different colours at varying opacity.
The Tools
- setup instructions
- setup instructions , from here on out referred to as MLSB
- setup instructions
(or another image editor of your choice if you need to edit an .mlmask
)
(if you want to create an .mlmask
from scratch)
For this to work properly, you need two layers inside the .mlmask
, each of which needs to cover the same part of your .mesh
you want to change. The lower layer needs to be pure white, the other one on top of that at 50% grey (rgb(50%,50%,50%)
). This way, the materials of each layer will blend into each other allowing much greater control over shade, brightness, saturation, and shininess.
If your blue denim lacks saturation, slap a second layer on top of it. Give that second layer the same material and colour and both will amplify each other.
The default .mlmask
found inside your .mesh
might already contain the layers described above. If not, you'll likely get away with editing the layers in Photoshop. To learn more about .mlmask
files go and to learn how to create one yourself using Blender, go .
For a specific example, we'll try to get yellow to look nice as I find yellow to be one of the more finicky colours to get to look "correct" within Cyberpunks shader. Here, I'm using velvet_clean_01_30
with rgb(77%,22%,8%)
as the base and latex_neon_01_30
with rgb(100%,100%,0%)
on top of it. By itself,velvet_clean_01_30
lacks saturation and its selection of yellows is very limited. latex_neon_01_30
on the other hand includes a pretty decent shade of yellow, but also lacks saturation—even though the name implies the opposite. I find that Cyberpunks shader often renders yellows to be more green than I'd expect them to be. Which is why I'm using an orange base layer.
This method of layering materials unfortunately drastically reduces the effect of the normals
of each material. normals
become "filled in" the more of them you stack. A workaround is to mis-appropriate a materials normals
as a microblend
for another material.
Copy the path of the .mltemplate
of a material whose texture you want to use from MLSB.
Paste the path into WolvenKits Asset Browser and hit Enter
to search.
Right click on the .mltemplate
and select "Open without adding to project".
Copy the DepotPath
of the normalTexture
and paste it into the µblends
field in MLSB.
In the µblends Parameters box, you can mess around with its size (Tiles
, higher number means smaller texture—it gets tiled more often across the same surface area), opacity (contrast
) and intensity (normals
, can be higher than 1
).
normals
of µblends
can also be inverted by setting their intensity to a negative number. this will, for example, turn a relief from pointing outwards to pointing inwards. This is sometimes necessary when using the normals
from an mltemplate
as a µblend
, but creative choice takes precendence, of course.
Cyberpunk allows layers in your mlsetup
to exceed Opacity 1.0
. What this does is amplify your current layer. This is very useful for camouflage materials such as denim_camo_01_30
. This material looks faint and lacks saturation by default. This can be mitigated by setting the Opacity
to 3.0
. For denim_camo_01_30
I'd also recommend using olive green as the base colour for your camo layer in the mlsetup
.
If you want your material to be matte, pick a value where the two numbers are roughly equal. For velvet_clean_01_30
this would be 0.502,0.498
. This might end up looking a bit flat though. An alternative with more depth would be 0.1569,0.8431
.
If you want your material to be very shiny, pick a value where the first number is low, and the second is zero.
Confusingly, the opposite might be true, as well. In the following example, 0.6667,0.3333
is shinier than 0.3333,0.6667
. It's quite illustrative of the interaction between the two numbers because they're the exact opposites.
Most of my mlsetups
bascially exclusively contain layers of velvet_clean_01_30
or a similar cloth material with different µblends
. Exceptions are latex_neon_01_30
for anything yellow as described above, and any metals. Although you can colourise those with an additional layer of velvet_clean_01_30
.
If you create your own material combinations, expect a lot of trial and error and bring a lot of patience.
Enter Photo Mode, Alt + Tab
over to MLSB, and make some changes.
Export the .json
and import the .mlsetup
in WolvenKit. Click on "Hot Reload" in the toolbar.
Switch back to the game and, while still in Photo Mode, switch to your saved outfit.
Your changes should show up on your item. Switch back to no outfit again, make more changes in MLSB, export, import, Hot Reload, rinse and repeat.
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 |
---|---|
velvet_clean_01_30 by itself | latex_neon_01_30 by itself | together |
---|
µblend normals at 1.0 | µblend normals at -1.0 |
---|
↓ Green base, opacity 3.0 | ↓ Green base, opacity 1.0 |
---|
This tutorial won't go into the technical details of how reflections and roughness work (mainly because I don't get it myself), but for more information, see . Shininess is mainly controlled through the Rough Out value in MLSB. The dropdown contains a list of properties inherent to each material.
velvet_clean_01_30 @ 0.502,0.498 | velvet_clean_01_30 @ 0.1569,0.8431 |
---|
velvet_clean_01_30 @ 0.6667,0.3333 | velvet_clean_01_30 @ 0.3333,0.6667 |
---|
Item | MLSB Screenshot |
---|
Once you've found material-colour-texture-shininess combinations you like, I'd recommend writing them down somehwere to be re-used across your mods. Good starting points for base materials are velvet_clean_01_30
, spandex_clean_01_30
, and nylon_metallic_01_30
. All of these are very versatile because they offer a broad range of colours and levels of shininess. The first two of those also work very well as materials to be used on the top layer. canvas_clean_01_30
and denim_clean_01_30
have lovely textures. For reference, contains previews for all materials available in Cyberpunks shader. There's also a downloadable .zip
in there which is useful to keep on hand when you're messing with materials.
To quickly check how your changes look in-game, you can use .
Create an outfit using your item, save it with and un-equip it
↓ Grey base, opacity 3.0 | ↓ Grey base, opacity 1.0 |