<p>The Fresnel coefficient should be evaluated using $H$, not $N$.</p>

<p>You wrote,</p>

<blockquote>
  <p>I have trouble seeing why we can still use that formula in a BRDF, which is supposed to approximate the integral over all the hemisphere.</p>
</blockquote>

<p>It's not. The BRDF in itself does not approximate the integral over all the hemisphere. The rendering equation does that: you integrate over all incoming light directions, but each time the BRDF inside the integral is evaluated, it's for <em>one specific choice</em> of incoming and outgoing ray directions.</p>

<p>For microfacet BRDFs, the usual simplifying assumption is that individual microfacets are perfect specular reflectors. Then, given the $L$ and $V$ at which to evaluate, the <em>only</em> microfacets that can contribute are those that are aligned along $H = \text{normalize}(L+V)$, because that's the only way they can reflect light from the incoming to the outgoing ray.</p>

<p>The normal distribution function and the visibility factor in the BRDF together approximate the density of microfacets oriented along $H$ that are visible from both the $L$ and $V$ directions. The Fresnel factor is evaluated <em>for those microfacets</em>, so the correct angle to use is the one between $L$ and $H$, or equivalently $V$ and $H$.</p>

<p>There are a couple cases where this argument gets modified. One is if the microfacet model assumes something other than perfect specularity. For instance, the <a href="https://en.wikipedia.org/wiki/Oren%E2%80%93Nayar_reflectance_model">Oren-Nayar BRDF</a> assumes Lambertian microfacets. In this case the BRDF has to incorporate some kind of integral over all the possible microfacet orientations that can scatter light from $L$ to $V$. Then the BRDF won't have a standard Fresnel factor at all; it'll have some other formula that approximates the result of integrating the Fresnel factor over the normal hemisphere.</p>

<p>The other case that comes up in real-time graphics is the reflection from an environment map. To be really correct, we should integrate the environment map multiplied by the BRDF over all incoming light directions, but in practice we often sample a prefiltered environment map using the dominant reflection vector $R = \text{reflect}(V, N)$ and then multiply it by some approximate Fresnel formula that depends on the angle between $R$ and $N$ (equivalently $V$ and $N$), as well as the surface roughness. This is very much an approximation, but often good enough for real-time use.</p>

CC BY-SA 3.0
2016-05-25T22:43:42.677Z
2016-05-25T22:43:42.677Z
Nathan Reed
<p>In Schlick's 1994 paper, <a href="http://www.cs.virginia.edu/%7Ejdl/bib/appearance/analytic%20models/schlick94b.pdf" rel="noreferrer">&quot;An Inexpensive Model for Physically-Based Rendering&quot;</a>, where they derive the approximation, the formula is:
<span class="math-container">$$F_{\lambda}(u) = f_{\lambda} + (1 - f_{\lambda})(1 - u)^{5}$$</span></p>
<p>Where</p>
<p><img src="https://i.sstatic.net/xxyc2.png" alt="Description of vectors" /></p>
<p>So, to answer your first question, <span class="math-container">$\theta$</span> refers to the angle between the view vector and the half vector. Consider for a minute that the surface is a perfect mirror. So:
<span class="math-container">$$V \equiv reflect(V')$$</span>
In this case:
<span class="math-container">$$N \equiv H$$</span></p>
<p>For microfacet-base BRDFs, the <span class="math-container">$D(h_{r})$</span> term refers to the statistical percentage of microfacet normals that are oriented towards <span class="math-container">$H$</span>. Aka, what percentage of the incoming light will bounce in the outgoing direction.</p>
<p>As for why we use Fresnel in a BRDF, it has to do with the fact that a BRDF by itself is only a portion of the full BSDF. A BRDF attenuates the reflected portion of light and a BTDF attenuates the refracted. We use the Fresnel to calculate the amount of reflected vs. refracted light, so we can properly attenuate it with the BRDF and BTDF.</p>
<p><span class="math-container">$$BSDF = BRDF + BTDF\\
$$</span>
<span class="math-container">$$\begin{align*}
L_{\text{o}}(p, \omega_{\text{o}}) &amp;=  L_{e}(p, \omega_{\text{o}}) \ + \  \int_{\Omega} BSDF * L_{\text{i}}(p, \omega_{\text{i}}) \left | \cos \theta_{\text{i}} \right | d\omega_{\text{i}} \\
 &amp;= L_{e}(p, \omega_{\text{o}}) \ + \  \int_{\Omega} BRDF * L_{\text{i, reflected}}(p, \omega_{\text{i}}) \left | \cos \theta_{\text{i}} \right | d\omega_{\text{i}}  \ + \  \int_{\Omega} BTDF * L_{\text{i, refracted}}(p, \omega_{\text{i}}) * \left | \cos \theta_{\text{i}} \right | d\omega_{\text{i}}
\end{align*}$$</span></p>
<p>So, in summary, we use <span class="math-container">$D$</span> to get the percentage of light that will bounce in the outgoing direction, and <span class="math-container">$F$</span>, to find out what percentage of the remaining light will reflect/refract. Both these use <span class="math-container">$H$</span>, because that is the surface orientation that allows a mirror reflection between <span class="math-container">$V$</span> and <span class="math-container">$V'$</span></p>

CC BY-SA 3.0
2016-05-26T09:00:09.833Z
Oh I had totally missed that this was already a result in the paper. That certainly clears it. :) I'll have to reread it to get a better grasp of how it fits within the BRDF though.
Julien Guertault
CC BY-SA 4.0
2016-05-25T14:42:49.120Z
2019-02-01T22:16:01.837Z
2020-06-18T08:32:12.800Z
RichieSams
<p>The well known <a href="https://en.wikipedia.org/wiki/Schlick&#39;s_approximation">Schlick approximation</a> of the Fresnel coefficient gives the equation:</p>

