<p>I think a single direction can be greater than 1.</p>
<p>For a BRDF the integral over the hemisphere must be less than 1 for energy conservation.</p>
<p>If you consider a specular brdf there is only one direction, where brdf &gt; 0 and all other directions return 0. Therefore when integrating over the hemisphere that direction must be much greater than 1.</p>

CC BY-SA 4.0
2020-07-21T19:59:51.467Z
2020-07-21T19:59:51.467Z
Peter
<p>This is standard Cook-Torrance BRDF in formulation for a single point light. No intergrals over a hemisphere, just a single direction to a source of incoming energy.</p>
<p><span class="math-container">$$
L_o = { \bigg (  (1-F) \frac{albedo  \cdot  (1-metallness)}{\pi} + \frac{F \cdot D \cdot G_2}{4 (n \cdot v)(n \cdot l_i) } \bigg )  \cdot L_i  \cdot  (n \cdot l_i ) }
$$</span></p>
<ul>
<li><span class="math-container">$L_o$</span> - outgoing pixel energy</li>
<li><span class="math-container">$L_i$</span> - incoming energy</li>
<li><span class="math-container">$l_i$</span> - direction to a light source</li>
<li><span class="math-container">$n$</span> - pixel normal</li>
<li><span class="math-container">$v$</span> - direction to the camera</li>
<li><span class="math-container">$F$</span> - calculated Fresnel, ratio of specularly reflected energy, in range [0; 1]</li>
<li><span class="math-container">$D$</span> - calculated integral of GGX NDF over some set of possible micronormal directions (depends on light source size and direction), in range [0; 1]</li>
<li><span class="math-container">$G_2$</span> - calculated Smith geometry masking factor, in range [0; 1]</li>
</ul>
<p>Usually <span class="math-container">$D$</span> in papers is just NDF sampled at one point, which is, of couse, won't give correct value, since it's a probablity density function and its values may exceed [0; 1] range.</p>
<p><span class="math-container">$G_2 = G_1(v) * G_1(l)$</span> doesn't go higher than 1 if we use this Smith <span class="math-container">$G_1$</span> formulation:</p>
<p><span class="math-container">$G_1(dir) = \frac{2 (n \cdot dir)}{(n \cdot dir)+ \sqrt{a^2 + (1 - a^2) (n \cdot dir)^2}}$</span> , so it's good as well as <span class="math-container">$F$</span>.</p>
<p><span class="math-container">$(n \cdot l_i )$</span> in the denominator is cancelled out for the specular part.</p>
<p><strong>Question 1:</strong> what's wrong with the <span class="math-container">$(n \cdot v )$</span> in the specular denominator? At grazing angles why do we need to divide the specular part by some small value getting big values as result? Or should it be cancelled out due to the fact that we render on per-pixel basis and a pixel covers bigger area of surface at grazing angles and already takes whis divider into accout?</p>
<p><strong>Question 2:</strong> there are some &quot;approximation&quot; of Smith <span class="math-container">$G_2$</span> like this (Earl Hammon, PBR Diffuse Lighting for GGX + Smith Microsurfaces, GDC 2017):</p>
<p><span class="math-container">$$
\frac{G_2}{4 (n \cdot v) (n \cdot l)} = \frac{0.5}{lerp((n \cdot v) \cdot (n \cdot l), (n \cdot v) + (n \cdot l), \alpha) }
$$</span></p>
<p>Again, why this one gives large values when dot products are close to zero?</p>

