> For the complete documentation index, see [llms.txt](https://wiki.redmodding.org/cyberpunk-2077-modding/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.redmodding.org/cyberpunk-2077-modding/for-mod-creators-theory/files-and-what-they-do/file-formats/materials/re-using-materials-.mi.md).

# Re-using materials: .mi

## Summary

**Published**: Apr 5 2023 by [mana vortex](mailto:undefined) **Last documented update**: Aug 12 2025 by [mana vortex](mailto:undefined)

This guide will teach you how you can use `.mi` files to re-use materials across multiple meshes. By combining this with [ArchiveXL: dynamic materials](/cyberpunk-2077-modding/for-mod-creators-theory/core-mods-explained/archivexl/archivexl-dynamic-materials.md), this mechanic allows **maximum flexibility**.

###

{% hint style="info" icon="question" %}
**Wait, this is not what I want!**

* To learn how materials work in the first place, check [https://github.com/CDPR-Modding-Documentation/Cyberpunk-Modding-Docs/blob/main/for-mod-creators-theory/files-and-what-they-do/file-formats/3d-objects-.mesh-files](https://github.com/CDPR-Modding-Documentation/Cyberpunk-Modding-Docs/blob/main/for-mod-creators-theory/files-and-what-they-do/file-formats/3d-objects-.mesh-files "mention") -> [https://github.com/CDPR-Modding-Documentation/Cyberpunk-Modding-Docs/blob/main/for-mod-creators-theory/files-and-what-they-do/file-formats/3d-objects-.mesh-files#material-assignment](https://github.com/CDPR-Modding-Documentation/Cyberpunk-Modding-Docs/blob/main/for-mod-creators-theory/files-and-what-they-do/file-formats/3d-objects-.mesh-files#material-assignment "mention")
* You can find [Material properties](/cyberpunk-2077-modding/for-mod-creators-theory/materials/configuring-materials.md) documented in their own wiki section
* For examples of `.mi` files in action, check the player's [skin materials](/cyberpunk-2077-modding/for-mod-creators-theory/references-lists-and-overviews/cheat-sheet-head.md#skin-tones-by-index)
  {% endhint %}

## What is a material instance?

A .mi file **encapsulates** a material in a **reusable** template file, which you can use a .mi file as `base material` in [https://github.com/CDPR-Modding-Documentation/Cyberpunk-Modding-Docs/blob/main/for-mod-creators-theory/files-and-what-they-do/file-formats/3d-objects-.mesh-files#material-instances](https://github.com/CDPR-Modding-Documentation/Cyberpunk-Modding-Docs/blob/main/for-mod-creators-theory/files-and-what-they-do/file-formats/3d-objects-.mesh-files#material-instances "mention").

It is possible to use multiple .mi files in a row. For an example of this, check the player's [skin materials](/cyberpunk-2077-modding/for-mod-creators-theory/references-lists-and-overviews/cheat-sheet-head.md#skin-tones-by-index).

<figure><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Daisy_chain.JPG/1200px-Daisy_chain.JPG" alt=""><figcaption><p>The technical term for doing this is "daisy chaining". (Image: Wikimedia commons). Caution: Cyclic dependencies <em>will</em> crash your game!</p></figcaption></figure>

For more information of this, you can look at [Shaders](/cyberpunk-2077-modding/for-mod-creators-theory/materials/shaders.md) -> [Shaders](/cyberpunk-2077-modding/for-mod-creators-theory/materials/shaders.md#the-daisy-chain)

## Why do I need this?

Put yourself in the shoes of a hypothetical modder.

* You are creating a mod that offers multiple versions of the same item (e.g. toy props or hair)
* You have created a base material
* You duplicate and re-duplicate the material for each of your variants, changing the properties that defines the color
* You wish that there was less copy-pasting involved

<figure><img src="/files/e519eOKQwASPp9oy1ail" alt=""><figcaption><p>You only change 2 of 6 properties, but you always have to copy all of them!!</p></figcaption></figure>

### .mi files to the rescue

Take any of them from the game, move them to your custom directory, and group all the properties that you keep copy-pasting into the .mi.

Then, in your material, you can now use your .mi file as `baseMaterial`, and only change the properties that are actually different!

{% hint style="success" %}
For a collection of example .mi files, check [manavortex's MEGA](https://mega.nz/folder/KJ8DnBhK#VG0KzRhedBMRRsfd0Cdc0A).
{% endhint %}

Instead of copy-pasting six properties, you now copy-paste only two.

<figure><img src="/files/4tun8GxJidwTvjznKa9Q" alt=""><figcaption><p>Only add the properties that you want to change in relation to the .mi file</p></figcaption></figure>

## The Daisy Chain illustrated

Look at this example of two chained .mi files:

<figure><img src="/files/h2meRbfDqgjpiKZhNl2k" alt=""><figcaption></figcaption></figure>

### Step 1: \_emissive\_base.mi

This file is an **external material instance** of `metal_base.remt`. Any [Material properties](/cyberpunk-2077-modding/for-mod-creators-theory/materials/configuring-materials.md) that are **not defined** will take the default values from the **`shader template`**.

* No `BaseColor` attribute is defined - the default value is `engine\textures\editor\grey.xbm`
* `EmissiveEV > 0` makes the material **glow**
* A white texture as the `Emissive` mask means that **all of the material** glows
* A white [`BaseColorScale`](/cyberpunk-2077-modding/for-mod-creators-theory/materials/configuring-materials/tinting-textures-in-wolvenkit.md) makes the glow's color white

TL;DR: Anything using this material will look like a **white** neon tube.

### Step 2: emissive\_blue.mi

This file is an **external material instance** of `_emissive_base.mi`. Any properties that are **not defined** will use the defautl values from the **.mi file**.

* No `EmissiveEV` is defined, so it will use the baseMaterial's value of `4.31680632`
* No `Emissive` mask is defined, so it will take `engine\textures\editor\white.xbm` from the `.mi`
* A blue [`BaseColorScale`](/cyberpunk-2077-modding/for-mod-creators-theory/materials/configuring-materials/tinting-textures-in-wolvenkit.md) overwrites the white glow from the .mi file, changing the glow colour

TL;DR: Anything using this material will look like a <mark style="color:blue;">**blue**</mark> neon tube.

In other words, this is how `emissive_blue.mi` actually looks:

<figure><img src="/files/D4WkLzloa6L9trxXXBsd" alt=""><figcaption><p>... and everything else that's <a href="/pages/EeV38GEyvB2eConCYYYG#checking-material-properties">defined inside</a> metal_base.remt</p></figcaption></figure>

## Making material templates

Let's take it another step further – we can make a bunch of different colours to re-use across your files. An example for this are hair files, or the plastic materials I've used in my [toy prop pack](https://www.nexusmods.com/cyberpunk2077/mods/7391).

<figure><img src="https://staticdelivery.nexusmods.com/mods/3333/images/7391/7391-1676065515-1014778223.png" alt=""><figcaption></figcaption></figure>

For this, I first created a `plastic_base.mi` with all the common properties, and then created one additional .mi file for each shade of plastic, **setting plastic\_base.mi as baseMaterial**, leaving me with the following folder structure:

```
- materials
  - plastic
    - _plastic_base.mi   << baseMaterial for all materials below
    - plastic_black.mi
    - plastic_yellow.mi
    - plastic_red.mi
    - plastic_green.mi
    - plastic_purple.mi
    - plastic_pink.mi
    - plastic_orange.mi
    - plastic_blue.mi
```

If I decide that my plastic is too shiny, I can edit `_plastic_base.mi` instead of touching every template individually. Pretty neat, isn't it?

And if one of my items happens to have a custom normal map and/or texture, then I just add them in the `values` array of my material and call it a day.

## Maximally lazy: external materials

But we can take this approach even further! If you **don't** have any properties, your mesh doesn't even need materials! You can simply use the `externalMaterials` list instead. You do this by unticking the isLocal property in the materialEntries definition:

<figure><img src="/files/HdHjeh056xfpC1wnRGa9" alt=""><figcaption><p>material entries and indices</p></figcaption></figure>

## Warning

You can of course mix and match local and external materials! Just make sure that the materialEntries indices are pointing at the correct material.

However:

{% hint style="danger" %}
If you are using `preloadLocalMaterials`, you need to use `preloadExternalMaterials` instead of `externalMaterials.`
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wiki.redmodding.org/cyberpunk-2077-modding/for-mod-creators-theory/files-and-what-they-do/file-formats/materials/re-using-materials-.mi.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
