Conventions de Normal Map : OpenGL vs DirectX expliqué
Pourquoi ta normal map semble inversée dans Unreal mais bien dans Unity — explication simple des conventions d'axe Y en tangent-space, avec les fixes concrets.
Tu branches une normal map dans Unreal et la surface s'éclaire comme si le soleil venait du dessous. Même fichier dans Unity ou Blender — nickel. Le mesh est identique, la texture est identique. Qu'est-ce qui se passe ?
Deux industries, un axe de désaccord
Les normal maps stockent une direction de surface dans leurs canaux RGB. Rouge = X, vert = Y, bleu = Z. Tous les moteurs PBR les décodent pareil, avec une exception : le signe de Y.
Convention OpenGL (Y+) : un canal vert plus lumineux signifie que la surface pointe vers le haut. Utilisé par Unity, Godot, Blender (Cycles et Eevee), l'export par défaut de Substance Painter, et tous les moteurs WebGL.
Convention DirectX (Y−) : un vert plus lumineux = surface pointe vers le bas. Utilisé par Unreal Engine, la toolchain Direct3D historique, et des assets CryEngine/ère Xbox.
Mêmes octets dans le PNG. Signification physique opposée.
Comment repérer ça d'un coup d'œil
Regarde une bosse hémisphérique (un bouton, un dôme) sur ta normal map. Convention OpenGL : le bas de la bosse sera vert plus sombre parce que la surface tourne vers Y−, à l'opposé de la lumière. Convention DirectX : le bas est vert plus lumineux.
Si l'éclairage paraît inversé en-moteur — highlights où devraient être les ombres — c'est un mismatch de convention.
Le fix prend 5 secondes
Dans Unreal, la fenêtre d'import a une case Flip Green Channel. Active-la et le moteur inverse le canal G à l'échantillonnage. Pas besoin de ré-exporter ta source.
Dans Unity, règle le type de texture sur Normal map et l'importer gère tout — Unity attend OpenGL, mais te préviendra si le fichier paraît faux. Dans Blender, utilise la chaîne Separate Color → Invert G → Combine Color, ou choisis directement DirectX dans le node Normal Map.
Pourquoi deux standards au départ ?
Dans les années 90, OpenGL et DirectX ont défini des espaces de coordonnées de texture opposés — OpenGL avait Y vers le haut, DirectX vers le bas. Quand les normal maps se sont généralisées au milieu des années 2000, chaque toolchain a gravé son espace dans ses outputs. La divergence a persisté parce que flipper un pipeline établi coûte cher.
Générer des normal maps sans confusion
Le générateur de Normal Map aukimi te laisse choisir la convention explicitement à l'export. Il applique un gradient Sobel sur la luminance de ta heightmap, puis encode (−dx·s, −dy·s, 1) en RGB — avec Y flippé si tu choisis DirectX. Tu peux toggle la convention après génération et ré-télécharger sans rien uploader de nouveau.
En interne, la formule est identique. Seule différence : le signe appliqué au Y avant d'écrire le canal vert. Sachant ça, tu peux convertir entre conventions avec n'importe quel éditeur d'image : ouvre le PNG, sélectionne le canal vert, inverse, sauve. C'est tout ce que fait "Flip Green Channel" dans Unreal.
Rappel rapide
- Unity, Godot, Blender, Substance Painter (défaut) : OpenGL (Y+).
- Unreal Engine, Direct3D legacy : DirectX (Y−).
- Rendu bizarre dans Unreal ? Active Flip Green Channel dans l'import.
- Rendu bizarre dans Unity ? Tu as probablement exporté depuis un outil DirectX — inverse le canal vert ou ré-exporte.
Une fois la convention intégrée, le fix devient trivial. Le plus dur, c'est de la reconnaître la première fois.
Vous avez aimé cet article ?
Articles similaires
La stack créative vient de s'effondrer : une semaine d'outils IA, fin avril 2026
Entre le 27 avril et le 4 mai 2026, Adobe, Luma, Novi, fal, Figma, Canva, HeyGen et Anthropic ont tous franchi le même seuil en huit jours. Voici ce qui a été lancé, ce que cela signifie, et ce que cela laisse aux suites créatives navigateur qui essaient de tout consolider.
Musique et SFX par IA en 2026 : ce qui marche vraiment dans l'audio des jeux indé
Il y a trois ans, l'audio de jeu indé voulait dire soit licencier des bibliothèques royalty-free (pas cher, générique, tous les jeux sonnent pareil) soit embaucher un compositeur (top, cher). En 2026, l'IA génère du score qui ship. Voilà quels outils livrent — et où un humain gagne encore.
Génération de mesh par IA en 2026 : ce qui passe vraiment en pipeline de jeu
L'image-vers-3D est passé de "démo bizarre" à "expédié dans des projets indé" en 18 mois. Voilà ce que Tripo, Meshy, Rodin et Hyper3D font vraiment en production — et où l'artiste 3D bat encore le modèle à chaque fois.