4

tl;dr:

Why is cursor position not antialiased by applications, desktop environments, or operating systems? Why don't user interfaces give the ability to localize pointer position with subpixel precision?


Pixels are physical things on our physical screens, and are ultimately are the "quanta" of display resolutions. However, conceptually, pixels are not tessellating squares. They are instead discrete, infinitesimal points in two-dimensional space, similar to how "samples" in digital audio are a discrete signal which nonetheless describe a smooth, continuous one-dimensional curve. Consequently, there is no reason to not conceptually think about the "signal" that exists in-between the pixels. In fact, pixel density does not define a spatial localization precision at all; pixel density only limits the highest "frequency" of a longitudinal signal that can exist in a given length.

an 8x8 DCT visualized

Indeed, we make use of interpixel space all the time with antialiasing filters! Examples include text1 and geometry rendering2, as well as graphics:

antialiasing of textantialiasing of graphics

So why can't we do this to cursor position, too?


1Yes, different displays may have different subpixel geometries, which is taken advantage of by text renderers, but that doesn't prevent *pixel-level* antialiasing. Regardless of the subpixel layout, cursor movements can be localized to subpixel precision so long as the whole pixels are laid out in the same grid formation.

2Yes, display gamma complicates antialiasing, but this doesn't prevent antialiasing from being used elsewhere.

3
  • Here is a demonstration of the idea: youtube.com/watch?v=oha-LZwk06g
    – ayane_m
    Apr 2, 2023 at 19:33
  • Could you please provide more details on your use case? General use case of pointing device is tell about pointer coordinates to application. Application deals with coordinates in pixels so it usually doesn't need subpixels as its objects are described with dimensions in pixels. The other thing - your video has integer coordinate which is pixel and should have to instances - pixel and subpixel. This make more clear why we need 2 instead of 1.
    – Serg
    Apr 7, 2023 at 12:50
  • What options do you see for resolutions finer than one pixel? Apr 12, 2023 at 23:41

1 Answer 1

1

So why can't we do this to cursor position, too?

It might be possible to hack this in, but it overall is unnecessary.

  • Pixels are continuously getting smaller, to the point where the inverse becomes an issue: HiDPI/Retina screens are so dense that they need to duplicate things in order to keep the interface legible.
  • Subpixel precision is not necessary for the rest of the UI, any click target will be larger (typically: much, much larger) than 1px.
  • Subpixel rendering providing more smooth transitions is fully unnecessary once the cursor moves sufficiently fast, as usually is the case. On a 1920×1080px@60Hz monitor, you need to move your cursor just 60px per second - 1/32 of the width of the screen - and you already are in 1px+ increments for the cursor position for each frame. At this point the subpixel precision doesn't provide any additional smoothness, if you want more smoothness, you need higher refresh rates.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.