On 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@xxxxxxxx _______________________________________________ Gimp-developer mailing list Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer