描画マスクは、左パネルの下側にあるマスクマネージャーで管理することができます。
今回は、背景の写真は、問題ではありません。描画マスクの取り扱いだけを問題にします。
写真1は、3つの円の描画マスクが重なっている例です。
デフォルトでは、描画マスクが重なると、重なった部分もマスクになります。
AのBのマスクが重なった場合の集合演算には写真2のマスクマネージャーのように、次の種類が考えられます。
(1)AとBの和集合union(デフォルト)
(2)AとBの積集合intersection
(3)B-A 差集合 difference
(4)和集合ー積集合exclusion
(1)から(4)の処理は、2つのマスクの間の演算です。
写真2のように、マスクマネージャーでは、マスク1つに対して、演算を定義します。
つまり、この方法では、マスクの演算を指定している行のマスクが対象になっているのは、わかりますが、もう一つのマスクをどのように指定するのかわかりません。
darktableのマスクマネージャーは、指定した行と、その上にある行のマスクに対して演算を行うというルールを採用しています。
このとき、一番上の図形だけは、上がないので1つになります。ここで指定できるのは、union(デフォルト)だけになります。
写真3では、3番目の図形で、intersectionを選んでいますが、ABCの3つの円の積集合にはなりません。
写真4では、2番目の図形でも、intersectionを選んでいます。こうするとABCの3つの円の積集合になります。
なお、(4)exclusionは上手くできませんでした。これは、1番目の図形で、union(デフォルト)が選ばれているためと思われます。
実際には、exclusionが必要な場面は稀なので、問題はないと思います。