<p>I would trust Pharr and Humphreys on this. Equation 2 also agrees with the <a href="http://blog.selfshadow.com/publications/s2015-shading-course/hoffman/s2015_pbs_physics_math_slides.pdf#57" rel="noreferrer">SIGGRAPH Physically Based Rendering course notes</a>, as well as with equation 20 in the <a href="https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf" rel="noreferrer">Walter et al paper</a> that introduced the GGX distribution.</p>

<p>I've read somewhere that there is an error in the original Cook-Torrance paper that led them to miss the factor of 4 in the denominator, which was corrected in subsequent papers. I couldn't find a reference to this with a quick search though (if anyone knows one, please feel free to note it in the comments).</p>

<p>As for the factor of π, it might appear or not, depending on conventions. Sometimes it's factored into the normal distribution function D. For instance, if you look in the Walter et all GGX paper section 5.2 where they give the equations for several D functions, you can see they all have a π in the denominator. Note that this implies that the Lambertian BRDF should have a π in the denominator as well.</p>

<p>In real-time graphics, the π is often left out, in which case we can interpret it as <a href="https://seblagarde.wordpress.com/2012/01/08/pi-or-not-to-pi-in-game-lighting-equation/" rel="noreferrer">having been factored into the light colors</a>. Either way is fine, as long as you're consistent about either putting the π in or leaving it out of <em>all</em> the BRDFs you use.</p>

CC BY-SA 3.0
2016-09-05T21:50:21.310Z
2016-09-05T21:50:21.310Z
Nathan Reed
<p>A more recent paper (2005 at least ;) ), has a more concise notation while comparing multiple BRDFs including the <strong>Cook-Torrance BRDF</strong>. Their formula does not include the division by 4.</p>

<p><a href="http://people.csail.mit.edu/addy/research/ngan05_brdf_eval.pdf" rel="nofollow noreferrer"><em>Addy Ngan, Frédo Durand, Wojciech Matusik: Experimental Analysis of BRDF Models, 
Proceedings of the Eurographics Symposium on Rendering 2005.</em></a></p>

<p><a href="http://people.csail.mit.edu/addy/research/brdf/" rel="nofollow noreferrer">Project Page</a>, <a href="http://people.csail.mit.edu/addy/research/ngan05_brdf_supplemental_doc.pdf" rel="nofollow noreferrer">Supplemental</a> (Take a look at the supplemental!)</p>

<p>Note, however that the <strong>Cook-Torrance BRDF</strong> is not equal and thus not a synonym for the <strong>Torrance-Sparrow BRDF</strong>. The latter includes your division by 4. An interesting reference overview can be found in:</p>

<p><a href="http://digibug.ugr.es/bitstream/10481/19751/1/rmontes_LSI-2012-001TR.pdf" rel="nofollow noreferrer"><em>Rosana Montes, Carlos Ureña: An Overview of BRDF Models, Technical Report, 2012.</em></a></p>

<p>The same <strong>Cook-Torrance BRDF</strong> formula is also present in:</p>

<p><em>Philip Dutré, Kavita Bala, Philippe Bekaert: Advanced Global Illumination, 2nd Edition, 2006.</em></p>

<p><strong>Edit</strong>: I looked at some (isotropic) implementations of the <strong>F</strong>, <strong>G</strong> (or <strong>V</strong> depending if you factor the foreshortening in the denominator into <strong>G</strong>) and <strong>D</strong>:</p>

<ul>
<li><strong>D</strong>: Beckmann, Ward-Duer, Blinn-Phong, Trowbridge-Reitz a.k.a. GGX a.k.a. GTR2, Berry a.k.a. GTR1;</li>
<li><strong>G</strong>|<strong>V</strong>: Implicit, Ward, Neumann, Ashikhmin-Premoze, Kelemann, Cook-Torrance, Smith GGX, Smith Schlick-GGX, Smith Beckmann, Smith Schlick-Beckmann;</li>
<li><strong>F</strong>: Schlick, Cook-Torrance.</li>
</ul>

<p>They all seem to be used (in the literature, in the animation industry and in the gaming industry) in the format corresponding to your <strong>second</strong> option. All the <strong>D</strong> factors in my enumeration contain an explicit $\frac{1}{\pi \alpha^2} $ with $\alpha \equiv \text{roughness}^2$ (See <a href="http://graphicrants.blogspot.be/2013/08/specular-brdf-reference.html" rel="nofollow noreferrer">Equations</a>).</p>

<p><strong>Edit 2:</strong> A recent presentation deriving and explaining the division by $4$ instead of $\pi$:</p>

