<p>Actually, the confusion of yours mainly results from:</p>
<blockquote>
<p>My understanding is that microfacet-based BRDFs assume there is always <strong>a perfect reflection</strong>, but the true microscopic normal changes according to some Normal Distribution Function (NDF), resulting in a non-perfect macroscopic reflection.</p>
</blockquote>
<p>, which is NOT the case. There are two types of microfacet BSDF mainly:</p>
<ul>
<li>Physically-based glossy (specular) material: each microfacet represents a infinitesimal specular mirror and <strong>there is always a perfect reflection</strong>. For example, Cook-Torrance is one of the representative models of this category.</li>
<li>Physically-based diffuse material: instead of modeling every infinitesimal facet as mirrors, this material assumes that they all have Lambertian reflection. It is known that Lambertian BRDF is empirical, so when representing diffuse object, object parts where the normals face away from the viewing direction appears to be dimmer, which is not realistic enough. Models like Oren-Nayar <strong>model each microfacet as perfect Lambertian diffusers</strong> and achieved more photo-realistic renderings.</li>
</ul>
<p>Therefore, I think all of your confusions can be resolved:</p>
<p>(1) when all the normals are aligned, the surface properties depend on whether each microfacet is modeled to be mirror-specular or diffuse.</p>
<p>(2) Yes, mixture BSDFs can be seen in various renderers such as Mitsuba. However, in terms of <em>combining simple BSDFs</em>... it depends on what <em>simple</em> means to you. Some appearance are extremely difficult to model, for example: substrate (coated) materials, which needs more than simple surface reflection/refraction model. You can refer to the mitsuba documentation for more examples.</p>
<p>(3) They can or can not share the same NDF. It is implementation-dependent. You already know that different microfacet models can be modeled entirely different, so we should make NDFs of theirs independent. Or, when you want to conserve memory (in a weird way), you can make them all-coupled. To sample a ray in these BSDF, you can simply sample the BSDF to use as a first step, then sample the sampled BSDF as the second step. So, different sampled BSDF will yield different normal for you to use.</p>

