---
title: Matériaux et shaders
description: Comprendre et gérer les matériaux GS Framework dans Blender.
---

import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';

L'addon gère les matériaux GS Framework à deux niveaux : l'**import** (conversion des fichiers NMM en matériaux Blender) et l'**édition** (configuration des shaders et textures via le panneau GS Edit pour l'export).

---

## Comment les matériaux NMM sont convertis

Lors de l'import d'un fichier NMM, l'addon crée un matériau Blender utilisant le shader **Principled BSDF** et configure ses paramètres :

| Donnée NMM | Résultat dans Blender |
|---|---|
| Couleur diffuse | Base Color |
| Couleur spéculaire | Specular |
| Glossiness | Roughness (inversé : glossiness haute = roughness basse) |
| Self-illumination | Emission Color + Strength |
| Opacité | Alpha |
| Texture diffuse | Connectée à Base Color |
| Texture normal | Connectée via un nœud Normal Map |
| Texture AO | Multipliée avec Base Color |
| Texture metallic | Connectée à Metallic |
| Double-sided | Backface culling désactivé |
| Shadeless | Matériau en émissif pur |
| Alpha blend | Mode blend Alpha activé |

Toutes les données originales restent accessibles dans les **propriétés custom** du matériau (préfixe `nmm_`), permettant un export fidèle.

---

## Le panneau GS Edit (Shader Editor)

Le panneau de gestion des matériaux se trouve dans la **sidebar du Shader Editor**, onglet **GS Edit**. Voir la [présentation complète du panneau](/interface/shader-panel/).

Il permet de :

- Associer un **shader NSA** au matériau
- Définir les **canaux de texture** et leurs fichiers
- **Sauvegarder / charger** ces données dans les propriétés custom du matériau

---

## Canaux de texture disponibles

L'addon reconnaît 13 types de canaux de texture :

| Canal | Usage |
|---|---|
| `diffuse` | Couleur de base / albedo |
| `normal` | Carte de normales pour le relief |
| `specular` | Intensité de la réflexion spéculaire |
| `glossiness` | Brillance de la surface |
| `roughness` | Rugosité de la surface (inverse de glossiness) |
| `opacity` | Transparence |
| `reflection` | Réflexion environnementale |
| `selfillum` | Auto-illumination / émission |
| `light` | Lightmap (éclairage précalculé) |
| `ao` | Occlusion ambiante |
| `metallic` | Caractère métallique |
| `colormask` | Masque de couleur |
| `custom` | Canal personnalisé (vous choisissez le nom) |

---

## Assigner un shader et des textures manuellement

<Steps>

1. **Sélectionnez** un objet avec un matériau dans le viewport.

2. **Ouvrez le Shader Editor** (passez un éditeur en mode Shader Editor, ou utilisez le layout Shading).

3. Ouvrez la **sidebar** du Shader Editor (touche `N`) et allez dans l'onglet **GS Edit**.

4. Dans la section **NSA Shader**, cliquez sur **Select NSA Shader** et naviguez jusqu'au fichier `.nsa` souhaité.

   {/* ![Sélection d'un shader NSA](../../../assets/placeholder-select-nsa.png) */}

5. Dans la section **Texture Channels**, cliquez sur **Add Channel** pour ajouter un canal.

6. Sélectionnez le canal ajouté dans la liste. Dans le détail :
   - Choisissez le **type** (ex: `diffuse`)
   - Cliquez sur le bouton de parcours pour sélectionner le **fichier texture**

7. Répétez pour chaque canal nécessaire (normal, specular, etc.).

8. Cliquez sur **Save** pour enregistrer la configuration dans les propriétés du matériau.

</Steps>

<Aside type="caution">
Les modifications dans la liste des canaux ne sont **pas automatiquement sauvegardées**. Cliquez toujours sur **Save** après vos modifications, sinon elles seront perdues en fermant le fichier.
</Aside>

---

## Workflow Save / Load

<Tabs>
<TabItem label="Save">

**Save** lit la configuration actuelle de la liste des canaux de texture dans le panneau et l'écrit dans les propriétés custom du matériau sous forme d'un dictionnaire JSON (propriété `nmm_textures`).

**Quand l'utiliser** : après chaque modification des canaux de texture.

</TabItem>
<TabItem label="Load">

**Load** lit les propriétés custom du matériau (`nmm_textures`) et remplit la liste des canaux dans le panneau.

**Quand l'utiliser** :
- Après avoir ouvert un fichier contenant des matériaux importés
- Pour restaurer la configuration après avoir fait des changements non sauvegardés
- Pour synchroniser le panneau avec les données stockées

</TabItem>
</Tabs>

---

## Supprimer les données GS

Le bouton **Clear All GS Data** supprime :
- La référence au shader NSA (`nmm_shader_path`)
- Tous les canaux de texture (`nmm_textures`)

Le matériau retrouve un comportement GLTF standard. Cette action est utile si vous voulez exporter le matériau en GLTF pur sans les métadonnées GS Framework.

<Aside type="caution">
Cette suppression est irréversible. Les données GS originales seront perdues.
</Aside>

---

## Formats de texture supportés

Le sélecteur de fichiers textures accepte les formats suivants :

- **PNG** (.png)
- **JPEG** (.jpg, .jpeg)
- **TGA** (.tga)
- **BMP** (.bmp)
- **TIFF** (.tif, .tiff)
- **DDS** (.dds)

---

## Bonnes pratiques

<Aside type="tip">

- **Importez d'abord**, éditez ensuite : les matériaux NMM importés ont déjà leurs canaux correctement configurés dans les propriétés custom. Utilisez **Load** pour les voir dans le panneau.
- **Un canal par type** : évitez de mettre deux canaux du même type (ex: deux `diffuse`). Le dernier écrasera le premier lors de l'export.
- **Chemins relatifs** : configurez le [dossier projet](/getting-started/configuration/) pour que les chemins de textures soient stockés de manière relative et portable.
- **Vérifiez dans le Shader Editor** : les nœuds Principled BSDF de Blender vous montrent le résultat visuel des textures connectées, indépendamment des données GS stockées.

</Aside>
