https://bugs.kde.org/show_bug.cgi?id=466583

            Bug ID: 466583
           Summary: Artifacts when shapes are not at integer positions
    Classification: Applications
           Product: krita
           Version: 5.1.5
          Platform: Other
                OS: All
            Status: REPORTED
          Severity: minor
          Priority: NOR
         Component: Tools/Vector
          Assignee: krita-bugs-n...@kde.org
          Reporter: k...@frost.kiwi
  Target Milestone: ---

Created attachment 156818
  --> https://bugs.kde.org/attachment.cgi?id=156818&action=edit
Screenshot showing stray alpha pixels being rastarized from a shape not at
integer position

The positional values for shapes are always floats. However, if these floats
are not rounded to .0, then they introduce blurring and artifacts when being
rasterized. Blurring is expected, since rasterizing a vector border at .5
positions is (somewhat) expected to provide a non-sharp result, however,
artifacts breaking the silhouette of a shape are not.

The solution to remove these artifacts becomes a strange ritual of having to
press [Up Arrow] [Down Arrow] or manually entering an integer. This is
explained in in at 6:49 in this video:
https://www.youtube.com/watch?v=X1Aui6o_V2A&t=409s which is part of a
PullRequest of another project. (
https://github.com/Immediate-Mode-UI/Nuklear/pull/548 )

This happens in different situation, but the quickest one to see is the example
as shown in the above video. A rectangle with a round joint stroke (not the
layer style stroke, but the vector border stroke), has stray pixels breaking
the silhouette of the rectangle. To add insult to injury this happens only on
one side, so the stray pixels also break symmetry. See attached image.

Additionally, to more clearly communicate to the user what is actually going
on, the float decimal place should be displayed, if the the position float is
not a round integer. This is a separate issue and discussed here:
https://bugs.kde.org/show_bug.cgi?id=466582

Whilst it may appear pixel peeping, this has severe consequences for certain
use-cases. Like the use-case of interface skin design as shown in the above PR.
Such stray pixels become very obvious, once those elements are used at 1:1
pixel mapped scales on a screen to output a user interface. Like dead pixels,
they are invisible on a in the grand scheme of a painting of poster design, but
on a very clean GUI, they stick out.

All of this is is easily solved by positioning shapes at integer positions with
integer sizes, so this issue is of minor severity.

Steps to Reproduce:
1. Create a rectangle shape with a rounded stroke border
2. Position this rectangle with your mouse at a non-integer position
3. See the silhouette being broken by stray pixels at the border - fill
intersection.

Expected behavior:
Outer silhouette of a rounded rectangle not being disturbed by stray pixels

SOFTWARE/OS VERSIONS
Krita version 5.1.5

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to