Airbrush/Brush Banding Effect At Low Pressure/Opacity
Hi. To try to learn GIMP development, I have been looking into old bug
#588681 (Airbrush tool produces banding with with soft brush). From the
initial problem summary:
"The Airbrush produces bandings when its used with a soft brush and low
pressure. The sharp edges in the bands is [sic] very visible when it
occurs in a otherwise soft image. The low pressure is very useful when I
want to have good control over the spray."
He uploaded an image as well of the effect, which I can easily
reproduce. When using the airbrush, the severity of the effect is
indirectly proportional to the pressure level selected. The exact same
problem can be reproduced with a normal fuzzy brush, simply by selecting
a low opacity, and repeatedly clicking on the canvas in the same location.
Initially I spent a lot of time looking at
app/core/gimpbrushgenerated.c, and especially gauss(),
gimp_brush_generated_calc_lut(), and gimp_brush_generated_calc(). This
is because I mistakenly supposed that the problem lay in the
construction of the lookup table used initially to create the brush
mask. However I discovered that this is completely unaffected by the
brush opacity or airbrush pressure.
Though having a far from sufficient understanding of how the GIMP brush
painting process works, it seems to me like this is the fundamental
problem: In making black-and-white brushes semi-transparent, GIMP
somehow "levels out" the grey-scale, so that certain ranges of darkness
become the same. On a fuzzy brush, the result is that the fine
graduation is changed to appear stepped or banded.
I would appreciate any insight into this matter. I have started to look
into how brushes are made (applied?) semi-transparent in the code, but
there are quite a few functions in the paint-funcs directory to look
through.