CC BY-SA 4.0
2020-07-21T14:08:39.680Z
As the dot product approaches zero,  1/dotproduct approaches infinity.
pmw1234
CC BY-SA 4.0
2020-07-21T14:13:13.937Z
Yes, I see that, but BRDF should not return values higher than 1 after all, that's what I ask about, why do we need this denominator
Emil Kabirov
CC BY-SA 4.0
2020-07-21T18:44:53.243Z
The BRDF can absolutely return values higher than 1 - it's a reflectance density, not a reflectance value. See also: [GGX BRDF is greater than 1?](https://gamedev.stackexchange.com/questions/62438/ggx-specular-brdf-is-way-over-1). To put it another way: a point light has an infinitely bright radiance at its single point, even if it has finite energy output overall; so the specular response (which is basically a blurred image of the light source) can be arbitrarily bright as well.
Nathan Reed
CC BY-SA 4.0
2020-07-22T22:21:56.860Z
[link](https://twvideo01.ubm-us.net/o1/vault/gdc2017/Presentations/Hammon_Earl_PBR_Diffuse_Lighting.pdf) Here is a good presentation that derives the equation. And this paper is lengthy but filled with good info [link](http://jcgt.org/published/0003/02/03/paper.pdf)
pmw1234
<brdf><pbr>
BRDF for point lights should not return values over 1
Emil Kabirov
# BRDF for point lights should not return values over 1

(Asked by: username_0 on 2020-07-20)

This is standard Cook-Torrance BRDF in formulation for a single point light. No intergrals over a hemisphere, just a single direction to a source of incoming energy.

$$
L\_o = { \bigg ( (1-F) \frac{albedo \cdot (1-metallness)}{\pi} + \frac{F \cdot D \cdot G\_2}{4 (n \cdot v)(n \cdot l\_i) } \bigg ) \cdot L\_i \cdot (n \cdot l\_i ) }
$$

* $L\_o$ - outgoing pixel energy
* $L\_i$ - incoming energy
* $l\_i$ - direction to a light source
* $n$ - pixel normal
* $v$ - direction to the camera
* $F$ - calculated Fresnel, ratio of specularly reflected energy, in range [0; 1]
* $D$ - calculated integral of GGX NDF over some set of possible micronormal directions (depends on light source size and direction), in range [0; 1]
* $G\_2$ - calculated Smith geometry masking factor, in range [0; 1]

Usually $D$ in papers is just NDF sampled at one point, which is, of couse, won't give correct value, since it's a probablity density function and its values may exceed [0; 1] range.

$G\_2 = G\_1(v) \* G\_1(l)$ doesn't go higher than 1 if we use this Smith $G\_1$ formulation:

$G\_1(dir) = \frac{2 (n \cdot dir)}{(n \cdot dir)+ \sqrt{a^2 + (1 - a^2) (n \cdot dir)^2}}$ , so it's good as well as $F$.

$(n \cdot l\_i )$ in the denominator is cancelled out for the specular part.

**Question 1:** what's wrong with the $(n \cdot v )$ in the specular denominator? At grazing angles why do we need to divide the specular part by some small value getting big values as result? Or should it be cancelled out due to the fact that we render on per-pixel basis and a pixel covers bigger area of surface at grazing angles and already takes whis divider into accout?

**Question 2:** there are some "approximation" of Smith $G\_2$ like this (Earl Hammon, PBR Diffuse Lighting for GGX + Smith Microsurfaces, GDC 2017):

$$
\frac{G\_2}{4 (n \cdot v) (n \cdot l)} = \frac{0.5}{lerp((n \cdot v) \cdot (n \cdot l), (n \cdot v) + (n \cdot l), \alpha) }
$$

Again, why this one gives large values when dot products are close to zero?

**Tags:** brdf, pbr

> **Comments:**
> **username_1**: As the dot product approaches zero,  1/dotproduct approaches infinity.  
> **username_0**: Yes, I see that, but BRDF should not return values higher than 1 after all, that's what I ask about, why do we need this denominator  
> **username_2**: The BRDF can absolutely return values higher than 1 - it's a reflectance density, not a reflectance value. See also: [GGX BRDF is greater than 1?](https://gamedev.stackexchange.com/questions/62438/ggx-specular-brdf-is-way-over-1). To put it another way: a point light has an infinitely bright radiance at its single point, even if it has finite energy output overall; so the specular response (which is basically a blurred image of the light source) can be arbitrarily bright as well.  
> **username_1**: [link](https://twvideo01.ubm-us.net/o1/vault/gdc2017/Presentations/Hammon_Earl_PBR_Diffuse_Lighting.pdf) Here is a good presentation that derives the equation. And this paper is lengthy but filled with good info [link](http://jcgt.org/published/0003/02/03/paper.pdf)  

---

## 1 answers

### Answer by username_3 on 2020-07-21. Score: 1

I think a single direction can be greater than 1.

For a BRDF the integral over the hemisphere must be less than 1 for energy conservation.

If you consider a specular brdf there is only one direction, where brdf > 0 and all other directions return 0. Therefore when integrating over the hemisphere that direction must be much greater than 1.


---

