3
$\begingroup$

Is there a way to obtain a parametrized BRDF that smoothly interpolates between diffuse, glossy and mirror? For example, $\lambda = 0$ would be perfectly diffuse, $\lambda=0.5$ glossy and $\lambda = 1$ a perfect mirror. Linear interpolation seems very wrong here.

enter image description here

$\endgroup$
2
5
$\begingroup$

Any microfacet BRDF with a roughness parameter will do something like this—for example using the GGX or Beckmann NDFs. When the roughness goes to zero it becomes a mirror; as roughness increases the reflection will be wider, and in the high-roughness limit should be essentially Lambert I think. Roughness is not necessarily limited to [0, 1] as roughness values higher than 1 are possible, but typically roughness = 1 will be very close to Lambert already.

One thing to note about the roughness = 0 limit is that the NDF will become singular (a delta function), so will very likely break the shader code by producing infinite values or NaNs and such. So as a practical matter it might be necessary to special-case that, or clamp the roughness to some low minimum value like 0.0001.

$\endgroup$
3
$\begingroup$

Although microfacet bxdfs do this to some degree, a roughness of 1 is not really the same as a diffuse.

I don't know of any single lobe which can properly blend between them. You would probably have to gradually ignore the reflection direction or include rays farther from it at a faster rate, which may make your glossy useless.

Production renderer materials layer various lobes including a diffuse/specular so they can blend between them or combine them together.

You can see how the arnolds blends thier lobes here: https://autodesk.github.io/standard-surface/

$\endgroup$

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.