<p>$F=F_0+(1 - F_0)(1 - cos(\theta))^5$</p>

<p>And $cos(\theta)$ is equal to the dot product of the surface normal vector and the view vector.</p>

<p>It is still unclear to me though if we should use the actual surface normal $N$ or the half vector $H$. Which should be used in a physically based BRDF and why?</p>

<p>Moreover, as far as I understand the Fresnel coefficient gives the probability of a given ray to either get reflected or refracted. So I have trouble seeing why we can still use that formula in a BRDF, which is supposed to approximate the integral over all the hemisphere.</p>

<p>This observation would tend to make me think this is where $H$ would come, but it is not obvious to me that the Fresnel of a representative normal is equivalent to integrating the Fresnel of all the actual normals.</p>

<brdf><pbr><integral><fresnel>
In a physically based BRDF, what vector should be used to compute the Fresnel coefficient?
Julien Guertault
# In a physically based BRDF, what vector should be used to compute the Fresnel coefficient?

(Asked by: username_0 on 2016-05-25)

The well known [Schlick approximation](https://en.wikipedia.org/wiki/Schlick's_approximation) of the Fresnel coefficient gives the equation:

$F=F\_0+(1 - F\_0)(1 - cos(\theta))^5$

And $cos(\theta)$ is equal to the dot product of the surface normal vector and the view vector.

It is still unclear to me though if we should use the actual surface normal $N$ or the half vector $H$. Which should be used in a physically based BRDF and why?

Moreover, as far as I understand the Fresnel coefficient gives the probability of a given ray to either get reflected or refracted. So I have trouble seeing why we can still use that formula in a BRDF, which is supposed to approximate the integral over all the hemisphere.

This observation would tend to make me think this is where $H$ would come, but it is not obvious to me that the Fresnel of a representative normal is equivalent to integrating the Fresnel of all the actual normals.

**Tags:** brdf, pbr, integral, fresnel


---

## 2 answers

### Answer by username_2 on 2016-05-25. Score: 10 | Accepted answer

In Schlick's 1994 paper, ["An Inexpensive Model for Physically-Based Rendering"](http://www.cs.virginia.edu/%7Ejdl/bib/appearance/analytic%20models/schlick94b.pdf), where they derive the approximation, the formula is:
$$F\_{\lambda}(u) = f\_{\lambda} + (1 - f\_{\lambda})(1 - u)^{5}$$

Where

![Description of vectors](https://i.sstatic.net/xxyc2.png)

So, to answer your first question, $\theta$ refers to the angle between the view vector and the half vector. Consider for a minute that the surface is a perfect mirror. So:
$$V \equiv reflect(V')$$
In this case:
$$N \equiv H$$

For microfacet-base BRDFs, the $D(h\_{r})$ term refers to the statistical percentage of microfacet normals that are oriented towards $H$. Aka, what percentage of the incoming light will bounce in the outgoing direction.

As for why we use Fresnel in a BRDF, it has to do with the fact that a BRDF by itself is only a portion of the full BSDF. A BRDF attenuates the reflected portion of light and a BTDF attenuates the refracted. We use the Fresnel to calculate the amount of reflected vs. refracted light, so we can properly attenuate it with the BRDF and BTDF.

$$BSDF = BRDF + BTDF\\
$$
$$\begin{align\*}
L\_{\text{o}}(p, \omega\_{\text{o}}) &= L\_{e}(p, \omega\_{\text{o}}) \ + \ \int\_{\Omega} BSDF \* L\_{\text{i}}(p, \omega\_{\text{i}}) \left | \cos \theta\_{\text{i}} \right | d\omega\_{\text{i}} \\
&= L\_{e}(p, \omega\_{\text{o}}) \ + \ \int\_{\Omega} BRDF \* L\_{\text{i, reflected}}(p, \omega\_{\text{i}}) \left | \cos \theta\_{\text{i}} \right | d\omega\_{\text{i}} \ + \ \int\_{\Omega} BTDF \* L\_{\text{i, refracted}}(p, \omega\_{\text{i}}) \* \left | \cos \theta\_{\text{i}} \right | d\omega\_{\text{i}}
\end{align\*}$$

So, in summary, we use $D$ to get the percentage of light that will bounce in the outgoing direction, and $F$, to find out what percentage of the remaining light will reflect/refract. Both these use $H$, because that is the surface orientation that allows a mirror reflection between $V$ and $V'$

> **Comments:**
> **username_0**: Oh I had totally missed that this was already a result in the paper. That certainly clears it. :) I'll have to reread it to get a better grasp of how it fits within the BRDF though.  

---

### Answer by username_1 on 2016-05-25. Score: 8

The Fresnel coefficient should be evaluated using $H$, not $N$.

You wrote,

> I have trouble seeing why we can still use that formula in a BRDF, which is supposed to approximate the integral over all the hemisphere.

It's not. The BRDF in itself does not approximate the integral over all the hemisphere. The rendering equation does that: you integrate over all incoming light directions, but each time the BRDF inside the integral is evaluated, it's for *one specific choice* of incoming and outgoing ray directions.

For microfacet BRDFs, the usual simplifying assumption is that individual microfacets are perfect specular reflectors. Then, given the $L$ and $V$ at which to evaluate, the *only* microfacets that can contribute are those that are aligned along $H = \text{normalize}(L+V)$, because that's the only way they can reflect light from the incoming to the outgoing ray.

The normal distribution function and the visibility factor in the BRDF together approximate the density of microfacets oriented along $H$ that are visible from both the $L$ and $V$ directions. The Fresnel factor is evaluated *for those microfacets*, so the correct angle to use is the one between $L$ and $H$, or equivalently $V$ and $H$.

There are a couple cases where this argument gets modified. One is if the microfacet model assumes something other than perfect specularity. For instance, the [Oren-Nayar BRDF](https://en.wikipedia.org/wiki/Oren%E2%80%93Nayar_reflectance_model) assumes Lambertian microfacets. In this case the BRDF has to incorporate some kind of integral over all the possible microfacet orientations that can scatter light from $L$ to $V$. Then the BRDF won't have a standard Fresnel factor at all; it'll have some other formula that approximates the result of integrating the Fresnel factor over the normal hemisphere.

The other case that comes up in real-time graphics is the reflection from an environment map. To be really correct, we should integrate the environment map multiplied by the BRDF over all incoming light directions, but in practice we often sample a prefiltered environment map using the dominant reflection vector $R = \text{reflect}(V, N)$ and then multiply it by some approximate Fresnel formula that depends on the angle between $R$ and $N$ (equivalently $V$ and $N$), as well as the surface roughness. This is very much an approximation, but often good enough for real-time use.


---

