We use cookies. Privacy

twirl
Pricing

OpenGL vs DirectX normals (and roughness vs smoothness)

September 1, 2026·twirl

If your PBR material looks inside-out in Unreal or too shiny in Unity, it is probably the green channel or an inverted roughness map.

Two conversions eat more time than the actual texturing: normal Y-up vs Y-down, and roughness vs smoothness. They look like broken maps. They are the other engine’s convention.

twirl writes OpenGL-style normals and roughness, same as Blender. That is the default. Unreal and Unity want a flip.

Free PBR materials

board-formed concrete
board-formed concrete
2K upscale4K upscale
weathered concrete
weathered concrete
2K upscale4K upscale
hardwood floor
hardwood floor
2K upscale4K upscale
brushed steel
brushed steel
2K upscale4K upscale
red brick
red brick
2K upscale4K upscale
exposed brick
exposed brick
2K upscale4K upscale
sandstone
sandstone
2K upscale4K upscale
mossy stone
mossy stone
2K upscale4K upscale
oxidized copper
oxidized copper
2K upscale4K upscale
rusted iron
rusted iron
2K upscale4K upscale
white paint
white paint
2K upscale4K upscale
limestone
limestone
2K upscale4K upscale
polished concrete
polished concrete
2K upscale4K upscale
brass
brass
2K upscale4K upscale
linen
linen
2K upscale4K upscale
parking lot asphalt
parking lot asphalt
2K upscale4K upscale
mossy brick
mossy brick
2K upscale4K upscale
smooth concrete
smooth concrete
2K upscale4K upscale
galvanized steel
galvanized steel
2K upscale4K upscale
old saddle leather, vegetable tanned, burnished
old saddle leather, vegetable tanned, burnished
2K upscale4K upscale
board-formed concrete
board-formed concrete
2K upscale4K upscale
weathered concrete
weathered concrete
2K upscale4K upscale
hardwood floor
hardwood floor
2K upscale4K upscale
brushed steel
brushed steel
2K upscale4K upscale
red brick
red brick
2K upscale4K upscale
exposed brick
exposed brick
2K upscale4K upscale
sandstone
sandstone
2K upscale4K upscale
mossy stone
mossy stone
2K upscale4K upscale
oxidized copper
oxidized copper
2K upscale4K upscale
rusted iron
rusted iron
2K upscale4K upscale
white paint
white paint
2K upscale4K upscale
limestone
limestone
2K upscale4K upscale
polished concrete
polished concrete
2K upscale4K upscale
brass
brass
2K upscale4K upscale
linen
linen
2K upscale4K upscale
parking lot asphalt
parking lot asphalt
2K upscale4K upscale
mossy brick
mossy brick
2K upscale4K upscale
smooth concrete
smooth concrete
2K upscale4K upscale
galvanized steel
galvanized steel
2K upscale4K upscale
old saddle leather, vegetable tanned, burnished
old saddle leather, vegetable tanned, burnished
2K upscale4K upscale
Browse materials

Normals

A normal map stores surface direction as color. OpenGL and DirectX disagree on the green channel (Y). Blender, Godot, and most GL pipelines want OpenGL, so leave it. Unreal, Unity, and DirectX want the green channel flipped. When you need actual relief instead of shading alone, compare height map displacement in Blender.

If lighting looks like the brick materials are dents, invert green. Do not regenerate. Do not “fix” it in the albedo.

In Blender, Separate Color, invert G, Combine Color, into the Normal Map node. Or a dedicated invert node on Y.

Roughness vs smoothness

Same data, inverted. Roughness 0 is a mirror and 1 is chalk, which is what Blender wants, and what Unreal wants as the R in ORM after packing. Smoothness is 1 minus that, which is what Unity puts in the Mask Map alpha on URP/HDRP.

Invert in any image editor or a one-line shader. Packing later: Unreal ORM is occlusion / roughness / metallic in RGB. Unity Mask Map is metallic / AO / detail / smoothness. For real geometry from height in Unreal, see Nanite tessellation height maps in Unreal.

A short checklist

Albedo in sRGB, everything else Non-Color or Linear. In Blender, leave the normals and the roughness. In Unreal, flip green, pack ORM, and use DirectX normals. In Unity, flip green, invert roughness to smoothness, and pack the Mask Map.

Grab a set from twirl and run it through that list before you blame the prompt.

What to do next

Browse

Public materials

Browse public materials and download tileable PBR sets without an account.

Browse public materials
Read next

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

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

Continue reading

Free PBR materials

board-formed concrete
board-formed concrete
2K upscale4K upscale
weathered concrete
weathered concrete
2K upscale4K upscale
hardwood floor
hardwood floor
2K upscale4K upscale
brushed steel
brushed steel
2K upscale4K upscale
red brick
red brick
2K upscale4K upscale
exposed brick
exposed brick
2K upscale4K upscale
sandstone
sandstone
2K upscale4K upscale
mossy stone
mossy stone
2K upscale4K upscale
oxidized copper
oxidized copper
2K upscale4K upscale
rusted iron
rusted iron
2K upscale4K upscale
white paint
white paint
2K upscale4K upscale
limestone
limestone
2K upscale4K upscale
polished concrete
polished concrete
2K upscale4K upscale
brass
brass
2K upscale4K upscale
linen
linen
2K upscale4K upscale
parking lot asphalt
parking lot asphalt
2K upscale4K upscale
mossy brick
mossy brick
2K upscale4K upscale
smooth concrete
smooth concrete
2K upscale4K upscale
galvanized steel
galvanized steel
2K upscale4K upscale
old saddle leather, vegetable tanned, burnished
old saddle leather, vegetable tanned, burnished
2K upscale4K upscale
board-formed concrete
board-formed concrete
2K upscale4K upscale
weathered concrete
weathered concrete
2K upscale4K upscale
hardwood floor
hardwood floor
2K upscale4K upscale
brushed steel
brushed steel
2K upscale4K upscale
red brick
red brick
2K upscale4K upscale
exposed brick
exposed brick
2K upscale4K upscale
sandstone
sandstone
2K upscale4K upscale
mossy stone
mossy stone
2K upscale4K upscale
oxidized copper
oxidized copper
2K upscale4K upscale
rusted iron
rusted iron
2K upscale4K upscale
white paint
white paint
2K upscale4K upscale
limestone
limestone
2K upscale4K upscale
polished concrete
polished concrete
2K upscale4K upscale
brass
brass
2K upscale4K upscale
linen
linen
2K upscale4K upscale
parking lot asphalt
parking lot asphalt
2K upscale4K upscale
mossy brick
mossy brick
2K upscale4K upscale
smooth concrete
smooth concrete
2K upscale4K upscale
galvanized steel
galvanized steel
2K upscale4K upscale
old saddle leather, vegetable tanned, burnished
old saddle leather, vegetable tanned, burnished
2K upscale4K upscale
Browse materials
twirl
© 2026 twirlTerms·Privacy·Contact··Featured on ToolPilot·Twelve Tools