With 2.80 upcoming, I decided to do some experiments, and maybe convert some of the old stuff.
For this first one I know that in Cycles we can’t (yet) do stuff that depends on scene brightness, but Eevee have this awesome Converter/ShaderToRGB node. With that in mind I loaded up the BMW test scene and used Eevee to generate a render where the color changes with how much light that pixel receives.
That Eevee image comes out like this:
I now simply mapped that image using window texture coordinates (rarely used) to the main material of the car only, and used the color information to cause a hue shift in colors.
Here is the final Cycles result: