|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
Airbrush/Brush Banding Effect At Low Pressure/OpacityHi. 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. -- Christopher Howard http://indicium.us http://theologia.indicium.us _______________________________________________ Gimp-developer mailing list Gimp-developer@... https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer |
|
|
Re: Airbrush/Brush Banding Effect At Low Pressure/OpacityHi,
On Tue, 2009-10-20 at 12:22 -0800, Christopher Howard wrote: > 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. The problem here is that the brush masks are 8bit only. With such a limited set of values to start with, banding is basically unavoidable. Sven _______________________________________________ Gimp-developer mailing list Gimp-developer@... https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer |
|
|
Re: Airbrush/Brush Banding Effect At Low Pressure/OpacityOn Oct 20, 2009, at 1:39 PM, Sven Neumann wrote: > Hi, > > On Tue, 2009-10-20 at 12:22 -0800, Christopher Howard wrote: > >> 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. > > The problem here is that the brush masks are 8bit only. With such a > limited set of values to start with, banding is basically unavoidable. > > > Sven You should be able to get rid of most of the banding by performing error diffusion when multiplying the opacity into the brush mask. I suspect that a simple 1d error diffusion algorithm will be sufficient and I wouldn't bother with a Floyd-Steinberg type algorithm unless you could come up with an example where the simpler algorithm showed visible artifacts. I believe the function that introduces the banding is apply_mask_to_sub_region in paint-funcs.c or in the function apply_mask_to_alpha_channel depending on your point of view. I have not worked with that code in a long time and I could be wrong about that. You will need to make the starting error term effectively random or you run the risk of letting the upper-left pixel in each tile get special treatment. Good luck, Jay Cox jaycox@... _______________________________________________ Gimp-developer mailing list Gimp-developer@... https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer |
| Free embeddable forum powered by Nabble | Forum Help |