Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Specular vs Metallic - Issue with reflective sheen on Metallic workflow

Discussion in 'General Graphics' started by Aurecon_Unity, Dec 3, 2015.

  1. Aurecon_Unity

    Aurecon_Unity

    Joined:
    Jul 6, 2011
    Posts:
    241
    Hi All, I've noticed that when I use the metallic PBR workflow, there is a slight reflective sheen on the object despite having no metallic or smoothness specified.

    For these images, I have one albedo map, and all the sliders are set to 0 / black for both metallic and specular. I would expect them to look the same, however here are the results:

    Specular:

    Specular.jpg

    Metallic:

    Metallic.jpg

    Is this standard behavior? I prefer the metallic workflow, but I don't want everything in my scene to have a blue reflective tint.

    Thanks
     
    marcospgp likes this.
  2. Thomas-Mountainborn

    Thomas-Mountainborn

    Joined:
    Jun 11, 2015
    Posts:
    489
    I've noticed the same - whenever I need shininess to be defined by a texture, I always use specular now, even though I also prefer the metallic workflow.
     
  3. tmammela

    tmammela

    Joined:
    Sep 28, 2015
    Posts:
    27
    I'm also using metallic and have this annoying blue tint everywhere. I could just turn down reflection probe intensity, but of course then all the reflective surfaces will look dull. I even modified my standard shader to allow more roughness, but the blue tint is there to stay on all perfectly matte non-metallic surfaces.
     
  4. Aurecon_Unity

    Aurecon_Unity

    Joined:
    Jul 6, 2011
    Posts:
    241
    Okay so it is good to know it's not just me. Presumably this must be by design and not a bug? I wish we could summon a Unity mod to shed some additional light on this!
     
  5. Aurecon_Unity

    Aurecon_Unity

    Joined:
    Jul 6, 2011
    Posts:
    241
    I was hoping this might be fixed on 5.3 but sadly not.

    A few tests between Metallic and Specular workflows makes it apparent that the Metallic workflow receives too much reflection - the Smoothness slider at 0 gives the same result as the Specular colour at 55,55,55 using the Specular workflow.

    I've submitted a bug report here (linking back to this thread):

    https://fogbugz.unity3d.com/default.asp?759350_qft3paq6a730f9fr

    So hopefully we might get some sort of official word!
     
  6. Potaski

    Potaski

    Joined:
    Aug 21, 2013
    Posts:
    52
    It's not a bug, it's the nature of the metallic/specular workflows.

    In metallic workflow, the shader calculates the specular color from albedo and metallic then do all the shading math. The point is: 0 value of metallic doesn't produce a specular color of (0,0,0), instead it gives a default non-metal specular, which is around RGB(55,55,55) in sRGB space.

    In theory you shouldn't have a darker specular value than that. If you do want that in your game, either use the specular workflow or modify unity's metallic shader code.
     
  7. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,002
    What he said.

    There's no bug here.

    Start placing a few reflection probes if you want to reduce the blue cast.
     
  8. Dhialub

    Dhialub

    Joined:
    Nov 11, 2013
    Posts:
    41
    You should make your materials physically correct and it won't look weird.
    It seems like you don't have any maps besides albedo/base color. It also contains lighting, which generally doesn't work well with physically based shaders.
    You had better use the mobile diffuse or the legacy diffuse shader, since they are cheaper to render.
     
    theANMATOR2b likes this.
  9. Aurecon_Unity

    Aurecon_Unity

    Joined:
    Jul 6, 2011
    Posts:
    241
    Thanks for everyones replies - a bit to mull over.

    In my case, it's the incoming light from the reflection probe that causes the tint - I am using the Time of Day plugin so I can reduce the reflectivity multiplier to reduce the effect at the cost of losing a lot of ambient light in the scene.

    I guess I'm confused because even if I give the model a black albedo and 0 values for metallic and smoothness, it still gives me a specular reflection equivalent of 55,55,55. Potaski explained it, but I'm still not sure why it wouldn't result in a surface with zero reflectivity. I'm aware that everything has some measure of specular, but what if I want a material that displays less than that? They do exist, I'm sure - a black t-shirt for instance? Or maybe not, and I need to more closely observe the real world?

    I'm at the stage where I'm about to start authoring a lot of textures in either Metallic or Specular, and I'm just not sure which way to go. Even if the 55,55,55 specular of the Metallic workflow is more realistic, I'm a bit nervous about knowing I could never circumvent that if I needed to without re-authoring textures in the specular workflow.

    Thanks everyone,
     
  10. Potaski

    Potaski

    Joined:
    Aug 21, 2013
    Posts:
    52
    First of all, in order for PBR to work correctly, you have to work in linear mode. In gamma mode, the 55,55,55 specular does give every object a "tint" which is not realistic. My game has the same problem, so I tweaked the shader to give a value around 20,20,20. We can't use linear mode because it's a mobile project. If you're developing for PC, just go for linear mode.
     
  11. bgolus

    bgolus

    Joined:
    Dec 7, 2012
    Posts:
    12,238
    Everything has specular, even materials that are considered the "standard" for diffuse like chalk powder. And yes there are special materials in the real world that have very little specular, like Vantablack, but these don't really exist in day to day real life. In this case the metallic setup has the specular balanced around the average reflectivity of most objects. You can reduce the "ambient glow" some by using an AO map to mask out the areas you don't want to reflect the environment or have other ambient lighting.