Joan, let me try to better describe ‘mesh’ and ‘bomb’:
‘mesh’ is a universal blend mode. Given enough resolution in its transfer function array, it can approximate any other blend mode, or it can effect arbitrary variations thereof. The user needs no algebra to modify things either. The transfer function is a simple 2D (or NxNx3) array, which can be manipulated like any other monochrome or RGB image.
Consider the example
% load test images
FG=imread('sources/pinlightblend.jpg');
BG=imread('sources/pinlightbase.jpg');
% generate small (10x10) gradients as test images
[bg fg]=meshgrid(linspace(0,1,10));
% generate a 10x10 transfer function array/image/thing for the 'overlay' mode
example_tf=imblend(fg,bg,1,'overlay');
% blend the image using the same mode
native_blend=imblend(FG,BG,1,'overlay');
% emulate 'overlay' using 'mesh' mode with the example transfer function
emulated_blend=imblend(FG,BG,1,'mesh',example_tf);
% compare the results
imcompare('native_blend','emulated_blend','invert')
Even for a 10x10 array, the approximation is reasonable for a smooth mode like ‘overlay’
‘bomb’ is basically what happens when you feed ‘mesh’ a random configuration array.
% each random blend is different
ashes1=imblend(FG,BG,1,'bomb');
ashes2=imblend(FG,BG,1,'bomb');
% changing the tf size increases likelihood of inversions
ashes3=imblend(FG,BG,1,'bomb',6);
ashes4=imblend(FG,BG,1,'bomb',10);
imshow2('cat(2,cat(1,ashes1,ashes2),cat(1,ashes3,ashes4))','invert','tools')
Again, ‘bomb’ is well suited to working with layered compositions of abstract content, where it doesn’t run at odds with expectations. It sometimes leads me in unexpected directions.
… i guess that wasn’t succinct at all.



