twirl

Normal Map Looks Inverted in Unity? How to Fix the Green Channel

September 22, 2026·twirl

Fix an inverted normal map in Unity by checking the texture type, green-channel convention, mesh tangents, and import settings before changing the material.

A normal map can look correct in Blender or a texture preview and then appear inside out in Unity. Mortar seems raised instead of recessed, stamped details turn into dents, or one direction of the surface responds to light backwards. When that happens, the material usually does not need to be rebuilt. The first things to check are the normal-map import type and the green-channel convention.

Unity's current Normal Map import settings include Flip Green Channel specifically for normal maps that use a different convention from the one Unity expects. That fixes one common case, but not every bad-looking normal map is a green-channel problem. Mesh tangents, mirrored transforms, an incorrect texture type, or a height effect layered on top can produce similar symptoms.

First, make sure Unity imported the texture as a normal map

Select the normal texture in the Project window and set Texture Type to Normal map. Unity's Normal Map texture import documentation says this texture type formats the asset for real-time normal mapping and exposes the normal-specific import controls, including Flip Green Channel.

This is worth checking before changing the image itself. A normal map may look like a purple-blue color texture, but its RGB channels store direction vectors rather than visible color. Importing it as an ordinary color texture means the engine is not treating the file through the intended normal-map path.

Once the texture type is correct, assign it to the material's Normal Map input. In URP, that means the normal input on the Lit material or the corresponding normal input in a custom Shader Graph. If the surface now has the right amount of detail but the relief still appears reversed, check the convention next.

Why the green channel can make a normal map look inverted

Tangent-space normal maps store surface direction across RGB. The red channel represents one tangent direction, the green channel represents the other, and blue points away from the surface. Two common normal-map conventions disagree about the sign of that green, or Y, direction.

The image can therefore be structurally correct while one axis points the wrong way for the target pipeline. The most recognizable symptom is directional inversion. A groove that should slope downward along one axis appears to slope upward, while detail oriented along the other axis may still look plausible.

Unity exposes Flip Green Channel because this mismatch is common. Its current TextureImporter documentation describes the setting as inverting the green Y channel when a normal map uses a different convention from what Unity expects. You do not need to edit and resave the source image just to test the conversion.

Our OpenGL vs DirectX normal map guide explains the convention difference in more detail. The practical Unity test is simpler: if the normal texture is imported correctly but raised and recessed features read backwards, toggle Flip Green Channel and compare the material under a light that makes the relief easy to read.

How to flip a normal map's green channel in Unity

Select the normal-map texture rather than the material. In the Inspector, confirm Texture Type: Normal map, then enable Flip Green Channel and apply the import settings. Unity inverts the Y values during import, so the material can keep using the same normal texture asset.

Check the result on a surface with recognizable depth. Brick mortar, carved lettering, screw heads, seams, and chipped stone are easier to judge than fine noise because you already know which areas should read as raised or recessed. Rotate the light or the object as you inspect it. A normal map is modifying lighting direction, so a single flat lighting angle can hide the problem.

Do not keep Flip Green Channel enabled simply because it makes the material look stronger. The setting is for a convention mismatch, not for increasing normal intensity. If both versions look directionally correct but one feels too subtle, adjust the material's normal strength or inspect the source map instead.

A surface with clear raised and recessed detail makes normal-map direction problems easier to spot.

Example prompt

weathered limestone blocks, chipped edges, shallow pits, fine mineral grain

Albedo
Normal
Roughness
Metallic
Height

Albedo, normal, roughness, metallic, and height — tileable PNGs.

Generate a PBR material

Using twirl normal maps in Unity

twirl currently generates separate albedo, normal, roughness, metallic, and height maps. The normal output uses the OpenGL convention. When you bring a twirl material into Unity, import the normal PNG as a Normal map and use Unity's Flip Green Channel setting if the target Unity setup expects the opposite Y direction.

Keeping the source maps separate makes that conversion explicit. The roughness map also needs Unity-specific handling because URP Lit works with smoothness rather than a standalone roughness input. Our Unity URP roughness map guide covers that conversion, while the Unity material page covers the broader map setup.

If you need to create or inspect a normal outside a complete material, twirl also has a normal map generator with OpenGL and DirectX output controls. A Unity integration is (coming soon), so engine-specific import settings are currently handled in Unity.

If flipping green does not fix it, check the mesh tangents

A tangent-space normal map is interpreted relative to the mesh's tangent basis. That means a correct texture can still shade incorrectly if the imported mesh has bad or unexpected tangents. This tends to show up as seams, sections that flip independently, or a problem that only appears on certain faces rather than across the entire texture.

