<p>You probably know that the BRDF is to calculate the reflected light, from a light source to a camera (In examples a light source and a camera is used, but it does not need to be just that). </p>

<p>The property that you are talking about, basically says that when you swap the light source with the camera, it still gives the same result.</p>

<p>Lets look at an example I quickly made.
<a href="https://i.sstatic.net/zTOsg.png" rel="noreferrer"><img src="https://i.sstatic.net/zTOsg.png" alt="enter image description here"></a></p>

<p>Ok, so here you see the basic setup. You have a light source, a camera and a point on a surface. Wi is the direction towards the light, the incoming direction. Wo is the direction towards the camera, the outgoing direction. N is the normal of the surface.</p>

<p>The property says that if we switch Wi and Wo with each other the result is the same.</p>

<p>The example would then look like this.
<a href="https://i.sstatic.net/TjC5p.png" rel="noreferrer"><img src="https://i.sstatic.net/TjC5p.png" alt="enter image description here"></a></p>

<p>This looks normal and logical. You said that you should invert the direction vectors. If we do that, this is then our result.
<a href="https://i.sstatic.net/VxHWn.png" rel="noreferrer"><img src="https://i.sstatic.net/VxHWn.png" alt="enter image description here"></a>
You can see that it now looks like the surface is illuminated from the other side, and since the normal is not inverted, it will end up looking black.</p>

<p>So that is where you made your mistakes. The property says that you can swap the incoming and outgoing vectors and the result will still be the same. This is called the Helmholtz reciprocity. And where you might got confused was this part "how a ray of light and its reverse ray encounter matched optical adventures" (from the wikipedia). But it is not talking about the inverse (multipled by -1) but about the outgoing ray of the event in something like a reflection or refraction.</p>

<p>I recommend reading up on the Helmholtz reciprocity. For example on the wikipedia: <a href="https://en.wikipedia.org/wiki/Helmholtz_reciprocity" rel="noreferrer">https://en.wikipedia.org/wiki/Helmholtz_reciprocity</a> </p>

<p>I hope I explained this properly, and if I made any mistakes, I am happy to learn and fix this answer.</p>

<p>Good luck with your adventures through the computer graphics universe!</p>

CC BY-SA 3.0
2017-06-25T00:12:08.467Z
Thank you for the answer, I understand my problem.
But , in my opinion, the second image should be changed, the direction vector should not be changed as I know.
shashack
CC BY-SA 3.0
2017-06-25T08:57:10.393Z
In the second image I swapped the light source and the camera, this means that the incoming light is coming from another direction than previously. It is not like the camera suddenly emits light. That is why I changed Wo and Wi with each other. I was a bit lazy and I did not swap the arrow shapes themselves, but I thought it was enough to convey the point.
bram0101
CC BY-SA 3.0
2017-06-24T21:35:58.823Z
2017-06-24T21:35:58.823Z
bram0101
<p>Many books describe that a BRDF has the following property (reciprocity):</p>

<p>$$f_r(x, \Theta \to \Psi ) =  f_r(x, \Psi \to \Theta)$$</p>

<p>Why is the above equation correct?</p>

<p>I think the above equation should be changed as follows:</p>

<p>(because the two symbols $\Theta$ and $\Psi$ are <strong>direction vectors</strong>)</p>

<p>$$f_r(x, \Theta\to \Psi ) =  f_r(x,  -\Psi \to -\Theta)$$</p>

<p>What is my mistake?<br>
(I am very confused about the concept.)</p>

<physically-based><pbr><photo-realistic><realistic>
The reciprocity of BRDF
shashack
# The reciprocity of BRDF

(Asked by: username_0 on 2017-06-24)

Many books describe that a BRDF has the following property (reciprocity):

$$f\_r(x, \Theta \to \Psi ) = f\_r(x, \Psi \to \Theta)$$

Why is the above equation correct?

I think the above equation should be changed as follows:

(because the two symbols $\Theta$ and $\Psi$ are **direction vectors**)

$$f\_r(x, \Theta\to \Psi ) = f\_r(x, -\Psi \to -\Theta)$$

What is my mistake?  
(I am very confused about the concept.)

**Tags:** physically-based, pbr, photo-realistic, realistic


---

## 1 answers

### Answer by username_1 on 2017-06-24. Score: 6 | Accepted answer

You probably know that the BRDF is to calculate the reflected light, from a light source to a camera (In examples a light source and a camera is used, but it does not need to be just that).

The property that you are talking about, basically says that when you swap the light source with the camera, it still gives the same result.

Lets look at an example I quickly made.
[![enter image description here](https://i.sstatic.net/zTOsg.png)](https://i.sstatic.net/zTOsg.png)

Ok, so here you see the basic setup. You have a light source, a camera and a point on a surface. Wi is the direction towards the light, the incoming direction. Wo is the direction towards the camera, the outgoing direction. N is the normal of the surface.

The property says that if we switch Wi and Wo with each other the result is the same.

The example would then look like this.
[![enter image description here](https://i.sstatic.net/TjC5p.png)](https://i.sstatic.net/TjC5p.png)

This looks normal and logical. You said that you should invert the direction vectors. If we do that, this is then our result.
[![enter image description here](https://i.sstatic.net/VxHWn.png)](https://i.sstatic.net/VxHWn.png)
You can see that it now looks like the surface is illuminated from the other side, and since the normal is not inverted, it will end up looking black.

So that is where you made your mistakes. The property says that you can swap the incoming and outgoing vectors and the result will still be the same. This is called the Helmholtz reciprocity. And where you might got confused was this part "how a ray of light and its reverse ray encounter matched optical adventures" (from the wikipedia). But it is not talking about the inverse (multipled by -1) but about the outgoing ray of the event in something like a reflection or refraction.

I recommend reading up on the Helmholtz reciprocity. For example on the wikipedia: <https://en.wikipedia.org/wiki/Helmholtz_reciprocity>

I hope I explained this properly, and if I made any mistakes, I am happy to learn and fix this answer.

Good luck with your adventures through the computer graphics universe!

> **Comments:**
> **username_0**: Thank you for the answer, I understand my problem. But , in my opinion, the second image should be changed, the direction vector should not be changed as I know.  
> **username_1**: In the second image I swapped the light source and the camera, this means that the incoming light is coming from another direction than previously. It is not like the camera suddenly emits light. That is why I changed Wo and Wi with each other. I was a bit lazy and I did not swap the arrow shapes themselves, but I thought it was enough to convey the point.  

---