<p><a href="https://twvideo01.ubm-us.net/o1/vault/gdc2017/Presentations/Hammon_Earl_PBR_Diffuse_Lighting.pdf" rel="nofollow noreferrer"><em>Earl Hammon: PBR Diffuse Lighting for GGX+Smith Microsurfaces</em>, GDC 2017.</a></p>

<p>To make a long story shorter, <strong>option 2 is the only correct specular term</strong> (of the three options provided).</p>

CC BY-SA 3.0
2017-10-13T12:46:27.970Z
Blinn-Phong does not use $\alpha \equiv roughness^2$. it has an arbitrary "roughness" parameter. Also, the $\alpha$ in Beckmann is not the same as the $\alpha$ in GGX. In Beckmann, $\alpha \in [0, \infty)$ and in GGX $\alpha \in [0, 1]$ (although both describe the RMS Slope).
Tare
CC BY-SA 3.0
2017-10-13T13:21:11.003Z
@Tare For Blinn-Phong you need to use a derived version which derives alpha from the specular exponent. See http://graphicrants.blogspot.be/2013/08/specular-brdf-reference.html
Matthias
CC BY-SA 3.0
2017-10-13T14:16:40.890Z
Okay, you didn't mention that in your post, so I assumed you were using the original form.
Tare
CC BY-SA 3.0
2017-09-29T10:47:41.160Z
2017-10-25T11:47:19.843Z
2017-10-25T11:47:19.843Z
Matthias
<p>Personally I have used equation 2. Equation 3 seems incorrect to me, the Pi factor is to normalise the light response and for energy conservation. Essentially you do not want more light to be reflected from the surface than what it receives. </p>

<p>Equation 2 is an improvement of equation 1 and is more correct as far as I'm aware. For more information about equation 2, see <strong>Microfacet Models for Refraction through Rough Surfaces</strong> by Walter et al</p>

CC BY-SA 3.0
2016-09-05T08:49:28.463Z
2016-09-05T08:49:28.463Z
Fred Garnier
<p>For a while I have been doing some research on the topic of Physically Based Rendering. One reflection model that is mentioned over and over is the <a href="https://en.wikipedia.org/wiki/Specular_highlight#Cook.E2.80.93Torrance_model" rel="noreferrer">Cook-Torrance</a> / Torrance-Sparrow model. It seems like in each mention or explanation of this model a different form of the specular term is used. The versions I have found are:</p>

<ol>
<li>$${\frac {FDG}{\pi ({\vec N}\cdot {\vec V})({\vec N}\cdot {\vec L})}}$$</li>
<li>$${\frac {FDG}{4 ({\vec N}\cdot {\vec V})({\vec N}\cdot {\vec L})}}$$</li>
<li>$${\frac {FDG}{({\vec N}\cdot {\vec V})({\vec N}\cdot {\vec L})}}$$</li>
</ol>

<p>Which one is correct, and when? In <em><a href="http://www.pbrt.org/" rel="noreferrer">Physically Based Rendering: From Theory to Implementation</a></em> by Matt Pharr and Greg Humphreys, the second one is conclusively derived, but in their original paper Cook and Torrance use the first one without any detailed explanation.</p>

<rendering><mathematics><physically-based>
Correct Specular Term of the Cook-Torrance / Torrance-Sparrow Model
Thordal
# Correct Specular Term of the Cook-Torrance / Torrance-Sparrow Model

(Asked by: username_0 on 2016-09-04)

