<p>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.</p>
<p>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.</p>

CC BY-SA 4.0
2020-06-22T21:31:10.730Z
2020-06-22T21:31:10.730Z
Nathan Reed
<p>Although microfacet bxdfs do this to some degree, a roughness of 1 is not really the same as a diffuse.</p>
<p>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.</p>
<p>Production renderer materials layer various lobes including a diffuse/specular so they can blend between them or combine them together.</p>
<p>You can see how the arnolds blends thier lobes here:
<a href="https://autodesk.github.io/standard-surface/" rel="nofollow noreferrer">https://autodesk.github.io/standard-surface/</a></p>

CC BY-SA 4.0
2020-06-23T16:58:44.563Z
2020-06-23T16:58:44.563Z
Peter
<p>Is there a way to obtain a parametrized BRDF that smoothly interpolates between diffuse, glossy and mirror? For example, <span class="math-container">$\lambda = 0$</span> would be perfectly diffuse, <span class="math-container">$\lambda=0.5$</span> glossy and <span class="math-container">$\lambda = 1$</span> a perfect mirror. Linear interpolation seems very wrong here.</p>
<p><a href="https://i.sstatic.net/kMAIT.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/kMAIT.png" alt="enter image description here" /></a></p>

CC BY-SA 4.0
2020-06-22T19:52:41.337Z
This is what you should read: http://www.eugenedeon.com/project/importance-sampling-microfacet-based-bsdfs-using-the-distribution-of-visible-normals/
ali
CC BY-SA 4.0
2020-06-22T21:51:39.160Z
And this. https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.html
ali
<pathtracing><brdf>
BRDF that interpolates between diffuse, glossy and reflective?
vuoriov4
# BRDF that interpolates between diffuse, glossy and reflective?

(Asked by: username_0 on 2020-06-22)

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](https://i.sstatic.net/kMAIT.png)](https://i.sstatic.net/kMAIT.png)

**Tags:** pathtracing, brdf

> **Comments:**
> **username_1**: This is what you should read: http://www.eugenedeon.com/project/importance-sampling-microfacet-based-bsdfs-using-the-distribution-of-visible-normals/  
> **username_1**: And this. https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.html  

---

## 2 answers

### Answer by username_2 on 2020-06-22. Score: 5 | Accepted answer

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.


---

### Answer by username_3 on 2020-06-23. Score: 3

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/>


---

