I have this very simple cube. The only material it has is a single color diffuse BSDF, and the only light in the scene is a white sun light:

enter image description here

But to my surprise, the RGB values are not proportional: enter image description here

0.447 / 0.682 is about 0.656, but 0.612 / 0.816 is 0.75!

I've checked the source code of diffuse BSDF:

#include "stdcycles.h"

shader node_diffuse_bsdf(color Color = 0.8,
                         float Roughness = 0.0,
                         normal Normal = N,
                         output closure color BSDF = 0)
  if (Roughness == 0.0)
    BSDF = Color * diffuse(Normal);
    BSDF = Color * oren_nayar(Normal, Roughness);

It's a very simple arithmetic operation. Just multiply the vertex color by the light. But as shown above, the final result is clearly not that simple. Otherwise the ratio between every color channel would remain the same.

What did I miss? Where is the "magic" happening?


1 Answer 1


You are using Filmic. This algorithm goes after rendering process and applys color transform on top of the render. Main purpose of using Filmic is increasing dynamic range, but it also reduces over-saturated colors, that usually looks very unnatural on renders:

enter image description here


You must log in to answer this question.

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