I am experiencing an unexpected behavior with the color burn blending mode in Adobe Photoshop CS 5 (and CS 6).
My understanding of the blending mode is the following (https://helpx.adobe.com/photoshop/using/blending-modes.html):
Color Burn: Looks at the color information in each channel and darkens the base color to reflect the blend color by increasing the contrast between the two. Blending with white produces no change.
I have the following setup:
- Top layer, completely black (#000000), set to Color Burn blending mode
- Bottom layer, completely white (#FFFFFF)
My expected result is to get a completely black color (#000000). My actual result is a completely white color (#FFFFFF).
However, when I change the bottom layer ever so slighty, e.g. to a value of nearly white such as #FEFFFF (254, 255, 255 in RGB), then I get the expected result of a completely knocket out channel (#00FFFF).
When the documentation says blending with white produces no change
, I expect that to mean the top layer (i.e. the blend layer)?
Why is this blending mode not "enabled" when a channel in the base layer is completely white?
The following picture shows the exemplified results (in CS5):
NOTE: Interestingly this same issue is happening with color dodge (if you invert all references of white to black, and vice versa. Whenever a channel in the color dodge base layer is slightly above 0, the blending mode kicks in.
Edit
This also happens if the top-layer is different from zero, e.g. #040404.
According to the available algorithms I've looked at online the corner case is only when the top-layer is totally black, but these algorithms then use the top-layer (and not the bottom-layer) as a result.
Example:
if b = 0 then
result := 0
else begin
c := 255 - (((255-a) SHL 8) DIV b);
if c < 0 then result := 0 else result := c;
end;
Where a is the base layer (bottom layer) and b is the blend layer (top layer).
(See https://stackoverflow.com/questions/5919663/how-does-photoshop-blend-two-images-together or http://www.pegtop.net/delphi/articles/blendmodes/burn.htm)
Since the same behavior is experienced when the top layer is different from zero, it seems like PS has a special case for a base channel value of 255. This is most likely due to an arbitrary decision by Adobe that is not reflected in other algorithms.