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.)


1 Answer 1


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

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

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 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!

  • $\begingroup$ 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. $\endgroup$
    – shashack
    Jun 25, 2017 at 0:12
  • $\begingroup$ 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. $\endgroup$
    – bram0101
    Jun 25, 2017 at 8:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.