I am trying to understand the exact lighting computation going on in cycles renderer. I've set up a test scene as follows:

  • Cube whose corners are at [-1, -1, -1] and [1, 1, 1]
  • Its material is set to [1, 1, 1] diffuse and [0, 0, 0] specular
  • Lamp at [0, -3, 0] with no distance attenuation (light falloff set to constant)
  • Lamp's strength is set to 10 with 0 as smooth value
  • Camera at [0, -5, 0]
  • Background light set to [0, 0, 0]

I've also disabled sRGB output (display device is set to None instead of sRGB). The exposure value is set to 0.

With these I am getting an image with cube's pixel value 65 at its very center (the region that receives light parallel to the surface normal). What can be the explanation of this?

I would expect something like 10 / (4 * pi). The reason of division by 4 * pi is that cycles defines point lights using power (in Watts). I also tried rendering in EXR format and it still doesn't produce the expected value.


1 Answer 1


Ok, I believe I solved the issue. Although my material's diffuse reflection was set to [1, 1, 1], for physically correct rendering the actual diffuse reflection must be divided by $\pi$. In other words, an energy conserving diffuse BRDF is defined as $f(w_i, w_o) = \frac{k_d}{\pi}$, where $k_d$ is the diffuse reflectance (note that my specular reflectance was zero so we are not concerned about the specular part).

This means that if light fall off is disabled, the actual radiance that gets reflected off the face of the cube is $\frac{10}{4\pi^2}$ (with physically correct quadratic fall off this would be $\frac{10}{4\pi^2d^2}$ where $d$ is the distance).

So in my case, this value turns about to be $0.253$ and that is what I see as pixel value in the center of the cube's face if I save the rendered image in EXR format.

As for the PNG format, cycles appears to simply multiply this number with $255$, the maximum storable value in 8-bits. This corresponds to $64$. This happens because I had disabled gamma correction. Otherwise, cycles would have gamma corrected the value before multiplying it with $255$. This produces a value of $138$ and I confirmed that by experimentation.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .