<p>It is better to think of blinn-phong as a specialization of the more generalized PBR equations. Its major goal is efficiency, so, in that sense you are on the right path, but the light vector, view vector, normal vector and  <em>half-way</em> vector comes up repeatedly in PBR.</p>
<p>The Cook-Torrence BRDF is very popular and the half way vector (often just called the half vector) is an important part of the computation.</p>
<p>The half way vector comes up in microfacet distribution models (MDF) Beckman, GGX and Towbridge-Reitz all use the half way vector.</p>
<p>Usually listed in the equations as just 'H'.</p>
<p><span class="math-container">$f_r(H,N,L,V)$</span></p>
<p>Blinn-Phong is a excellent starting point for learning PBR since most of the concepts apply directly to physically based models.</p>
<p>One of the key principles of PBR rendering is the principle of energy conservation. This means that a surface never reflects more light than it receives. The halfway vector is more consistent with this principle because it accounts for both the view direction and the light direction, and does not overestimate the specular reflection as the reflection vector does. The halfway vector also allows for a smoother transition between different roughness levels of a surface.</p>

CC BY-SA 4.0
2023-02-27T15:18:45.100Z
at https://learnopengl.com/Advanced-Lighting/Advanced-Lighting, it is writen: "halfway vector that is a unit vector exactly halfway between the view direction and the light direction. The closer this halfway vector aligns with the surface's normal vector, the higher the specular contribution"; so the half vector is an indication of the strength of the specularity?
LeXav
CC BY-SA 4.0
2023-02-27T16:04:13.663Z
I think that is a fair analogy.
pmw1234
CC BY-SA 4.0
2023-02-27T16:14:07.257Z
I think a lot of confusion comes from the fact the the halfway vector is used in blinn-phong and PBR models for different reasons. In BP it was *introduced* as an efficient way to compute specular and many discussions about BP stop there without discussing its relation to PBR,  while in PBR models like GGX it is introduce purely for physically based reason when computing the microfacet distribution. Either way, it is worth the effort to learn it.
pmw1234
CC BY-SA 4.0
2023-02-27T16:34:14.273Z
Thanks a lot for your pointers pmw +1
LeXav
CC BY-SA 4.0
2023-02-27T11:20:51.743Z
2023-02-27T16:25:38.003Z
2023-02-27T16:25:38.003Z
pmw1234
<p>I read a lot about lighting recently but I have (at least) one thing that remains a dark corner:
The <a href="https://en.wikipedia.org/wiki/Blinn%E2%80%93Phong_reflection_model#Description" rel="nofollow noreferrer">Blinn-Phong</a> and <a href="https://learnopengl.com/Advanced-Lighting/Advanced-Lighting" rel="nofollow noreferrer">this opengl source</a>talks about an halfway vector.</p>
<h3>My understanding:</h3>
<ol>
<li>This vector is only used in Blinn Phong or derivatives but not in GGX</li>
<li>It is essentially an optimization for old hardware to avoid too many calculations</li>
<li>Other more realistic methods (GGX..) don't limit themselves to a simple half vector but a random number of rays starting from the microfacet.</li>
</ol>
<h3>My question:</h3>
<p>Is my understanding correct so far?</p>
<hr />
<p>It seems logical to reach more photorealism than Blinn-Phong, but again, <strong>it has just been a few days</strong> of studying path tracers source codes and reading as much litterature as I could on the subject of Lighting.</p>
<p>Thanks</p>

CC BY-SA 4.0
2023-02-27T12:56:45.680Z
Note the difference between the specular and the diffuse part of the calculation. The half vector (in PBR anyway) is used based on the assuming that a surface is a perfect mirror. In a nutshell this means, that (specularly reflected) light is only contributing where the angles between view ray and half vector, and light ray half vector have the same angle. There is no other light reflected with regards to your calculation. This does not hold true for diffuse reflections however. Thus, it is not (only) for more optimized calculations but has some basis in physics.
Tare
CC BY-SA 4.0
2023-02-27T15:12:15.720Z
@Tare: i can't upvote your comment, but if some else could it would be wonderful :)
LeXav
<lighting>
Blinn-Phong, GGX and half vector for light
LeXav
# Blinn-Phong, GGX and half vector for light

(Asked by: username_0 on 2023-02-26)

I read a lot about lighting recently but I have (at least) one thing that remains a dark corner:
The [Blinn-Phong](https://en.wikipedia.org/wiki/Blinn%E2%80%93Phong_reflection_model#Description) and [this opengl source](https://learnopengl.com/Advanced-Lighting/Advanced-Lighting)talks about an halfway vector.

### My understanding:

1. This vector is only used in Blinn Phong or derivatives but not in GGX
2. It is essentially an optimization for old hardware to avoid too many calculations
3. Other more realistic methods (GGX..) don't limit themselves to a simple half vector but a random number of rays starting from the microfacet.

### My question:

Is my understanding correct so far?

---

It seems logical to reach more photorealism than Blinn-Phong, but again, **it has just been a few days** of studying path tracers source codes and reading as much litterature as I could on the subject of Lighting.

Thanks

**Tags:** lighting

> **Comments:**
> **username_1**: Note the difference between the specular and the diffuse part of the calculation. The half vector (in PBR anyway) is used based on the assuming that a surface is a perfect mirror. In a nutshell this means, that (specularly reflected) light is only contributing where the angles between view ray and half vector, and light ray half vector have the same angle. There is no other light reflected with regards to your calculation. This does not hold true for diffuse reflections however. Thus, it is not (only) for more optimized calculations but has some basis in physics.  
> **username_0**: @username_1: i can't upvote your comment, but if some else could it would be wonderful :)  

---

## 1 answers

### Answer by username_2 on 2023-02-27. Score: 0 | Accepted answer

It is better to think of blinn-phong as a specialization of the more generalized PBR equations. Its major goal is efficiency, so, in that sense you are on the right path, but the light vector, view vector, normal vector and *half-way* vector comes up repeatedly in PBR.

The Cook-Torrence BRDF is very popular and the half way vector (often just called the half vector) is an important part of the computation.

The half way vector comes up in microfacet distribution models (MDF) Beckman, GGX and Towbridge-Reitz all use the half way vector.

Usually listed in the equations as just 'H'.

$f\_r(H,N,L,V)$

Blinn-Phong is a excellent starting point for learning PBR since most of the concepts apply directly to physically based models.

One of the key principles of PBR rendering is the principle of energy conservation. This means that a surface never reflects more light than it receives. The halfway vector is more consistent with this principle because it accounts for both the view direction and the light direction, and does not overestimate the specular reflection as the reflection vector does. The halfway vector also allows for a smoother transition between different roughness levels of a surface.

> **Comments:**
> **username_0**: at https://learnopengl.com/Advanced-Lighting/Advanced-Lighting, it is writen: "halfway vector that is a unit vector exactly halfway between the view direction and the light direction. The closer this halfway vector aligns with the surface's normal vector, the higher the specular contribution"; so the half vector is an indication of the strength of the specularity?  
> **username_2**: I think that is a fair analogy.  
> **username_2**: I think a lot of confusion comes from the fact the the halfway vector is used in blinn-phong and PBR models for different reasons. In BP it was *introduced* as an efficient way to compute specular and many discussions about BP stop there without discussing its relation to PBR,  while in PBR models like GGX it is introduce purely for physically based reason when computing the microfacet distribution. Either way, it is worth the effort to learn it.  
> **username_0**: Thanks a lot for your pointers pmw +1  

---

