10 erreurs courantes avec Unity HDRP
Dix problèmes qui reviennent chaque année chez les étudiants débutants - pas une question d'intelligence ou de compétence, juste les particularités propres à HDRP qui ne deviennent vraiment visibles qu'une fois qu'on y est confronté. Si l'un de ces cas vous semble familier : la correction est généralement plus simple qu'il n'y paraît.
1. Matériaux roses/magenta après import FBX Bloquant
Symptôme : après avoir importé un modèle FBX, chaque matériau apparaît en rose vif (magenta) - le modèle est là, mais ressemble à une sculpture en chewing-gum.
Cause : Unity utilise le magenta comme couleur d'erreur universelle signifiant « shader introuvable ou incompatible ». Les fichiers FBX issus de Blender, Maya ou 3ds Max utilisent le shader « Standard » du pipeline Built-in, que HDRP ne reconnaît pas - il a besoin de ses propres shaders (HDRP/Lit, etc.).
Correction (méthode 1 - HDRP Wizard, recommandée) : Window → Rendering → HDRP Wizard, puis sous Project cliquer sur Convert All Built-in Materials to HDRP et attendre la conversion.
Correction (méthode 2 - manuelle) : sélectionner le matériau rose, ouvrir le menu déroulant Shader dans l'Inspector, naviguer vers HDRP → Lit, et réassigner les textures (Albedo, Normal, etc.).
Prévention : toujours lancer le HDRP Wizard après avoir importé de nouveaux assets ; configurer votre logiciel 3D pour exporter avec des noms de matériaux explicites ; faire de Import → HDRP Wizard → Check une routine.
2. Scène totalement noire malgré la présence de lumières Bloquant
Symptôme : des lumières sont placées dans la scène, mais la Game View (parfois même la Scene View) reste complètement noire - occasionnellement quelques pixels brillent, mais la scène est inutilisable.
Cause : généralement une combinaison de : pas de Global Volume avec un Volume Profile configuré ; exposition réglée beaucoup trop bas ; une Physical Camera mal configurée (ISO/Aperture incohérents) ; ou des lightmaps non générées sur une scène réglée en Baked.
Correction :
- Vérifier le Global Volume - en chercher un dans la Hierarchy ; si absent, GameObject → Volume → Global Volume ; confirmer qu'un Volume Profile est assigné (cliquer sur New sinon).
- Ajouter un override Exposure - sélectionner le Global Volume, Add Override → Exposure, régler Mode sur Fixed, et ajuster Fixed Exposure (commencer autour de 10).
- Vérifier la Physical Camera - si activée, l'ISO devrait être 100-400 pour une scène bien éclairée et l'Aperture f/4-f/8 ; ou désactiver temporairement Physical Camera pour isoler le problème.
- Si les lumières sont en Baked - Window → Rendering → Lighting → Generate Lighting et attendre la fin du bake.
Prévention : démarrer chaque nouvelle scène HDRP en créant un Global Volume avec Exposure configuré ; utiliser les scènes de démo HDRP comme référence ; garder une scène « template » préconfigurée avec les bases déjà en place.
3. Normal Map inversée (relief à l'envers) Gênant
Symptôme : le détail de surface paraît « en creux » au lieu d'« en relief », ou l'inverse - les têtes de vis ressemblent à des boutons, les rainures ressortent au lieu de s'enfoncer, et l'éclairage réagit étrangement sur la surface.
Cause : deux conventions de normal map concurrentes existent - DirectX (Y+), utilisée par Unity, Unreal et 3ds Max, et OpenGL (Y-), le défaut dans Blender et Maya. Importer une carte de convention OpenGL sans la convertir inverse le canal vert (Y), retournant la lecture du relief.
Correction : sélectionner la texture Normal Map, confirmer que Texture Type est réglé sur Normal Map, et cocher Flip Green Channel si le relief paraît inversé, puis Apply. Alternativement, corriger la convention à la source dans votre logiciel de texturing.
4. Modèle 3D invisible ou géant/minuscule Bloquant
Symptôme : Cas A - vous importez et placez un modèle, mais il est invisible (en réalité présent, juste microscopique, ou à des kilomètres de l'origine). Cas B - le modèle importé est gigantesque, remplissant tout l'écran, impossible à cadrer.
Cause : les logiciels 3D ont des unités par défaut différentes :
| Logiciel | Unité par défaut |
|---|---|
| Blender | Mètres |
| Maya | Centimètres |
| 3ds Max | Variable (souvent pouces) |
| Unity | Mètres |
Un modèle construit en centimètres dans Maya et importé sans conversion se retrouve 100× trop petit.
Correction : sélectionner le FBX, ouvrir l'onglet Model dans l'Inspector, ajuster Scale Factor (l'augmenter, par exemple 0.01 → 1, s'il est trop petit ; le diminuer, par exemple 100 → 1, s'il est trop grand), activer Convert Units pour une conversion automatique, cliquer sur Apply, puis sélectionner l'objet dans la Scene et appuyer sur F pour le cadrer.
Prévention : régler votre logiciel 3D pour travailler en mètres dès le départ ; garder un cube de référence de 1m dans la scène Unity ; documenter l'échelle attendue dans vos conventions de projet.
5. Le Ray Tracing ne fonctionne pas Bloquant (si le RT est requis)
Symptôme : le Ray Tracing est activé dans les réglages, mais rien ne change - pas de réflexions RT, pas d'ombres RT, parfois avec des avertissements console.
Cause : le RT a des exigences strictes que Unity ne montre pas toujours clairement : un GPU incompatible (nécessite RTX 20xx+ ou AMD RX 6000+), la mauvaise API graphique (DX12 est obligatoire), non activé dans HDRP Global Settings, non activé dans Frame Settings, ou des shaders incompatibles.
Checklist de correction :
- Confirmer le GPU : NVIDIA RTX 2060 minimum, AMD RX 6600 minimum, pilotes à jour.
- Régler l'API graphique : Edit → Project Settings → Player → Other Settings → Graphics APIs, mettre Direct3D12 en premier, et redémarrer Unity.
- L'activer dans HDRP Global Settings : Edit → Project Settings → HDRP Global Settings → Frame Settings → Lighting, cocher Ray Tracing.
- Activer les effets individuels dans un Volume (SSR → Ray Traced, Global Illumination → Ray Traced, etc.).
- Confirmer la compatibilité du shader du matériau - les matériaux ont besoin de shaders HDRP ; Eye et Hair ne sont pas compatibles PT.
Prévention : vérifier la compatibilité matérielle avant de compter sur le RT ; garder une version RT et une version non-RT de la scène ; tester le RT tôt dans le projet, pas à la fin.
6. Le Subsurface Scattering (SSS) ne s'affiche pas Gênant
Symptôme : un matériau est configuré avec du SSS (peau, cire, marbre...) mais ressemble à un matériau opaque ordinaire - pas de translucidité, pas de lumière diffusant sous la surface.
Cause : le SSS nécessite plusieurs éléments configurés ensemble : un Diffusion Profile créé et assigné, un override SSS dans le Volume, ce profil enregistré dans HDRP Global Settings, et assez de lumière pour révéler l'effet.
Correction :
- Créer un profil : Assets → Create → Rendering → HDRP Diffusion Profile, configurer Scattering Distance/Transmission, et le nommer clairement (par exemple « DP_Skin »).
- L'enregistrer globalement : Edit → Project Settings → HDRP Global Settings → Diffusion Profile List - ajouter votre profil (cette étape est facile à manquer et obligatoire).
- Configurer le matériau : Material Type → Subsurface Scattering, assigner le Diffusion Profile, régler le Subsurface Mask.
- L'activer dans le Volume : Add Override → Lighting → Subsurface Scattering, cocher Enable.
- Vérifier l'éclairage - le SSS est le plus visible à contre-jour ; placer une lumière derrière l'objet pour tester.
Prévention : partir des Diffusion Profiles des HDRP Samples ; toujours tester le SSS avec un contre-jour ; revérifier que le profil est bien dans la liste globale (l'étape la plus souvent oubliée).
7. Performance catastrophique (< 10 FPS) Bloquant
Symptôme : Unity rame - la navigation dans la Scene View saccade, la Game View montre une poignée d'images par seconde, l'éditeur met des secondes à répondre.
Cause : HDRP est un pipeline haute fidélité qui peut vite devenir coûteux : Ray Tracing sur un GPU limite, trop de lumières temps réel (chacune a un coût), pas de LOD sur les objets distants, SSGI+SSR+SSAO tous en haute qualité, des shadow maps à une résolution trop élevée, ou des textures 4K non compressées partout.
Correction : diagnostiquer avec le Frame Debugger (Window → Analysis → Frame Debugger, Enable, puis inspecter quelles étapes prennent le plus de temps). Actions rapides : désactiver temporairement le Ray Tracing (Volume → désactiver les overrides RT) ; baisser la qualité des effets (SSGI/SSR sur Low ou désactivés, réduire la résolution des shadow maps) ; passer les lumières statiques en Baked et régénérer l'éclairage ; ajouter des LOD Group aux objets complexes ; compresser les textures non-héros à 1024 ou 512.
Prévention : fixer un budget de performance (FPS cible) dès le départ ; utiliser le Profiler régulièrement, pas seulement quand ça ralentit ; travailler en qualité réduite pendant la production, qualité maximale seulement pour les rendus finaux.
8. Overrides de Prefab perdus à la réouverture Gênant
Symptôme : un Prefab a été modifié dans la scène (un enfant déplacé, une valeur changée), mais après avoir fermé et rouvert Unity, les changements ont disparu - le Prefab est revenu à son état d'origine.
Cause : les changements apportés à une instance de Prefab dans la scène sont des Overrides temporaires jusqu'à être appliqués. Si le Prefab source est édité ailleurs, ou si Revert est cliqué par erreur, ces overrides sont perdus. Un point de confusion courant : Apply sauvegarde les changements vers le Prefab source (affectant chaque instance), tandis que Revert annule les changements locaux (revenant à la source).
Correction : pour garder les changements, sélectionner l'instance modifiée, ouvrir la section Overrides en haut de l'Inspector, et cliquer sur Apply All (ou clic droit sur un override spécifique → Apply to Prefab). Pour des changements destinés à rester locaux à une instance, soit laisser les overrides non appliqués, soit utiliser un Prefab Variant à la place (clic droit sur le Prefab → Create → Prefab Variant).
Prévention : utiliser le Prefab Mode (double-clic sur le Prefab) pour les éditions globales ; utiliser les Prefab Variants pour de vraies variations (Chair_Blue, Chair_Red) ; sauvegarder la scène (Ctrl+S) et appliquer les overrides critiques.
9. Textures lointaines floues malgré une haute résolution Mineur
Symptôme : des textures 4K paraissent nettes de près mais deviennent très floues dès qu'on s'éloigne, même légèrement - comme une texture 256×256.
Cause : le système de mipmap fait son travail, peut-être trop agressivement. Les mipmaps sont des versions pré-réduites d'une texture (2048 → 1024 → 512...) utilisées pour optimiser le rendu distant ; si Anisotropic Filtering est réglé trop bas, Unity bascule vers des mipmaps plus petits trop tôt.
Correction : sélectionner la texture, augmenter Aniso Level à 8 ou 16, régler Filter Mode sur Trilinear, et Apply. Globalement : Edit → Project Settings → Quality, régler Anisotropic Textures sur Force On (ou Per Texture) et Texture Quality sur Full Res.
Prévention : régler globalement l'Anisotropic Filtering à un niveau acceptable (8+) ; utiliser Trilinear comme mode de filtrage par défaut ; accepter cela comme un compromis délibéré qualité/performance (le flou distant économise du coût GPU).
10. Le post-processing ne s'applique pas Gênant
Symptôme : Bloom, Color Grading et Vignette sont configurés dans un Volume, mais la Game View n'affiche aucun effet - l'image reste « brute ».
Cause : le système de Volume de HDRP fonctionne par layer - si la caméra et le Volume ne partagent pas un layer, ils ne communiquent pas. Autres causes : pas de Volume Profile assigné, Volume Weight à 0, Priority trop basse (surchargée par un autre Volume), ou post-processing désactivé sur la caméra elle-même.
Correction :
- Volume Profile - confirmer qu'un Profile est assigné et que ses overrides sont cochés/activés.
- Correspondance de layer - noter le layer du GameObject du Volume, puis sur le HD Additional Camera Data de la Camera, confirmer que Volume Layer Mask inclut ce layer.
- Camera - confirmer que Post Processing est activé sur HD Additional Camera Data.
- Priority - avec plusieurs Volumes, celui de plus haute priorité l'emporte.
Prévention : commencer avec un seul Global Volume ; garder Camera et Volume tous deux sur le layer Default ; tester chaque effet individuellement pour isoler les problèmes.
Référence rapide
| # | Problème | Sévérité | Correction rapide |
|---|---|---|---|
| 1 | Matériaux magenta | Bloquant | HDRP Wizard → Convert |
| 2 | Scène noire | Bloquant | Global Volume + Exposure |
| 3 | Normales inversées | Gênant | Flip Green Channel |
| 4 | Modèle invisible/géant | Bloquant | Scale Factor |
| 5 | Le RT ne fonctionne pas | Bloquant | Checklist matériel + DX12 |
| 6 | SSS invisible | Gênant | Diffusion Profile + Volume |
| 7 | Performance < 10 FPS | Bloquant | Désactiver le RT, baisser la qualité |
| 8 | Overrides de Prefab perdus | Gênant | Apply explicite |
| 9 | Textures floues | Mineur | Anisotropic Level 8+ |
| 10 | Pas de post-process | Gênant | Layer mask Camera/Volume |