CC BY-SA 4.0
2024-02-18T03:49:37.003Z
I think this raises two more question then:  If I had a BRDF which used Oren-Nayar for the diffuse component, and Cook-Torrance for the specular component, with the GGX NDF, how do I sample a bounce ray?  Do I pick either a diffuse or specular ray to sample?  Could I sample 2 rays, 1 for each?  And does importance sampling (such as directly sampling a light) change?
Chris Gnam
CC BY-SA 4.0
2024-02-18T04:04:48.750Z
Well, since you are mixing two BSDF then we assume that you have mixing weights for these two BSDFs. In this case, the weights can just be constants, say $\alpha$. Then you first sample from a Bernoulli distribution defined by $\alpha$ to determine what underlying BSDF to be used. You can of course, sample two rays, one for each. For other more complicated cases, for example, Fresnel effect is involved in this BSDF sampling process, you can refer to [this post](https://computergraphics.stackexchange.com/questions/13862/how-to-approach-implementing-cook-torrence-microfacet-brdf/13863#13863).
Enigmatisms
CC BY-SA 4.0
2024-02-18T04:11:47.497Z
"does importance sampling (such as directly sampling a light) change?" Somewhat. At first, you will still sample an emitter then a point is sampled from that emitter. This step is material-independent and is only related to the emitter in the scene. However, emitter importance sampling does involves **evaluating the material reflectance**. So since your BSDF is a mixture, your evaluation code should be modified to evaluate all the mixed BSDFs and you should mix the result by the exact same weights. Other parts are almost the same.
Enigmatisms
CC BY-SA 4.0
2024-02-18T04:16:22.237Z
About "why is a separate diffuse component needed": if you only have a specular representation, you will not be able to represent something that is smoother than Lambertian BRDF. I think the 'smoothness gradient' ranges from *pure specular* (roughness = 0, specular microfacet) to glossy (roughness in (0, 1), specular microfacet), to Lambertian (roughness = 1, specular microfacet, or roughness = 0, Lambertian microfacet), then to something looking even rougher (roughness in (0, 1], Lambertian microfacet).
Enigmatisms
CC BY-SA 4.0
2024-02-18T05:28:25.513Z
I guess I'm struggling to understand what the physical significance is of having separate diffuse and specular microfacet models.  Particularly if the diffuse behavior can be captured by only one of them.  I can understand what you're saying that rough Lambertian microfacets will look "rougher" than rough specular microfacets.  But I'm struggling to understand how to interpret that physically interpret that, especially when having both present at the same time
Chris Gnam
CC BY-SA 4.0
2024-02-18T09:02:17.640Z
@ChrisGnam Materials in the real world are not actually Cook-Torrance or whatever, that is just a model that looks accurate for some specific material types. So to get a desired result people mix things. Unrelated specifically to your question I suggest reading: https://digibug.ugr.es/bitstream/10481/19751/1/rmontes_LSI-2012
lightxbulb
CC BY-SA 4.0
2024-02-18T16:55:39.483Z
@lightxbulb I know they're not all C-T, etc.  In my work I typically use Hapke or McEwen (useful for planetary surfaces).  My confusion here was why a PBR model was modeling diffuse and specular components separately, despite having a microfacet model.  From talking to a colleague and reading the post linked in my second edit, that seems to be because all reflections off microfacets *are* specular.  Fresnel tells us much light is reflected vs transmitted, and so the reflected portion reflects off the microfacets, while the transmitted portion is immediately scattered back, appearing diffuse.
Chris Gnam
CC BY-SA 4.0
2024-02-19T02:12:13.867Z
I can't say I agree with your understanding. You can read the wikipedia page of [Oren-Nayar](https://en.wikipedia.org/wiki/Oren%E2%80%93Nayar_reflectance_model) model about how each microfacet has diffuse reflection. About "why a PBR model was modeling diffuse and specular components separately", I think it is intuitive: C-T (or Torrance-Sparrow) model is initially based on mirror specular microfacets, while some other people tried to applied it to Lambertian microfacets, since fully diffuse (Lambertian) and mirror specular are just two extreme cases of surface light transport.
Enigmatisms
CC BY-SA 4.0
2024-02-19T02:15:40.833Z
Also, Fresnel effect to me is in the link you posted (which is actually my answer) is a more advanced way of mixing different BRDF. Fresnel term in that answer is just a view-dependent weight for different components. Its meaning is different from the Fresnel term in the microfacet theory, and is more suitable to model coated material.
Enigmatisms
CC BY-SA 4.0
2024-02-18T03:36:28.343Z
2024-02-18T03:36:28.343Z
Enigmatisms
<p>Through reading various sources online, I've become a bit confused.  I'll briefly outline what I think I <em>do</em> understand:</p>
<p>My understanding is that microfacet-based BRDFs assume there is always a perfect reflection, but the true microscopic normal changes according to some Normal Distribution Function (NDF), resulting in a non-perfect macroscopic reflection.  When ray tracing, you sample this NDF to generate a &quot;true&quot; normal, and then you can compute a bounce ray using your incident ray, and a specular reflection with your &quot;true&quot; normal.</p>
<p>My confusion comes from a few things:</p>
<ol>
<li><p>What is the reason that some microfacet-based BRDFs are diffuse only (such as Oren-Nayar) or specular only (such as Cook-Torrance)?  My assumption would be that if a roughness value of 0 were used, all of the normals should align and thus you would get a purely specular reflection.  Similarly, if a roughness value of 1 was used, the normals would be all scattered, and you'd obtain a more diffuse reflection.  Yet, Wikipedia states for the <a href="https://en.wikipedia.org/wiki/Oren%E2%80%93Nayar_reflectance_model#:%7E:text=thus%20the%20Oren%2DNayar%20model%20simplifies%20to%20the%20Lambertian%20model%3A" rel="nofollow noreferrer">Oren-Nayar model</a>: <strong>&quot;In the case of <span class="math-container">$\sigma = 0$</span> (i.e., all facets in the same plane), and thus the Oren-Nayar model simplifies to the Lambertian model&quot;</strong>  If all of the microfacets align to the same plane, how could the computed reflection still be diffuse?  What happens when I sample a bounce ray, as surely if the normals are all aligned, the sampled ray should be specular?</p>
</li>
<li><p>If Oren-Nayar is a BRDF, and Cook-Torrance is a BRDF, but you need both to fully represent a single material's diffuse and specular components, is the combination of them also a BRDF?  Is combining simple BRDFs that capture only a single aspect of reflection how you create a full PBR BRDF?  (Looking at the <a href="https://academysoftwarefoundation.github.io/OpenPBR/#model" rel="nofollow noreferrer">OpenPBR</a> white-paper, it seems that a single material is defined as a mixing of multiple simpler BRDFs)</p>
</li>
<li><p>If you require multiple BRDFs to describe a single material, do they share the same NDF?  When path tracing, how do you sample a bounce ray?  If you are always simply performing a specular reflection on some sampled normal, how would you importance sample a BRDF or a light source?</p>
</li>
</ol>
<p>I think I am getting confused by the fundamental difference between a BRDF and an NDF, and the roles they play.</p>
<h1>Edit:</h1>
<p>Someone has pointed out that microfacet-models don't <em>all</em> assume that reflections are specular, some (like Oren-Nayar) assume they are lambertian.  But it still seems like a collection of misaligned specularly reflecting microfacets would produce a diffuse effect (where, as roughness increases, you'd slowly transition from a perfect mirror, through glossy &quot;soft&quot; reflections, to diffuse).  So why is a separate diffuse component needed?  What is the conceptual reason for the distinction?</p>
<p>I have seen it said many times, that in reality <em>all</em> reflections, at the smallest scale, are only specular.  Is it that Cook-Torrance is modeling each microfacet as a perfectly smooth mirror, but Oren-Nayar is modeling each microfacet as <em>itself</em> being composed of much smaller microfacets exhibiting diffuse behavior?</p>
<p>I'm still struggling to understand why both components are needed separately, and how a bounce ray is actually to be sampled.  What does a roughness value even mean then, if a perfectly smooth surface still has a diffuse component from the Oren-Nayar model?</p>
<h1>Edit 2:</h1>
<p>After reading some more on the fresnel effect, as well as <a href="https://computergraphics.stackexchange.com/questions/13862/how-to-approach-implementing-cook-torrence-microfacet-brdf/13863?fbclid=IwAR0vOe7dNcBrcgxif-hZP7aWSP0AAp-Y8uIp5_LgN39mS13D-hQfirItqnU#13863">this answer on another question</a>, I believe I understand what is happening now.</p>
<p>The Fresnel equations describe the reflection and transmission of light when it is incident on an interface between two different mediums.  It tells us how much of the light is transmitted into the new medium, and how much is reflected away.  The reflection is <em>always</em> specular, but can appear more or less diffuse based on how well-aligned the microfacets are (e.g. how rough the surface is).  The refracted ray that is transmitted into the material, if the material is opaque, quickly interacts with the internal structure and is reflected back out in a different direction, hence appearing diffuse.  But <em>this is separate from the diffuse nature caused by the microfacets on the surface</em>.  A colleague of mine included this diagram in his dissertation:</p>
<p><a href="https://i.sstatic.net/v3ryk.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/v3ryk.png" alt="reflection" /></a></p>
<p>(It isn't 100% clear to me how it differs from subsurface scattering.  Perhaps, the only difference is the depth the rays are able to penetrate?)</p>
<p>So when we write the BRDF like this:</p>
<p><span class="math-container">$$
f(\omega) = \biggl((1 - F)f_{\text{Lambert}}(\omega) + Ff_{\text{C-T}}(\omega) \biggr)\cos\theta
$$</span></p>
<p>we're using the Fresnel equations to tell us how much light is going to be reflected off the surface (specularly, off the microfacet structure).  The remainder of the light (<span class="math-container">$1-F$</span>) is transmitted into the structure but then quickly reflected back out diffusely.</p>

<brdf><pbr><specular><diffuse><ndf>
Confusion over Microfacet-based BRDFs and Normal Distribution Functions
Chris Gnam
# Confusion over Microfacet-based BRDFs and Normal Distribution Functions

(Asked by: username_0 on 2024-02-18)

Through reading various sources online, I've become a bit confused. I'll briefly outline what I think I *do* understand:

My understanding is that microfacet-based BRDFs assume there is always a perfect reflection, but the true microscopic normal changes according to some Normal Distribution Function (NDF), resulting in a non-perfect macroscopic reflection. When ray tracing, you sample this NDF to generate a "true" normal, and then you can compute a bounce ray using your incident ray, and a specular reflection with your "true" normal.

My confusion comes from a few things:

1. What is the reason that some microfacet-based BRDFs are diffuse only (such as Oren-Nayar) or specular only (such as Cook-Torrance)? My assumption would be that if a roughness value of 0 were used, all of the normals should align and thus you would get a purely specular reflection. Similarly, if a roughness value of 1 was used, the normals would be all scattered, and you'd obtain a more diffuse reflection. Yet, Wikipedia states for the [Oren-Nayar model](https://en.wikipedia.org/wiki/Oren%E2%80%93Nayar_reflectance_model#:%7E:text=thus%20the%20Oren%2DNayar%20model%20simplifies%20to%20the%20Lambertian%20model%3A): **"In the case of $\sigma = 0$ (i.e., all facets in the same plane), and thus the Oren-Nayar model simplifies to the Lambertian model"** If all of the microfacets align to the same plane, how could the computed reflection still be diffuse? What happens when I sample a bounce ray, as surely if the normals are all aligned, the sampled ray should be specular?
2. If Oren-Nayar is a BRDF, and Cook-Torrance is a BRDF, but you need both to fully represent a single material's diffuse and specular components, is the combination of them also a BRDF? Is combining simple BRDFs that capture only a single aspect of reflection how you create a full PBR BRDF? (Looking at the [OpenPBR](https://academysoftwarefoundation.github.io/OpenPBR/#model) white-paper, it seems that a single material is defined as a mixing of multiple simpler BRDFs)
3. If you require multiple BRDFs to describe a single material, do they share the same NDF? When path tracing, how do you sample a bounce ray? If you are always simply performing a specular reflection on some sampled normal, how would you importance sample a BRDF or a light source?

I think I am getting confused by the fundamental difference between a BRDF and an NDF, and the roles they play.

# Edit:

Someone has pointed out that microfacet-models don't *all* assume that reflections are specular, some (like Oren-Nayar) assume they are lambertian. But it still seems like a collection of misaligned specularly reflecting microfacets would produce a diffuse effect (where, as roughness increases, you'd slowly transition from a perfect mirror, through glossy "soft" reflections, to diffuse). So why is a separate diffuse component needed? What is the conceptual reason for the distinction?

