Home Technical Talk

Approach for PBR correctness of coated or treated metal surfaces (Metal/Rough & Spec/Gloss)

polycounter lvl 5
Offline / Send Message
NealAdamLT polycounter lvl 5
Hey everyone,

I've been texturing hard surface assets for a while now but still run into the same issue, that especially coated metal surfaces (Anodized Aluminium, Blued Steel etc.) get later on critiqued as not quite PBR correct.

While this is somewhat of a problem with Metal/Rough where I am not sure how much to reduce the metallic value for for example an anodized surface, it is even more so a problem with Spec/Gloss.
While the progress of anodizing aluminum is oxidization, rust itself is approached mostly colorless in the specular when following the Substance PBR guide. Nevertheless, colored anodized surfaces require the Specular to have stronger color information to look right.

Resources on that topic that go in-depth are rare and I do not want to settle on the common "just do what looks right" because it's subjective.

If a technique, approach, or resource exists that makes it less of a guesswork with these types of surfaces, I would really appreciate the help!

Replies

  • rexo12
    Offline / Send Message
    rexo12 interpolator
    do not want to settle on the common "just do what looks right"
    Unfortunately this is literally the answer. The PBR shading model is only a model, and all models break down somewhere. While technically speaking the anodised surface is a dielectric, you should just treat it like a metal. There is a (brief) thread discussing this here, and I do agree with the final reply that you shouldn't overthink it. If you really wanted to get into the weeds of physically representing those surfaces (or you need something like iridescence), you're probably looking at something outside the bounds of the typical PBR ubershader. I did find a couple of articles that discuss BRDFs for anodised and etched surfaces which I can link if you like, but they're not open-access and I expect them to be unhelpful from an artists perspective.

    Could you expand on the 'not quite PBR correct' critiques you're receiving?
  • NealAdamLT
    Offline / Send Message
    NealAdamLT polycounter lvl 5
    I totally get that the PBR shading model is not suitable for truly physically correct shading of those surfaces if you have to take texel limitations into account. Nevertheless, experienced artists always seem to nail the PBR correctness, which is why I am left wondering if I'm missing a technique or approach that helps with that.

    Thanks for offering the BRDF resources but you are right, from an artist's perspective this might not be the right approach.

    rexo12 said:
    Could you expand on the 'not quite PBR correct' critiques you're receiving?
    Sure, so in typical fashion, I try to get my work critiqued as often as possible, and in many cases, I get the comment that my textures aren't completely PBR conform.
    This asset for example was part of an Arttest. While the Arttest went well, I got the feedback that my textures would still need work to be completely PBR valid. While I gladly take the feedback I can't find a way to improve upon it cause I don't know how to approach the problem.



  • Alex_J
    Offline / Send Message
    Alex_J grand marshal polycounter
    If they can't point out exactly why it is not PBR exact I'd suspect it's BS. I wouldn't take every piece of feedback you get at face value. They may have just hired somebody else for whatever reason and wanted to give you some excuse to politely let you go. I mean that's a lot better than ghosting at least it would indicate they have some common decency.

    Compared to the real thing we might say that yours seems to have slightly tighter reflections:

    But ya know, these things get covered with dust, dirt, oil, whatever. If somebody is going to suggest there is a number value that is correct reflective quality for a laser model used in a game or movie I'd say they are full of it. They might be able to say, "after testing we determined the roughness value for X polymer type is 0.45". Marmoset has a table with common microsurface values on their website IIRC. I think it mentioned how they come up with such values and linked to further reading. But really I think for the grunt artist all you need to know is where to look up the values - coming up wiht the values and building the shader model is not an artist job. That's an engineer. 
    So if you can find such data then you might use that value as your base. And then when you layer your dirts and oils and bloods or whatever those things can similarly have their own roughness values. FrankPolygon has a few thorough guides for exactly that sort of thing in his sketchbook and I haven't seen anybody do more convincing models of that nature.

    Of course you could be egregiously outside the scope of believability but clearly you are not.

    I think some other critiques might be made about the texturing in a more artistic sense but that is such a low level of nit picking, the type of person to make such a critique I'd suspect is probably costing the company a lot of money if that's what they do on a day to day. I mean if your plastic material is a tiny bit too smooth how easy is it to go and adjust that? It takes 2 minutes. Far more important are a million other things - minor nitpicks on the art seems like the last thing actually worthwhile to test in a candidate to me.
    A better test would be to give vague instructions with an impossible deadline, and then ask for a few iterations after that. Then you'll know if the artist has the experience to design a workflow that makes it possible and efficient to adjust based on a feedback. Because it is never "measure twice, cut once" in digital art. If you are doing things that way you really are not taking advantage of the medium at all. It's better to be like, "setup a cutting assembly line and then make a bazillion cuts and choose which is best".

    I seriously doubt your art is lagging behind because you aren't realistic enough on a hyper-technical level. How many people have told you this? Do you have a portfolio you can share?

    p.s. these laser devices are just plastic.





  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    Anyone being dogmatic about surfaces that cannot be represented by the shader you're using is very silly and doesn't know what they're talking about. 

    However, there are some hard(ish) rules 

    metallic specular/basecolor values should never be fully saturated (eg. 255,0,0)
    minimum valid value for metallic specular/basecolor (usually around 150(sRGB) )
    minimum valid value for basecolor (usually 50(sRGB) but sometimes 30) - that would be your vantablack. 
    minimum practical value for basecolor (usually 70(sRGB) but sometimes 50) -  generally referred to as coal black
    maximum practical value for basecolor (usually around 234(sRGB)) - generally referred to as paper white

    Exactly where the boundaries lie depends on your renderer so check the docs but stepping outside them actually can cause the maths to go a bit wonky. 

    TLDR - eyeball it within the hard boundaries. 

    and a note on roughness. 
    Measuring roughness is bollocks unless you've tested the precise surface you're trying to represent and averaged the value over the area of a texel on the final model.
    You don't do that for two reasons
    1 : it would cost a fortune
    2 : it still wouldn't look right because environment maps are lower resolution than reality. 





  • Shrike
    Offline / Send Message
    Shrike interpolator
    Id say the probably didnt like that the white text is pure white and the black screws are pure black in diffuse

    But what would bother me is the lack of AO on the rotating dial and the general lighting, otherwise this seems perfectly fine
  • pior
    Offline / Send Message
    pior grand marshal polycounter
    There are a few things at play here IMHO.

    - On one hand, the feedback they gave you is meaningless (litterally), which indeed could suggest that it is just an excuse for them to not give deeper feedback or the actual reason for rejecting the test.

    - On the other hand, you textures *are* odd. Simply looking at the little blue anodized thmbscrew tells me that the shader you are using isn't the default widely accepted kind (broadly speaking : as used in UE4/UE5 PBR) where the blue would be in the diffuse texture, the metalness pass would be pure white, the roughness would be medium to low-ish, and specular would be a fixed .5 value or left unplugged. So this tells me that this is more of "specular-based" approach, which isn't wrong per say but certainly not the most straightforward to author and give feedback on, since it is less intuitive to read. This could have been very easily clarified with some simple communication between both parties though.

    - And lastly, you are underselling your work by not showing the background plate and light sources that are generating the reflections.

    None of the above is related to precisely dialing PBR values, and is more related to common practices really.



  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    indeed - i read that as spec/gloss workflow, while I tend to prefer the metal/rough (plus dielectric specular) approach it really doesn't make any difference to the end result

    if we're going to look at the textures, 

    In the specular texture the bulk of that asset wants to be at or very close to a value of 0.5 since that's where plastics (and 99% of common materials) live. 
    I'd hazard a guess that the darker values on the stickers are there because the stickers look too shiny - dont do that,  make them rougher in the gloss texture instead.
    This is a common 'trick' and it is risky -  specular reflectance controls reflectivity which is a property of the material, if you piss around with that, you're representing something other than plastic. In this case you have dielectric surfaces that can be adequately represented using the disney BRDF so you should be sticking very close to the default 0.5 value for specular. 
    As a note, I will drop specular level to between 0.37 and 0.5 when attempting to represent a complex surface where light scatters and I cannot use a material that supports scattering or for very rough surfaces where you would ideally be using oren-nayer rather than lambertian lighting. This is a hack but you can justify it by telling yourself that less light would be scattered towards the camera given the complexity of the surfaces involved.

    The Bolt things are a bit weird,  if they're painted as the specular suggests then you need to bump the basecolor up to a lighter value,  if they're metal then you want to bump the value of the specular on the darker bits up somewhat - as i said in my previous post, you can eyeball that to an extent depending on the finish you're trying to achieve. 

    For me there's the gloss texture is where a lot of the weaknesses lie, its very noisy which is hiding the separation between surfaces and there's very little range in value.
    I find it helpful to make panel gaps or anything that is under heavy occlusion very rough and also to paint very dark/black values into your specular map  in the same places - this will occlude specular highlights under direct light  and support your ambient occlusion texture under indirect lighting all of which leads to the shape of the object feeling more solid. 

  • gnoop
    Offline / Send Message
    gnoop sublime tool
    For me representing  a material job without  an environment  and lighting/shadows  is wrong. Don't know why everyone is doing this.  You never get  "real" look that way . I would keep hdri background at least.      The second thing IMO  is  a bit overdone  look.   Comes often from Substance painter . You can't fight an urge to use all those cool noises :)   while often a flat fill is just enough  with a tad bit of hardly noticeable something on edges .   To stop at right moment is always been a problem in art jobs.

    Also I totally support what  poopipe   said about specular level input.     IMO it's still  absolutely necessary  in those PBR  shaders  in many cases.  It's not only for faking  SSS  but too kill excessive reflections even from  max roughness  in some areas . 

    In general  PBR  is just a cool name .   Try to switch in between  openGL and  iRay  in  Substance Designer  or Evee and  Cycles in Blender  and you would see how different it looks  highlights intensity wise with all same supposedly physically correct shaders.


  • Shrike
    Offline / Send Message
    Shrike interpolator
    gnoop said:
    In general  PBR  is just a cool name .   Try to switch in between  openGL and  iRay  in  Substance Designer  or Evee and  Cycles in Blender  and you would see how different it looks  highlights intensity wise with all same supposedly physically correct shaders.
    Well the implementations depend, you can distinguish different BRDF implementations
    Marmoset looks very plastic-y and juicy, unreal / Unity hrdp similar but a bit less with their GGX implementation. Cryengine has a more flat and realistic look with a better diffuse model I assume but which also might look more "boring". Octane is also more stilized looking than some other offline renderers, you can basically see the different renderers there by their BRDF style.
    Using a different model for diffuse and for gloss also makes a big difference, such as Lambertian or Oren Nayar, which most realtime renderers do not have. Marmoset offers a seperate diffuse model but somehow still looks super juicy. Im no expert but so there must be noticeable differences in implementations I assume.

    However there are also different rendering stacks. Blender has a outdated Tonemapper which gives too much saturation in the highlights, making things look unrealistically juicy in saturation, but the raw output might be not too different. Evee and Cycles are also realtime vs offline. You cannot compare rasterization with pathtracing, even if the base shading model is the same.
  • NealAdamLT
    Offline / Send Message
    NealAdamLT polycounter lvl 5
    Alex_J said:
    I seriously doubt your art is lagging behind because you aren't realistic enough on a hyper-technical level. How many people have told you this? Do you have a portfolio you can share?
    Sure thing! https://www.artstation.com/nealadam
    Shrike said:
    Id say the probably didnt like that the white text is pure white and the black screws are pure black in diffuse

    But what would bother me is the lack of AO on the rotating dial and the general lighting, otherwise this seems perfectly fine
    It has to be said that this is no render but just a screengrab from substance with no AO applied. The text and screws should be within the limits poopipe posted above. Might be that the screengrab is messing things up. But thanks for the feedback!
    pior said:
    There are a few things at play here IMHO.

    - On one hand, the feedback they gave you is meaningless (litterally), which indeed could suggest that it is just an excuse for them to not give deeper feedback or the actual reason for rejecting the test.

    - On the other hand, you textures *are* odd. Simply looking at the little blue anodized thmbscrew tells me that the shader you are using isn't the default widely accepted kind (broadly speaking : as used in UE4/UE5 PBR) where the blue would be in the diffuse texture, the metalness pass would be pure white, the roughness would be medium to low-ish, and specular would be a fixed .5 value or left unplugged. So this tells me that this is more of "specular-based" approach, which isn't wrong per say but certainly not the most straightforward to author and give feedback on, since it is less intuitive to read. This could have been very easily clarified with some simple communication between both parties though.

    - And lastly, you are underselling your work by not showing the background plate and light sources that are generating the reflections.

    None of the above is related to precisely dialing PBR values, and is more related to common practices really.




    Oh, you might be getting things wrong here, the Arttest had hard limitations and I was required to use Spec/Gloss in this one (it's superior anyway lol).
    Furthermore, this is just a screen grab I took to emphasize on my textures. It's by no means a finished render!
  • NealAdamLT
    Offline / Send Message
    NealAdamLT polycounter lvl 5
    poopipe said:
    indeed - i read that as spec/gloss workflow, while I tend to prefer the metal/rough (plus dielectric specular) approach it really doesn't make any difference to the end result

    if we're going to look at the textures, 

    In the specular texture the bulk of that asset wants to be at or very close to a value of 0.5 since that's where plastics (and 99% of common materials) live. 
    I'd hazard a guess that the darker values on the stickers are there because the stickers look too shiny - dont do that,  make them rougher in the gloss texture instead.
    This is a common 'trick' and it is risky -  specular reflectance controls reflectivity which is a property of the material, if you piss around with that, you're representing something other than plastic. In this case you have dielectric surfaces that can be adequately represented using the disney BRDF so you should be sticking very close to the default 0.5 value for specular. 
    As a note, I will drop specular level to between 0.37 and 0.5 when attempting to represent a complex surface where light scatters and I cannot use a material that supports scattering or for very rough surfaces where you would ideally be using oren-nayer rather than lambertian lighting. This is a hack but you can justify it by telling yourself that less light would be scattered towards the camera given the complexity of the surfaces involved.

    The Bolt things are a bit weird,  if they're painted as the specular suggests then you need to bump the basecolor up to a lighter value,  if they're metal then you want to bump the value of the specular on the darker bits up somewhat - as i said in my previous post, you can eyeball that to an extent depending on the finish you're trying to achieve. 

    For me there's the gloss texture is where a lot of the weaknesses lie, its very noisy which is hiding the separation between surfaces and there's very little range in value.
    I find it helpful to make panel gaps or anything that is under heavy occlusion very rough and also to paint very dark/black values into your specular map  in the same places - this will occlude specular highlights under direct light  and support your ambient occlusion texture under indirect lighting all of which leads to the shape of the object feeling more solid. 


    Great tips and great feedback here, really appreciate it! Especially the approach for complex surfaces that normally scatter light sounds good, I need to try that because I run into the problem often.

    The Bolts are mostly the problem why I posted here. The black bolts are hard anodized and the blue bolt has a normal anodization. While I agree that the specular would need increasing, the bolt itself just did not look right after that which is why I kept it low.
  • Alex_J
    Offline / Send Message
    Alex_J grand marshal polycounter
    Looking at the artstation, I don't think you are lacking for any technical implementation.

    Could be a billion other reasons, some in your control, many outside, as to why you miss the job and test-giver says whatever they say. But the question has led to some great tips anyway. 

    My point is just that I wouldnt take this particularl feedback as truth, as if the tester knows some secret that you don't. It doesn't look like you make pretty much any mistakes with your art so I don't think putting focus on fixing non-existing issues will help in a job hunt.




  • gnoop
    Offline / Send Message
    gnoop sublime tool
    Shrike said:
    gnoop said:
    In general  PBR  is just a cool name .   Try to switch in between  openGL and  iRay  in  Substance Designer  or Evee and  Cycles in Blender  and you would see how different it looks  highlights intensity wise with all same supposedly physically correct shaders.
    Well the implementations depend, you can distinguish different BRDF implementations
    Marmoset looks very plastic-y and juicy, unreal / Unity hrdp similar but a bit less with their GGX implementation. Cryengine has a more flat and realistic look with a better diffuse model I assume but which also might look more "boring". Octane is also more stilized looking than some other offline renderers, you can basically see the different renderers there by their BRDF style.
    Using a different model for diffuse and for gloss also makes a big difference, such as Lambertian or Oren Nayar, which most realtime renderers do not have. Marmoset offers a seperate diffuse model but somehow still looks super juicy. Im no expert but so there must be noticeable differences in implementations I assume.

    However there are also different rendering stacks. Blender has a outdated Tonemapper which gives too much saturation in the highlights, making things look unrealistically juicy in saturation, but the raw output might be not too different. Evee and Cycles are also realtime vs offline. You cannot compare rasterization with pathtracing, even if the base shading model is the same.

    That's an example  of  totally different highlight spot intensity  in Evee( left) and Cycles (right) with random asphalt material  from Megascan    . If you try it in  Substance  OpenGL vs Iray the difference would be even more drastic.    All same material , light ,exposure ,  tone mapper   etc.         I see same difference in almost every online vs offline  render.

    Aren't the highlight spot intensity  and shape the core  reasons we use PBR ?   The core thing of energy conservation?  
     How they could be so different and  both physically correct ?  What all those precise measures give you if it's so different.
    I saw  this  from the first day we use PBR  and always  thought  "physically  based" was just a wish  rather than true. 
    Imo in-games PBR  always need countless hacks . Before PBR and after  , no  much difference .  And always certain trade off.   For this asphalt issue exactly you have to make it less rough  to see some highlight spot with higher sun angles  for an expense  of being too shiny at low sun  and so on.    It makes shadows less dark   and  issues grow as a snow ball. 
  • Brandon.LaFrance
    Offline / Send Message
    Brandon.LaFrance polycount sponsor
    @gnoop I think people can take the term PBR too literally. They stop reading after "physically" and ignore the word "based". At the end of the day its just an approximation. Although the approximations are built to be as accurate as possible, they still have to fit within performance limitations, and so,  depending on application, you'll have varying levels of accuracy traded for performance. I think the only thing that all models agree on is that the shader must obey the conservation of energy, that the total energy reflected cannot exceed the incoming energy. And as far as optimizations are concerned, basically anything else goes.

    In the example render that you posted, although quite different, it appears that both are obeying energy conservation. The highlight is much more intense in Cycles, but the shadows are also much darker to compensate. I think this is just a reality of the different BRDFs in use, and in order to render fast enough to be used in real-time, a simpler BRDF was chosen for Eevee. In a perfect world, the faster approximations would give results closer to the more accurate ones, but we do not yet live in that world.

Sign In or Register to comment.