Advertisement

Metallic VS specular reflectance

Started by August 26, 2018 10:43 PM
5 comments, last by Scouting Ninja 6 years, 5 months ago

So some popular PBR workflows parameterize both metalness and reflectance. Trying to grasp the paradigm myself, I wondered if the latter is really necessary. Since the variance of reflectance of non-metals is pretty low, and the reflectance of metals is always high, what if these parameters were merged? As it currently is, they ostensibly do the same thing, with the caveat that metallness also affects the specular color, which could perhaps be compensated for.

43 minutes ago, silikone said:

Since the variance of reflectance of non-metals is pretty low

How reflective a material is depends on how rough the surface is, there is a lot of plastics that is 100% reflective and yet many none metals like rubber and leather that have very rough surfaces,

Also some metals like rust have very bumpy surfaces and as a result isn't reflective.

Advertisement

Without the metalness workflow, you have roughness (1 value, or 2 if anisotropic), albedo (rgb, AKA diffuse color) and F0 (rgb, AKA specular color, AKA reflection coefficient). 

With metalness you have roughness, color and metalness. And then compute:

Albedo = lerp(color, black, metal) 

F0 = lerp(darkGrey, color, metal) // dark Grey is typically about 0.03

With metalness + reflectivity, you modify F0 by the reflectivity value after this. This allows non metals to have a bit more variation (e.g. Maybe you can use a 0.02 to 0.15 range instead of a fixed 0.03). You can also use it as a 'cavity'/'specular shadowing' map, where artists can set reflectivity to black in areas where they don't want specular highlights showing up (such as inside cracks/crevices). 

1 hour ago, Scouting Ninja said:

How reflective a material is depends on how rough the surface is, there is a lot of plastics that is 100% reflective and yet many none metals like rubber and leather that have very rough surfaces,

The brightness of a specular highlight depends on roughness and the reflectivity coefficient (calculated from index of refraction). No plastic has anywhere near a 100% reflectivity coefficient - they're likely less than 5%. Pure silver on the other hand has a coefficient of around 99% though. 

12 minutes ago, Hodgman said:

No plastic has anywhere near a 100% reflectivity coefficient - they're likely less than 5%.

This is probably true, my PBR cheat sheet only tells how much to set the slider; not the real world value. Yet I still feel that reflective requires it's own individual setting, even if that setting is relative to how metal a object is.

Also some none metals like glass and other clear none metals will have a high reflection if they have a black surface underneath, something like "reflective black laminate table top" for example; because of how smooth the surface is.

On 8/27/2018 at 1:29 AM, Scouting Ninja said:

How reflective a material is depends on how rough the surface is, there is a lot of plastics that is 100% reflective and yet many none metals like rubber and leather that have very rough surfaces,

Also some metals like rust have very bumpy surfaces and as a result isn't reflective.

I realize that the apparent brightness is very much determined by roughness, but I am thinking of the total specular energy reflected from a material.

An engine like Unreal lets you set both metallic and specular in addition to the very ubiquitous parameter that is roughness.

I was thinking, to simplify the workflow, what if the two former slider inputs were combined into one? So for dielectrics, the low range would account for the refraction variance found in reality, and the highest value would account for zero albedo chromatic specular materials, or pure metal. I am not sure about the BRDF of Unreal, so there could very well be factors that rely on these separate inputs.

14 hours ago, silikone said:

An engine like Unreal lets you set both metallic and specular in addition to the very ubiquitous parameter that is roughness.

I was thinking, to simplify the workflow

If this is for your personal use I can't see why not. If you plan on working with other team members then there should be no harm, if you also have some kind of fallback in case they want to tweak things.

For example, in Unreal when a artist wants to change the Fresnel value they can overwrite the value in the material editor. Because there will always be some kind of material that is the exception to the rule, or maybe you need to tweak a value to get a special optical illusion.

Unreal's specular and Fresnel values is used a lot by terrain artist, to create realistic looking plant life; because plants don't work so great with metal. Trees that don't have a subsurface profile is a good example.

 

The tricky part is allowing artists to change one value, without destroying the formula of the shader. That is why there is usually a setting for spectacular, so that it can be changed without destroying the shader.

This topic is closed to new replies.

Advertisement