Recently a user on here offered a tip to be careful when making shaders so I don't violate energy conservation. Blender stores colors in the value range of 0-1. If you go above 1, then more light is being reflected than is being received and you get physically inaccurate results.
In order for materials to work well with global illumination, they should be, speaking in terms of physics, energy conserving. That means they cannot reflect more light than comes in. This property is not strictly enforced, but if colors are in the range 0.0 to 1.0, and BSDFs are only mixed together with the Mix Shader node, this will automatically be true.
So my question is, what scenarios would break energy conservation (other than what is mentioned in the documentation)? When do I need to be vigilant about this?
I've been making utility node groups for myself - an example is my Falloff Map node shown below:
And this "texture adjustment" node group:
I'm a little concerned that my node groups could be outputting values higher than 1. For instance in the falloff map node group, I have an exponential "power" math node that then feeds into an RGB Curves node. Wouldn't the power node have the potential to output values above 1?
Another example with my "Texture Adjust" node group: I have three MixRGB nodes set to
screen chained together for an alternate way to lighten a texture than simply adjusting brightness.
Is it possible that I am violating energy conservation with either of these node groups?
I am also aware of the ability to clamp values, but I usually leave it unchecked. Should I be clamping values as I go about building node groups?
I've attached both node groups so you can download and test them yourself.
Texture adjust nodegroup:
Falloff Map nodegroup:
Thanks so much for any advice or help.