Unity's model import documentation specifically discusses tangent settings when troubleshooting visible seams from normal maps. If flipping green fixes the whole material consistently, the texture convention was a strong candidate. If one island or section remains wrong, inspect the mesh normals and tangents instead of repeatedly editing the texture.

Mirrored geometry deserves extra attention. Negative object scale, mirrored UVs, or a bake that was created against a different tangent basis can produce local errors that look similar to a convention mismatch. Apply transforms appropriately in the DCC, verify face orientation, and make sure the low-poly mesh used in Unity matches the mesh and tangent assumptions used for the normal bake.

Do not confuse texture normals with mesh normals

The word normal is used for two related but different things. Mesh normals describe the base direction of the polygon surface. A normal map perturbs that direction at each texel for lighting. Flipping the green channel of a texture does not repair faces whose mesh normals point inward.

If the object disappears from some angles, appears inside out, or entire faces are culled, inspect the geometry first. A texture normal problem changes the way light reads across a visible surface. It does not normally reverse which side of a polygon exists for rendering.

This distinction is useful when troubleshooting because it keeps the fixes separate. Recalculating mesh normals will not convert an OpenGL-style texture into the other tangent-space convention, and flipping the texture's green channel will not repair an incorrectly oriented polygon.

Check whether height or parallax is exaggerating the problem

A material can use a normal map and a height map at the same time, but they affect the surface in different ways. In URP Lit, the Height Map input can drive parallax, shifting the visible texture coordinates according to view direction. A normal map changes the direction used for lighting without moving the texture lookup in the same way.

If both effects are strong, conflicting or reversed height data can make a normal-map problem harder to diagnose. Temporarily disable the height or parallax effect and inspect the normal map by itself. Once the normal direction is correct, bring the height effect back and verify that its raised and recessed regions agree with the normal texture.

Our Unity URP height-map guide covers the parallax side of that setup. The useful troubleshooting order is to isolate one source of relief at a time rather than changing several maps together.

Normal-map compression can cause a different kind of artifact

If the relief points in the correct direction but you see banding, block artifacts, or strange gradients on a smooth surface, the problem may be texture compression rather than convention. Flipping green changes direction. It does not restore information lost during compression.

Unity's Normal Map texture importer includes platform-specific overrides along with the usual texture size and compression controls. A map that looks clean in the Editor but breaks on a target device should be checked against that platform's override settings. Normal maps are especially sensitive to channel errors because small value changes alter the reconstructed surface direction.

Do this after verifying the basic import and convention. It is easy to spend time changing compression when the visible problem is simply a reversed Y channel, and just as easy to keep flipping channels when the actual symptom is block compression.

What if the normal map looks correct in Blender but wrong in Unity?

That comparison is useful because it tells you the image contains coherent normal data, but it does not guarantee both applications interpret the Y direction the same way. Blender commonly works with OpenGL-oriented tangent-space normals, and twirl's normal output follows that convention. If the same map reads backwards in your Unity material, Unity's Flip Green Channel option gives you a non-destructive way to test the alternate Y orientation.

Keep the rest of the setup controlled while you compare. Use the same texture scale, avoid adding parallax until the normal is verified, and check that the Unity asset is actually imported as a Normal map. If only parts of the model disagree after the channel flip, move on to tangents, UV mirroring, and transforms.

For Blender-specific setup, our normal map vs height map guide shows how tangent-space normals are connected through the Normal Map node and how they differ from height-driven bump and displacement.

A practical order for fixing an inverted Unity normal map

Start with the texture asset. Set its Texture Type to Normal map and apply the import settings. View the material under directional lighting and identify whether the relief is globally reversed or only broken on parts of the mesh. If the whole surface reads backward, toggle Flip Green Channel and compare again.

If the channel flip solves it, keep the conversion at import and leave the material graph alone. If it does not, disable height or parallax temporarily, then inspect mesh normals, tangents, mirrored UVs, and transforms. When the direction is correct but the surface still contains blocks or gradients, move on to texture compression and platform overrides.

That order avoids treating every normal-map artifact as the same problem. Unity already provides a direct green-channel conversion for convention mismatches, while mesh and compression issues need different fixes. Isolating those cases is faster than repeatedly rebaking a normal texture that may have been valid from the start.

What to do next

Try it

Generate a PBR material

Type a surface and get tileable albedo, normal, roughness, metallic, and height maps. Five free generations a day.

Open twirl
Read next

How to Use a Height Map in Unity URP

Learn how Unity URP uses height maps for parallax mapping, how to connect a PBR height texture to the Lit shader, and when a normal map is the better choice.

Continue reading

Sources

Unity Manual: Normal Map texture Import Settings

Unity Scripting API: TextureImporter.flipGreenChannel

Unity Manual: Importing a model

Unity Manual: Introduction to normal maps

twirl

© 2026 twirlTerms·Privacy