I have seen it said many times, that in reality *all* reflections, at the smallest scale, are only specular. Is it that Cook-Torrance is modeling each microfacet as a perfectly smooth mirror, but Oren-Nayar is modeling each microfacet as *itself* being composed of much smaller microfacets exhibiting diffuse behavior?

I'm still struggling to understand why both components are needed separately, and how a bounce ray is actually to be sampled. What does a roughness value even mean then, if a perfectly smooth surface still has a diffuse component from the Oren-Nayar model?

# Edit 2:

After reading some more on the fresnel effect, as well as [this answer on another question](https://computergraphics.stackexchange.com/questions/13862/how-to-approach-implementing-cook-torrence-microfacet-brdf/13863?fbclid=IwAR0vOe7dNcBrcgxif-hZP7aWSP0AAp-Y8uIp5_LgN39mS13D-hQfirItqnU#13863), I believe I understand what is happening now.

The Fresnel equations describe the reflection and transmission of light when it is incident on an interface between two different mediums. It tells us how much of the light is transmitted into the new medium, and how much is reflected away. The reflection is *always* specular, but can appear more or less diffuse based on how well-aligned the microfacets are (e.g. how rough the surface is). The refracted ray that is transmitted into the material, if the material is opaque, quickly interacts with the internal structure and is reflected back out in a different direction, hence appearing diffuse. But *this is separate from the diffuse nature caused by the microfacets on the surface*. A colleague of mine included this diagram in his dissertation:

[![reflection](https://i.sstatic.net/v3ryk.png)](https://i.sstatic.net/v3ryk.png)

(It isn't 100% clear to me how it differs from subsurface scattering. Perhaps, the only difference is the depth the rays are able to penetrate?)

So when we write the BRDF like this:

$$
f(\omega) = \biggl((1 - F)f\_{\text{Lambert}}(\omega) + Ff\_{\text{C-T}}(\omega) \biggr)\cos\theta
$$

we're using the Fresnel equations to tell us how much light is going to be reflected off the surface (specularly, off the microfacet structure). The remainder of the light ($1-F$) is transmitted into the structure but then quickly reflected back out diffusely.

**Tags:** brdf, pbr, specular, diffuse, ndf


---

## 1 answers

### Answer by username_1 on 2024-02-18. Score: 3

Actually, the confusion of yours mainly results from:

> My understanding is that microfacet-based BRDFs assume there is always **a perfect reflection**, but the true microscopic normal changes according to some Normal Distribution Function (NDF), resulting in a non-perfect macroscopic reflection.

, which is NOT the case. There are two types of microfacet BSDF mainly:

* Physically-based glossy (specular) material: each microfacet represents a infinitesimal specular mirror and **there is always a perfect reflection**. For example, Cook-Torrance is one of the representative models of this category.
* Physically-based diffuse material: instead of modeling every infinitesimal facet as mirrors, this material assumes that they all have Lambertian reflection. It is known that Lambertian BRDF is empirical, so when representing diffuse object, object parts where the normals face away from the viewing direction appears to be dimmer, which is not realistic enough. Models like Oren-Nayar **model each microfacet as perfect Lambertian diffusers** and achieved more photo-realistic renderings.

Therefore, I think all of your confusions can be resolved:

(1) when all the normals are aligned, the surface properties depend on whether each microfacet is modeled to be mirror-specular or diffuse.

(2) Yes, mixture BSDFs can be seen in various renderers such as Mitsuba. However, in terms of *combining simple BSDFs*... it depends on what *simple* means to you. Some appearance are extremely difficult to model, for example: substrate (coated) materials, which needs more than simple surface reflection/refraction model. You can refer to the mitsuba documentation for more examples.

(3) They can or can not share the same NDF. It is implementation-dependent. You already know that different microfacet models can be modeled entirely different, so we should make NDFs of theirs independent. Or, when you want to conserve memory (in a weird way), you can make them all-coupled. To sample a ray in these BSDF, you can simply sample the BSDF to use as a first step, then sample the sampled BSDF as the second step. So, different sampled BSDF will yield different normal for you to use.

> **Comments:**
> **username_0**: I think this raises two more question then:  If I had a BRDF which used Oren-Nayar for the diffuse component, and Cook-Torrance for the specular component, with the GGX NDF, how do I sample a bounce ray?  Do I pick either a diffuse or specular ray to sample?  Could I sample 2 rays, 1 for each?  And does importance sampling (such as directly sampling a light) change?  
> **username_1**: Well, since you are mixing two BSDF then we assume that you have mixing weights for these two BSDFs. In this case, the weights can just be constants, say $\alpha$. Then you first sample from a Bernoulli distribution defined by $\alpha$ to determine what underlying BSDF to be used. You can of course, sample two rays, one for each. For other more complicated cases, for example, Fresnel effect is involved in this BSDF sampling process, you can refer to [this post](https://computergraphics.stackexchange.com/questions/13862/how-to-approach-implementing-cook-torrence-microfacet-brdf/13863#13863).  
> **username_1**: "does importance sampling (such as directly sampling a light) change?" Somewhat. At first, you will still sample an emitter then a point is sampled from that emitter. This step is material-independent and is only related to the emitter in the scene. However, emitter importance sampling does involves **evaluating the material reflectance**. So since your BSDF is a mixture, your evaluation code should be modified to evaluate all the mixed BSDFs and you should mix the result by the exact same weights. Other parts are almost the same.  
> **username_1**: About "why is a separate diffuse component needed": if you only have a specular representation, you will not be able to represent something that is smoother than Lambertian BRDF. I think the 'smoothness gradient' ranges from *pure specular* (roughness = 0, specular microfacet) to glossy (roughness in (0, 1), specular microfacet), to Lambertian (roughness = 1, specular microfacet, or roughness = 0, Lambertian microfacet), then to something looking even rougher (roughness in (0, 1], Lambertian microfacet).  
> **username_0**: I guess I'm struggling to understand what the physical significance is of having separate diffuse and specular microfacet models.  Particularly if the diffuse behavior can be captured by only one of them.  I can understand what you're saying that rough Lambertian microfacets will look "rougher" than rough specular microfacets.  But I'm struggling to understand how to interpret that physically interpret that, especially when having both present at the same time  
> **username_2**: @username_0 Materials in the real world are not actually Cook-Torrance or whatever, that is just a model that looks accurate for some specific material types. So to get a desired result people mix things. Unrelated specifically to your question I suggest reading: https://digibug.ugr.es/bitstream/10481/19751/1/rmontes_LSI-2012  
> **username_0**: @username_2 I know they're not all C-T, etc.  In my work I typically use Hapke or McEwen (useful for planetary surfaces).  My confusion here was why a PBR model was modeling diffuse and specular components separately, despite having a microfacet model.  From talking to a colleague and reading the post linked in my second edit, that seems to be because all reflections off microfacets *are* specular.  Fresnel tells us much light is reflected vs transmitted, and so the reflected portion reflects off the microfacets, while the transmitted portion is immediately scattered back, appearing diffuse.  
> **username_1**: I can't say I agree with your understanding. You can read the wikipedia page of [Oren-Nayar](https://en.wikipedia.org/wiki/Oren%E2%80%93Nayar_reflectance_model) model about how each microfacet has diffuse reflection. About "why a PBR model was modeling diffuse and specular components separately", I think it is intuitive: C-T (or Torrance-Sparrow) model is initially based on mirror specular microfacets, while some other people tried to applied it to Lambertian microfacets, since fully diffuse (Lambertian) and mirror specular are just two extreme cases of surface light transport.  
> **username_1**: Also, Fresnel effect to me is in the link you posted (which is actually my answer) is a more advanced way of mixing different BRDF. Fresnel term in that answer is just a view-dependent weight for different components. Its meaning is different from the Fresnel term in the microfacet theory, and is more suitable to model coated material.  

---