For a while I have been doing some research on the topic of Physically Based Rendering. One reflection model that is mentioned over and over is the [Cook-Torrance](https://en.wikipedia.org/wiki/Specular_highlight#Cook.E2.80.93Torrance_model) / Torrance-Sparrow model. It seems like in each mention or explanation of this model a different form of the specular term is used. The versions I have found are:

1. $${\frac {FDG}{\pi ({\vec N}\cdot {\vec V})({\vec N}\cdot {\vec L})}}$$
2. $${\frac {FDG}{4 ({\vec N}\cdot {\vec V})({\vec N}\cdot {\vec L})}}$$
3. $${\frac {FDG}{({\vec N}\cdot {\vec V})({\vec N}\cdot {\vec L})}}$$

Which one is correct, and when? In *[Physically Based Rendering: From Theory to Implementation](http://www.pbrt.org/)* by Matt Pharr and Greg Humphreys, the second one is conclusively derived, but in their original paper Cook and Torrance use the first one without any detailed explanation.

**Tags:** rendering, mathematics, physically-based


---

## 3 answers

### Answer by username_1 on 2016-09-05. Score: 13

I would trust Pharr and Humphreys on this. Equation 2 also agrees with the [SIGGRAPH Physically Based Rendering course notes](http://blog.selfshadow.com/publications/s2015-shading-course/hoffman/s2015_pbs_physics_math_slides.pdf#57), as well as with equation 20 in the [Walter et al paper](https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf) that introduced the GGX distribution.

I've read somewhere that there is an error in the original Cook-Torrance paper that led them to miss the factor of 4 in the denominator, which was corrected in subsequent papers. I couldn't find a reference to this with a quick search though (if anyone knows one, please feel free to note it in the comments).

As for the factor of π, it might appear or not, depending on conventions. Sometimes it's factored into the normal distribution function D. For instance, if you look in the Walter et all GGX paper section 5.2 where they give the equations for several D functions, you can see they all have a π in the denominator. Note that this implies that the Lambertian BRDF should have a π in the denominator as well.

In real-time graphics, the π is often left out, in which case we can interpret it as [having been factored into the light colors](https://seblagarde.wordpress.com/2012/01/08/pi-or-not-to-pi-in-game-lighting-equation/). Either way is fine, as long as you're consistent about either putting the π in or leaving it out of *all* the BRDFs you use.


---

### Answer by username_2 on 2017-09-29. Score: 1

A more recent paper (2005 at least ;) ), has a more concise notation while comparing multiple BRDFs including the **Cook-Torrance BRDF**. Their formula does not include the division by 4.

[*Addy Ngan, Frédo Durand, Wojciech Matusik: Experimental Analysis of BRDF Models,
Proceedings of the Eurographics Symposium on Rendering 2005.*](http://people.csail.mit.edu/addy/research/ngan05_brdf_eval.pdf)

[Project Page](http://people.csail.mit.edu/addy/research/brdf/), [Supplemental](http://people.csail.mit.edu/addy/research/ngan05_brdf_supplemental_doc.pdf) (Take a look at the supplemental!)

Note, however that the **Cook-Torrance BRDF** is not equal and thus not a synonym for the **Torrance-Sparrow BRDF**. The latter includes your division by 4. An interesting reference overview can be found in:

[*Rosana Montes, Carlos Ureña: An Overview of BRDF Models, Technical Report, 2012.*](http://digibug.ugr.es/bitstream/10481/19751/1/rmontes_LSI-2012-001TR.pdf)

The same **Cook-Torrance BRDF** formula is also present in:

*Philip Dutré, Kavita Bala, Philippe Bekaert: Advanced Global Illumination, 2nd Edition, 2006.*

**Edit**: I looked at some (isotropic) implementations of the **F**, **G** (or **V** depending if you factor the foreshortening in the denominator into **G**) and **D**:

* **D**: Beckmann, Ward-Duer, Blinn-Phong, Trowbridge-Reitz a.k.a. GGX a.k.a. GTR2, Berry a.k.a. GTR1;
* **G**|**V**: Implicit, Ward, Neumann, Ashikhmin-Premoze, Kelemann, Cook-Torrance, Smith GGX, Smith Schlick-GGX, Smith Beckmann, Smith Schlick-Beckmann;
* **F**: Schlick, Cook-Torrance.

They all seem to be used (in the literature, in the animation industry and in the gaming industry) in the format corresponding to your **second** option. All the **D** factors in my enumeration contain an explicit $\frac{1}{\pi \alpha^2} $ with $\alpha \equiv \text{roughness}^2$ (See [Equations](http://graphicrants.blogspot.be/2013/08/specular-brdf-reference.html)).

**Edit 2:** A recent presentation deriving and explaining the division by $4$ instead of $\pi$:

[*Earl Hammon: PBR Diffuse Lighting for GGX+Smith Microsurfaces*, GDC 2017.](https://twvideo01.ubm-us.net/o1/vault/gdc2017/Presentations/Hammon_Earl_PBR_Diffuse_Lighting.pdf)

To make a long story shorter, **option 2 is the only correct specular term** (of the three options provided).

> **Comments:**
> **username_3**: Blinn-Phong does not use $\alpha \equiv roughness^2$. it has an arbitrary "roughness" parameter. Also, the $\alpha$ in Beckmann is not the same as the $\alpha$ in GGX. In Beckmann, $\alpha \in [0, \infty)$ and in GGX $\alpha \in [0, 1]$ (although both describe the RMS Slope).  
> **username_2**: @username_3 For Blinn-Phong you need to use a derived version which derives alpha from the specular exponent. See http://graphicrants.blogspot.be/2013/08/specular-brdf-reference.html  
> **username_3**: Okay, you didn't mention that in your post, so I assumed you were using the original form.  

---

### Answer by username_4 on 2016-09-05. Score: 0

Personally I have used equation 2. Equation 3 seems incorrect to me, the Pi factor is to normalise the light response and for energy conservation. Essentially you do not want more light to be reflected from the surface than what it receives.

Equation 2 is an improvement of equation 1 and is more correct as far as I'm aware. For more information about equation 2, see **Microfacet Models for Refraction through Rough Surfaces** by Walter et al


---

