OpenGL or DirectX for Normal maps?

Hello! I’m creating my first prop pack for the Marketplace and was wondering what should my Normal map format be?

I haven’t found any official information, but I see that people mainly use DirectX. I’m creating a prop pack from photogrammetry, and Digital Asset Processing article says that normals should be OpenGL.

How to Set Up Substance Painter Properly - Digital Asset Processing (epicgames.com)

What’s the correct answer here?

Hi,

The only difference between OpenGL and DirectX is that the green channel is flipped.

If you’re building a Marketplace asset, I’d recommend using DirectX as it’s the default in Unreal. User’s won’t have to think about it. If they’re exporting to a ddc that is defaulting to OpenGL, they’ll have to flip it in the ddc.

Quixel Megascans, for instance, are using DirectX.

Hope that helps.

1 Like

Hi there! I’m James from MateStudio. I wanted to follow up your question for anyone that comes across this. I was just creating documentation for my team to understand this, so I might as well share the knowledge.

what should my Normal map format be?

  • I recommend DirectX as most videogames that run in windows, for example, tend to make more use of that format of display for normals.
  • What you use is not so import however
  • Way more important is to describe the format you used to the buyer, for example in a notepad. Because switching from one format to another is just a flip of green channel that the user cam make.

What happened with the article you cited?

  • One thing are the maps, textures and mesh that YOU use to create the final assets, and another is that final asset.
  • The textures you got for creating this assets might have been processed (by whoever created them and with whatever software used) by interpreting the captured normals in DirectX or OpenGl format. For eample; In Quixel Megascans, those scanned asset’s normals map where processed and saved with OpenGL format. So if planned to used them to create your assets, either your software was already set up to work with OpenGL or you flipped the green channel. On a note, Substance painter lets you configure your project by stating which format are you using, so if you set OpenGL you might not need to flip the channel of any normal map bring from Quixel Megascans, you bring to there.
  • At the end what matter to, is which format you export those normals for the end asset you created.
  • Because you might have been working with normal map textures you got, that where in OpenGL, and you used a DDC configured in OpenGL, but you might have the option to export as DirectX normal map. For example Substance Painter will let you chose, regardless how you project was configured, on what format export those normal maps.

How can I remember all this?

  • The best way is to remember (or write it down) this questions as follow:
  1. The normal map textures I will be using to create this asset, on which format are they (OpenGL or DirectX)? - You can always make a simple test by comparing the image I attached with the normal map you got and more or less figure it out without having to render it to see.
  2. My DDC software or texture application on which format is configured? Will I need to flip the green channel for myself to work properly?
  3. Once I’m done with those steps, and correctly created the asset, on which format (OGL or DX) I want to export the normal maps? For what platform or DDC is target for? Do I know what format tends to use that platform? -remember to add a note

Attached image.

Hope it helps for however see this!