mypaint / libmypaint

libmypaint, a.k.a. "brushlib", is a library for making brushstrokes which is used by MyPaint and other projects.
http://mypaint.org
Other
310 stars 86 forks source link

MyPaint Rendering differs between 1.1.0 and git version #9

Closed AnTi-ArT closed 7 years ago

AnTi-ArT commented 10 years ago

I just installed the git version from 2014-08-06 And the Ramon-2B pencil looks a lot more blurry and smoothed: screenshot from 2014-08-26 11 23 22 The chicken is an old drawing, and even when picking the stroke directly from it, it looks not the same. To make sure, I redowloaded the ramon set. When switching back to 1.1.0 the brush is correct again.

iirelu commented 10 years ago

Can confirm there's a difference, but I'm not quite sure it's a negative one. blender

blender

Also, this is not a libmypaint issue, as libmypaint wasn't in use for 1.1.0.

AnTi-ArT commented 10 years ago

Those separate issue trackers are confusing, I thought rendering is handled by libmypaint... Here are some more examples, from different sets Some brushes look "better", some not. Personally I'd rather rely on lower Hardness to get a "blurry" brush. But what's really fatal is the fact that for some jobs you need 100% consistent tools over a long time (e.g game graphics)

martinxyz commented 10 years ago

It may have to do with the anti-aliasing changes: https://github.com/mypaint/mypaint/commit/9dfe45b415235827af9e18eb9dc47dfe550892ef

I did check and update many brushes at that time, but I may have missed some: https://github.com/mypaint/mypaint/commit/cdba68928bb923b78da275fe0054687eaed8ee39

Brushlib was part of MyPaint proper at the time of that change.

AnTi-ArT commented 10 years ago

I just noticed more details about this issue: There is a break of blurry vs sharp between the radius values of 0.44 and 0.45 mypaint-brush-blur

It can be noticed with ramon/2BPencil und ramon/P.Shade. Don't know if it is related to other settings, too. I also copied ramon 2B manually from the version 2 to a version 3 format. Still the same issue.

(Tested on Windows 8.1 with this March 25, 2014 built )

Maybe I'll test this further with custom (non-ramon) brushes. I quickly tried it with a standard brush (most values on default) and there was not such a clear change in appearance...

AnTi-ArT commented 10 years ago

Oh, joy. I reset the ramon-2B brush to defaults, except Radius and Hardness. And here is a matrix of hardness-radius-combinations, tested with ^that git version from march. Values are supposed to be 0.values, Zoom is over 300% (is it known, that Zoom gets blurry at 299% and crisp at 301%? Maybe I should report...)

mypaint-brush-blur2

Full view, please. There is a pretty clear break at 0.8 to 0.12 hardness, it gets more subtle at higher hardnesses. There is still a 0.44-to-0.45-break at the hardnesses from 0.12 to 0.16, but it looks like lower radiuses get more crisp, too -> less difference. Contrary at low hardness 0.6 the break even seems to shift towards higher radiuses.

I also tried every other setting with radius 0.44 vs 0.45, nothing seemed to change the break. Except the hardness. I'll try to upload the ora somewhere, so strokes can be picked. Sadly I can't test it with version 1.1.0, since there seems not to be an official Win-Build (and my Linux is dead).

PS: Whoever fixes this bug, please make it so that ramon/2B-Pencil keeps it's 1.1.0 crispiness :) I rely on this brush...

iirelu commented 10 years ago

Oh wow, now that's interesting. This definitely looks more like a bug now.

martinxyz commented 10 years ago

Yes that looks like a bug. But have you tried changing the "Anti-Aliasing" setting (it looks like the option is called "Pixel feather" in the GUI now.) IIRC you can set it to 0 to get the old behaviour back (if it is the cause of the bug).

martinxyz commented 10 years ago

(About zoom: what you call "crisp" (NEAREST interpolation) looks rather distracting at zoom levels close to 1:1. Change the "if" to "if True:" here for testing: https://github.com/mypaint/mypaint/blob/217f6f0d/gui/tileddrawwidget.py#L910 )

Shnatsel commented 8 years ago

Doesn't seem to have anything to do with antialiasing ("Pixel feather" setting). It is already set to 0 by default, increasing it has no effect on the bug.

Here's a test for two different brush sizes - one affected by the bug, the other not affected:

test

achadwick commented 7 years ago

Closing this because brush behaviour has now changed for other reasons, and we have chosen to break strict brush appearance conformance to prior versions. If someone with a stake in this has updated test cases for the new libmypaint master branch (or better still can pin the actual numerical oddity at play here and why it's happening, with reference to git bisects!), please open a new issue about it, referencing this one as mypaint/libmypaint#9.

If people think it's worth declaring a compatibility break for this reason and going to 2.x, let us know.

See mypaint/mypaint#818 for the decision re backwards compatibility with previous versions' brush appearance.

briend commented 7 years ago

Just want to leave a note here that these issues can probably be tuned-away with the new base brush radius input, so that brushes can stay crispy even with some pixel feathering at various sizes, etc.