Matériaux et shaders Unity HDRP

Fondamentaux PBR jusqu'au shader Lit complet, shaders spécialisés, et optimisation

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 :

ShaderUsage principal
LitSurfaces réalistes standard (bois, métal, pierre, plastique)
Lit TessellationSurfaces avec déformation géométrique
Layered LitMatériaux multi-couches complexes
FabricTextiles, velours
HairCheveux et fourrure
EyeYeux réalistes
DecalProjections sur des surfaces existantes
UnlitSurfaces 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.
Attention - si un matériau apparaît rose/magenta, c'est qu'il utilise un shader incompatible avec HDRP. Corriger en assignant manuellement HDRP/Lit, ou en lançant le HDRP Wizard (Window → Rendering → HDRP Wizard) pour convertir les matériaux.

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 :

SampleContenu
Material SamplesMétaux (acier, cuivre, or), brique, verre, glace, plastiques
Fabric SamplesTissu, moquette, laine avec un rendu réaliste
Environment SamplesCycles 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 :

CanalPropriétéValeur 0Valeur 1
RMetallicNon métalliqueMétallique
GAmbient OcclusionOmbréExposé
BDetail MaskPas de détailDétail visible
ASmoothnessRugueuxLisse

À 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.

Bon à savoir - Unity utilise par défaut le format de normal map OpenGL. Si votre Normal Map provient d'un outil à convention DirectX (certains exports Substance), activer « Flip Green Channel » dans les réglages d'import.

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.

Attention - pour que le SSS fonctionne réellement, il faut ajouter un override Subsurface Scattering à un Volume (Global ou Local) dans votre scène. Sans cela, les matériaux SSS ne se rendront pas correctement.

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.

Attention - la tessellation est coûteuse en GPU. La limiter aux objets proches de la caméra et utiliser les réglages de fade-distance pour désactiver l'effet sur les objets lointains.

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éLitFabric
AnisotropieOptionnelleNative et optimisée
Diffusion de lumièreStandardAdaptée aux fibres
SSSGénériqueCalibré pour les textiles
Thread MapNon disponibleDé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.

Bon à savoir - le shader Arnold dans Unity HDRP est une implémentation adaptée au temps réel ; il ne nécessite pas d'installer Arnold comme moteur de rendu externe.

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

ShaderPerformancePolyvalenceRéalismeCas d'usage
LitExcellenteTrès élevéeTrès bonUsage général
Lit TessellationMoyenneÉlevéeExcellentSurfaces avec relief
Layered LitMoyenneMoyenneTrès bonMulti-matériaux
FabricBonneSpécialiséeExcellentTextiles
ArnoldFaibleÉlevéeExceptionnelCinématiques
AxFFaibleSpécialiséeMétrologiqueIndustrie
UnlitExcellenteLimitéeN/AUI, 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.

FormatUsageQualitéTaille
BC7Albedo, Mask MapExcellente~4:1
BC5Normal MapsExcellente~4:1
BC4Height, canal uniqueBonne~4:1
BC1Textures simplesMoyenne~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èmeCauseCorrection
Matériau rose/magentaShader incompatibleAssigner HDRP/Lit manuellement, ou HDRP Wizard → Convert All Built-in Materials
Normal Map incorrecteMauvaise configuration d'import ou format DirectX vs. OpenGLConfirmer Texture Type = Normal Map ; activer Flip Green Channel si nécessaire
Le SSS ne fonctionne pasOverride Subsurface Scattering manquantAjouter l'override à un Volume dans la scène
Artefacts de transparenceOrdre de rendu incorrectAjuster Sorting Priority ; activer Depth Write si approprié

6.8 Ressources de matériaux

RessourceTypeGratuit ?
Poly HavenTextures PBR, HDRI, modèlesOui
ambientCGTextures PBR, SBSAR, HDRIOui
Quixel MegascansScans photoréalistesVia Bridge
Substance 3D CommunityMatériaux SBSARMixte
Unity Asset StoreToutMixte

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).

Bon à savoir - les deux cartes les plus importantes à avoir sont l'Albedo et une Height Map en niveaux de gris. Les autres peuvent souvent être dérivées ou approximées.

Résumé de la partie 2

ChapitreCompétences couvertes
Ch. 4 - FondamentauxShader/Material/Texture, workflow PBR, shaders disponibles
Ch. 5 - Shader LitPropriétés de base, cartes de texture, Material Types avancés
Ch. 6 - SpécialisésTessellation, 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.