I'm trying to use a metalness/roughness workflow and I'm not sure how to translate the colour channels into the different metalness and roughness attributes. I'm not sure if there's a standard on how to encode that information and I can't find any online resources on how to treat the colour channels so I'm guessing that there is no standard.

I have had materials which have used only the R and B channels and having the B channel set as 0 and I have had materials that somehow use all the RGB channels and I'm confused as to why they would need a third channel to determine metallness and roughness.

My question is, how should I determine the format that the map is in and which channel corresponds to which attribute?

Update: I've already come to terms that I'll probably have to compile new shaders for different materials but I'm trying to figure out a way of identifying the format that a map is in. It would appear that for one of the models I'm using, it stores its bump map in the R channel. I didn't even know that was an option

Update 2: I imagine I'll have to just delegate this to the asset pipeline and have the user select which channels to sample from. That or have a hardcoded format and make sure that any PBR materials imported follow that format

  • \$\begingroup\$ I'm starting to think that 1 channel might be reserved for specular F0 \$\endgroup\$ – Sammi3 Jan 29 '20 at 10:00
  • \$\begingroup\$ Try showing us some examples of these maps, the object they belong with, and where applicable, the source you got them from. All of these can give us vital clues as to which channel is used for what. Without any of this information, it will be very difficult for us to tell you anything useful. \$\endgroup\$ – DMGregory Jan 29 '20 at 12:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.