Chapitre 4 : Fondamentaux des matériaux PBR
Ceci est la partie 2 du guide de production Unity HDRP, faisant suite à Partie 1 : configuration, interface et assets. Ce volet couvre les matériaux et shaders : les fondamentaux PBR, le shader Lit de HDRP en détail, les shaders spécialisés, et l'optimisation de matériaux pour la production.
4.1 Concepts de base : Shader, Material, Texture
Avant de construire des matériaux, il vaut la peine de bien séparer trois concepts souvent confondus : les shaders, les matériaux et les textures.
Un shader est un petit programme GPU qui définit comment la lumière interagit avec une surface - réflectivité, transparence, diffusion de la lumière. Les shaders sont écrits en HLSL et parlent directement à la carte graphique. Les principaux shaders de surface de HDRP :
| Shader | Usage principal |
|---|---|
| Lit | Surfaces réalistes standard (bois, métal, pierre, plastique) |
| Lit Tessellation | Surfaces avec déformation géométrique |
| Layered Lit | Matériaux multi-couches complexes |
| Fabric | Textiles, velours |
| Hair | Cheveux et fourrure |
| Eye | Yeux réalistes |
| Decal | Projections sur des surfaces existantes |
| Unlit | Surfaces non affectées par l'éclairage |
Un matériau est un asset Unity (.mat) qui combine un shader avec un ensemble de propriétés configurées - l'instance concrète d'un shader avec des valeurs spécifiques : couleurs, textures assignées, niveaux de roughness. Une texture est une image (généralement 2D) appliquée à un matériau pour enrichir son apparence, simulant le détail de surface : couleur, relief, roughness, réflexions. Ce peut être une bitmap standard (.png, .tga, .tiff, .exr), une texture procédurale générée mathématiquement, une texture 3D pour des effets volumétriques, ou une cubemap pour les réflexions d'environnement.
SHADER (programme GPU)
└─ MATERIAL (instance configurée)
├─ Propriétés scalaires (Metallic: 0.8, Smoothness: 0.6)
└─ TEXTURES (images assignées)
├─ Base Map (couleur)
├─ Normal Map (relief)
└─ Mask Map (propriétés combinées)
4.2 Le workflow PBR
Le Physically Based Rendering (PBR) simule le comportement physique réel de la lumière. Contrairement aux méthodes empiriques plus anciennes, le PBR donne des résultats cohérents sous différentes conditions d'éclairage, reposant sur quelques principes physiques :
- Conservation de l'énergie - une surface ne peut pas réfléchir plus de lumière qu'elle n'en reçoit ; plus une surface est réfléchissante (spéculaire), moins elle est diffuse.
- Microfacettes - à l'échelle microscopique, les surfaces sont composées de minuscules facettes orientées aléatoirement ; leur distribution détermine la rugosité apparente.
- Fresnel - la réflectivité d'une surface varie selon l'angle de vue ; aux angles rasants, même les surfaces non métalliques deviennent très réfléchissantes.
Deux workflows PBR standards existent dans l'industrie : Metallic/Roughness (Metallic 0-1, Roughness 0-1 - utilisé par Unity HDRP, Unreal Engine, Substance) et Specular/Glossiness (Specular RGB, Glossiness 0-1 - utilisé par l'ancien Unity Standard et certains autres outils). Unity HDRP utilise Metallic/Roughness, avec Smoothness = 1 - Roughness. Avantages du PBR : les matériaux restent cohérents sous différents éclairages, les paramètres sont intuitifs et physiquement fondés, les matériaux se transfèrent proprement entre logiciels (Substance, Blender, Maya), et les résultats sont prévisibles et reproductibles.
4.3 Shader Graph
Shader Graph est l'éditeur de shader visuel intégré à Unity, permettant de construire des shaders personnalisés sans écrire de code via une interface à base de nœuds : le Blackboard liste les propriétés exposées (paramètres ajustables dans l'Inspector du matériau), le Graph est l'espace de travail des nœuds, le Master Node définit les sorties finales du shader, et un Preview montre le résultat en temps réel. Particulièrement utile pour les effets visuels animés (dissolution, distorsion, hologrammes), les matériaux procéduraux (bruit, motifs), les looks stylisés non photoréalistes, et le prototypage rapide de look. Pour les matériaux photoréalistes standards, le shader Lit suffit généralement - Shader Graph trouve sa place quand les fonctionnalités intégrées de Lit ne couvrent pas un besoin spécifique.
4.4 Shaders HDRP disponibles
En travaillant dans HDRP, restez dans les shaders de cette catégorie pour éviter les problèmes de compatibilité :
- HDRP/Lit - le shader central de HDRP, assez polyvalent pour la grande majorité des matériaux réalistes : métal, bois, pierre, plastique, verre, peau, végétation.
- HDRP/Lit Tessellation - une variante de Lit avec tessellation dynamique, subdivisant la géométrie en temps réel pour ajouter du détail de relief depuis une Height Map.
- HDRP/Layered Lit - empile jusqu'à 4 couches de matériau avec un mélange contrôlé par masque ; idéal pour le terrain ou les surfaces complexes.
- HDRP/Fabric - optimisé pour les textiles, simulant des propriétés spécifiques aux fibres : anisotropie naturelle, diffusion spécifique, subsurface adapté.
- HDRP/Hair - spécialisé pour les cheveux et la fourrure, gérant l'anisotropie des mèches et la transmission de lumière à travers celles-ci.
- HDRP/Eye - dédié aux yeux réalistes, simulant la réfraction cornéenne, la profondeur de l'iris, et les réflexions spéculaires caractéristiques.
- HDRP/Decal - projette des textures sur des surfaces existantes sans modifier leur géométrie - utile pour du détail localisé (impacts, saleté, signalétique).
- HDRP/Unlit - un shader sans interaction avec l'éclairage ; la couleur affichée est exactement celle de la texture. Utilisé pour l'UI, les écrans émissifs, les skyboxes.
4.5 Matériaux fournis avec Unity HDRP
Unity fournit une bibliothèque de matériaux prêts à l'emploi, une excellente ressource d'apprentissage et de démarrage rapide, accessible via Window → Package Manager → High Definition RP → Samples :
| Sample | Contenu |
|---|---|
| Material Samples | Métaux (acier, cuivre, or), brique, verre, glace, plastiques |
| Fabric Samples | Tissu, moquette, laine avec un rendu réaliste |
| Environment Samples | Cycles jour/nuit, aurores, ciels procéduraux |
Approche recommandée : télécharger les samples via le Package Manager, ouvrir les scènes de démo incluses, examiner les matériaux dans l'Inspector pour comprendre leur configuration, puis les dupliquer et les adapter à vos propres besoins. Cette approche de rétro-ingénierie est souvent plus efficace que de configurer des matériaux à partir de zéro.
Chapitre 5 : Le shader Lit de HDRP
5.1 Vue d'ensemble
Le shader Lit est le « shader maître » de HDRP, implémentant un modèle d'éclairage PBR complet capable de construire presque n'importe quelle surface réaliste : un modèle d'éclairage physiquement précis, le support des matériaux métalliques et diélectriques, une gestion avancée des réflexions/réfractions, une compatibilité ray tracing et path tracing, et un vaste ensemble de propriétés avancées optionnelles.
L'Inspector du shader Lit est organisé en sections repliables :
Surface Options
├── Surface Type (Opaque / Transparent)
├── Rendering Pass
└── Alpha Clipping
Exposed Properties
├── Base Map / Color
├── Mask Map
├── Normal Map
├── Bent Normal Map
├── Height Map
├── Detail Map
└── Emission
Advanced Options (selon le Material Type)
├── Subsurface Scattering
├── Iridescence
├── Anisotropy
└── Coat
5.2 Types de surface
Le premier paramètre à configurer est Surface Type, définissant le comportement fondamental du matériau. Les matériaux Opaque bloquent entièrement la lumière - le défaut pour la plupart des surfaces solides (bois, pierre, métal, plastique opaque, béton). Les matériaux Transparent laissent passer la lumière partiellement ou totalement (verre, eau, plastique translucide, cristal), avec des paramètres supplémentaires : Blend Mode (Alpha, Additive, Premultiply), Refraction (indice de réfraction pour la distorsion), et Sorting Priority (ordre de rendu pour les transparences superposées). L'Alpha Clipping utilise le canal alpha de la texture pour créer des découpes nettes - les pixels sous un seuil deviennent totalement transparents, utilisé pour le feuillage, les grillages en maillage, les cartes de cheveux et la végétation, avec un paramètre clé Alpha Cutoff (typiquement 0.5).
5.3 Propriétés de base et textures
La Base Map (Albedo) définit la couleur fondamentale de la surface - sa couleur intrinsèque sans éclairage intégré. Éviter les couleurs trop sombres ou trop claires (le noir/blanc pur n'existe pas dans la réalité), ne jamais intégrer d'ombres ou de hautes lumières dans l'albedo, et utiliser PNG ou TGA avec compression BC7.
La Mask Map (RGBA) est une texture optimisée combinant quatre propriétés dans un seul fichier pour économiser la mémoire :
| Canal | Propriété | Valeur 0 | Valeur 1 |
|---|---|---|---|
| R | Metallic | Non métallique | Métallique |
| G | Ambient Occlusion | Ombré | Exposé |
| B | Detail Mask | Pas de détail | Détail visible |
| A | Smoothness | Rugueux | Lisse |
À noter que Unity utilise Smoothness (l'inverse de Roughness) - 1 signifie une surface parfaitement lisse et réfléchissante. Configuration d'import : Texture Type Default, sRGB désactivé (données linéaires), compression BC7.
La Normal Map simule le détail de relief sans changer la géométrie réelle, encodant la direction de la normale de surface dans les canaux RGB (R=X, G=Y, B=Z, généralement proche de 1). Configuration d'import : Texture Type Normal Map, sRGB désactivé, compression BC5.
La Height Map (Displacement) est une image en niveaux de gris définissant le relief réel d'une surface - contrairement à l'illusion optique de la Normal Map, elle peut réellement déformer la géométrie via la tessellation (noir = en creux, gris = niveau de base, blanc = en relief). Paramètres associés : Parametrization (Min/Max ou Amplitude), Min/Max (plage de displacement en unités monde), Offset. Configuration d'import : type Default, sRGB désactivé, BC4 (canal unique).
L'Emission Map définit les zones émettant de la lumière, non affectées par l'éclairage de la scène par défaut (texture Emission Map, Emission Color en HDR, et un réglage Global Illumination Baked/Realtime/None pour qu'elle contribue réellement à l'éclairage de la scène). Utilisé pour les néons, écrans, lave, objets magiques, LED.
La Detail Map superpose du micro-détail par-dessus les textures principales, particulièrement utile pour les grandes surfaces où la résolution de base serait insuffisante - combinant le détail d'Albedo (R), de Normal (GA) et de Smoothness (B), chacun avec son propre paramètre d'échelle d'intensité.
5.4 Types de matériaux avancés
Le shader Lit offre plusieurs Material Types débloquant des propriétés supplémentaires pour un rendu spécialisé :
Le Subsurface Scattering (SSS) simule la lumière pénétrant et se diffusant à travers des matériaux translucides - la lumière traverse partiellement la surface, se diffuse en interne, puis ressort avec une teinte caractéristique. Matériaux concernés : peau humaine, cire et bougies, marbre et albâtre, feuilles et végétation à contre-jour, jade et pierre translucide, nourriture (fruits, viande). Pour configurer : activer Subsurface Scattering comme Material Type, créer un Diffusion Profile (Assets → Create → Rendering → Diffusion Profile) avec Scattering Distance, Transmission et Texturing Mode, puis l'assigner au matériau, et régler un Subsurface Mask (1 = SSS complet, 0 = opaque) et une Thickness Map optionnelle sur le matériau lui-même.
L'Anisotropy crée des reflets spéculaires directionnels qui varient selon l'orientation de la surface, simulant des micro-structures orientées - métal brossé (aluminium anodisé, acier inoxydable), cheveux et fourrure, disques vinyles, tissu avec un tissage visible, bois poncé. Paramètres : Anisotropy (-1 à 1) et une Tangent Map optionnelle pour sa direction.
L'Iridescence simule des changements de couleur dépendants de l'angle de vue, produisant des effets façon arc-en-ciel - ailes d'insectes (papillons, mouches), bulles de savon, films d'huile sur l'eau, CD/DVD, peinture automobile métallisée spéciale, nacre et coquillages. Paramètres : Iridescence Mask et Iridescence Layer Thickness (qui détermine les couleurs visibles).
Le Clear Coat ajoute une couche de vernis transparente par-dessus le matériau de base, avec ses propres réflexions spéculaires - peinture automobile laquée, bois verni, plastique brillant, carrosserie de voiture, parquet ciré. Paramètres : Coat Mask (intensité du vernis par zone) et Coat Smoothness.
Specular Color permet un contrôle explicite de la couleur spéculaire, utile pour les matériaux avec des reflets colorés non standards. Translucent est un SSS simplifié sans calcul de profondeur - plus rapide mais moins précis, utilisé pour des transparences simples.
5.5 Systèmes de coordonnées UV
Les coordonnées UV définissent comment les textures se projettent sur la géométrie. Unity supporte jusqu'à 8 canaux UV (UV0-UV7) : UV0 pour les textures principales (créées dans le logiciel de modélisation), UV1 pour les lightmaps (auto-générées par Unity), UV2 pour les detail maps et textures secondaires, UV3+ pour les effets spéciaux et masques personnalisés.
La projection planaire applique une texture comme si elle était projetée depuis un plan 2D perpendiculaire à un axe (X, Y ou Z) - simple et rapide, mais s'étire sur les surfaces non perpendiculaires ; bon pour les murs, sols, surfaces plates orientées. La projection triplanaire projette selon les trois axes à la fois et mélange les résultats selon les normales de surface - pas d'étirement et fonctionne sans UV, à un coût GPU plus élevé (3× les échantillons de texture) ; bon pour le terrain, les rochers, la géométrie procédurale, les surfaces organiques.
Chapitre 6 : Shaders spécialisés et optimisation
6.1 Lit Tessellation
Lit Tessellation ajoute une subdivision géométrique dynamique pilotée par une Height Map, produisant un véritable relief plutôt qu'une illusion optique. Il subdivise les triangles du maillage en temps réel, puis déplace les nouveaux sommets selon la Height Map, avec un niveau de subdivision pouvant varier selon la distance caméra. Paramètres : Tessellation Mode (None, lissage Phong), Tessellation Factor (1-64), Start/End Fade Distance, Triangle Size. Recommandé pour les sols pavés/en briques à fort relief, le terrain montagneux en gros plan, les surfaces rocheuses détaillées, et les objets héros nécessitant un relief précis.
6.2 Layered Lit
Layered Lit empile jusqu'à 4 couches de matériau avec un contrôle de mélange précis piloté par masque - chaque couche a ses propres textures (Base, Mask, Normal), avec un masque de mélange contrôlant la visibilité. Utilisé pour le terrain avec des transitions herbe/terre/roche, les murs avec usure et dégradation, les surfaces avec accumulation (neige, poussière, mousse), et les matériaux composites complexes.
6.3 Le shader Fabric
| Propriété | Lit | Fabric |
|---|---|---|
| Anisotropie | Optionnelle | Native et optimisée |
| Diffusion de lumière | Standard | Adaptée aux fibres |
| SSS | Générique | Calibré pour les textiles |
| Thread Map | Non disponible | Dédiée aux fils |
Utilisé pour les vêtements et costumes, les rideaux et tentures, les tapis et moquettes, le mobilier textile (canapés, fauteuils).
6.4 Shaders spécialisés : Arnold et AxF
L'Arnold Standard Surface est l'implémentation par Unity du célèbre shader Arnold utilisé dans le rendu offline de Maya/3ds Max - un rendu photoréaliste avancé, un multi-scattering sophistiqué, un subsurface scattering haute précision, compatible ray/path tracing. Idéal pour les projets où la qualité visuelle compte plus que la performance, les cinématiques rendues offline, et les matériaux complexes nécessitant un réalisme extrême.
L'AxF (X-Rite Appearance Exchange Format) est un shader ultra-précis basé sur de vraies mesures BRDF issues de scans de matériaux physiques - une fidélité métrologique, des données de matériaux scannés professionnellement, des BRDF complètes capturant chaque interaction lumière/matériau. Idéal pour les projets industriels nécessitant une reproduction physique exacte, l'ArchViz haut de gamme, et la configuration automobile avec des matériaux certifiés. Limite : nécessite des fichiers AxF issus de scans professionnels.
6.5 Comparaison des shaders
| Shader | Performance | Polyvalence | Réalisme | Cas d'usage |
|---|---|---|---|---|
| Lit | Excellente | Très élevée | Très bon | Usage général |
| Lit Tessellation | Moyenne | Élevée | Excellent | Surfaces avec relief |
| Layered Lit | Moyenne | Moyenne | Très bon | Multi-matériaux |
| Fabric | Bonne | Spécialisée | Excellent | Textiles |
| Arnold | Faible | Élevée | Exceptionnel | Cinématiques |
| AxF | Faible | Spécialisée | Métrologique | Industrie |
| Unlit | Excellente | Limitée | N/A | UI, effets |
6.6 Optimisation des matériaux
Les dimensions de texture en puissance de 2 (256, 512, 1024, 2048, 4096) sont optimales pour le GPU - transferts mémoire plus rapides, mipmapping simplifié, pas d'étapes de filtrage supplémentaires. Le mipmapping génère des versions réduites de chaque texture pour les objets lointains, automatiquement si activé à l'import - meilleure qualité sur les objets lointains (pas de scintillement) et performance améliorée.
| Format | Usage | Qualité | Taille |
|---|---|---|---|
| BC7 | Albedo, Mask Map | Excellente | ~4:1 |
| BC5 | Normal Maps | Excellente | ~4:1 |
| BC4 | Height, canal unique | Bonne | ~4:1 |
| BC1 | Textures simples | Moyenne | ~8:1 |
Le GPU instancing rend plusieurs objets partageant le même matériau en un seul draw call - activer « Enable GPU Instancing » dans les réglages du matériau. Résolutions recommandées : 512×512 pour les props distants/secondaires, 1024×1024 pour les éléments moyens/récurrents, 2048×2048 pour les props importants et personnages, 4096×4096 pour les héros, gros plans et terrain.
6.7 Dépannage courant
| Problème | Cause | Correction |
|---|---|---|
| Matériau rose/magenta | Shader incompatible | Assigner HDRP/Lit manuellement, ou HDRP Wizard → Convert All Built-in Materials |
| Normal Map incorrecte | Mauvaise configuration d'import ou format DirectX vs. OpenGL | Confirmer Texture Type = Normal Map ; activer Flip Green Channel si nécessaire |
| Le SSS ne fonctionne pas | Override Subsurface Scattering manquant | Ajouter l'override à un Volume dans la scène |
| Artefacts de transparence | Ordre de rendu incorrect | Ajuster Sorting Priority ; activer Depth Write si approprié |
6.8 Ressources de matériaux
| Ressource | Type | Gratuit ? |
|---|---|---|
| Poly Haven | Textures PBR, HDRI, modèles | Oui |
| ambientCG | Textures PBR, SBSAR, HDRI | Oui |
| Quixel Megascans | Scans photoréalistes | Via Bridge |
| Substance 3D Community | Matériaux SBSAR | Mixte |
| Unity Asset Store | Tout | Mixte |
Si vous n'avez pas toutes les cartes nécessaires, des outils peuvent les générer à partir d'une image source : ShaderMap (génère Normal, AO, Displacement depuis l'Albedo), Materialize (un outil gratuit similaire), Substance Designer (génération procédurale avancée).
Résumé de la partie 2
| Chapitre | Compétences couvertes |
|---|---|
| Ch. 4 - Fondamentaux | Shader/Material/Texture, workflow PBR, shaders disponibles |
| Ch. 5 - Shader Lit | Propriétés de base, cartes de texture, Material Types avancés |
| Ch. 6 - Spécialisés | Tessellation, Layered, Fabric, Arnold, AxF, optimisation |
Points clés à retenir : le shader Lit couvre 90% des besoins de matériaux réalistes ; la Mask Map combine 4 propriétés dans une seule texture pour économiser la mémoire ; les Material Types (SSS, Anisotropy, Iridescence) débloquent des propriétés avancées ; l'optimisation (puissance de 2, compression, instancing) compte énormément en production ; et les matériaux fournis par Unity sont une excellente base d'apprentissage.
La partie 3, prochainement, couvre l'éclairage cinématique : types de lumière et paramètres, la caméra physique et l'exposition, et les modes d'éclairage et le système d'ombres de HDRP.