8 ms·
> Greyscale-AA is the “natural” approach to anti-aliasing. > Subpixel-AA is a trick that abuses the common way pixels are laid out on desktop monitors. I disa
by steerablesafe 5y ago
> Greyscale-AA is the “natural” approach to anti-aliasing.
> Subpixel-AA is a trick that abuses the common way pixels are laid out on desktop monitors.
I disagree with this notion of subpixel-AA being "abuse". If anything, grayscale AA is a simplification, assuming that each color component of a pixel is emitted from the same area. Of course subpixel-AA is more complicated, but it doesn't mean that it's abuse.
- opoolaka 5y agoIt's a hack/trick since it exploits a hardware layout that wasn't meant to be used from the software side. Like most hacks, it can work for some common use cases but will have a lot of edge cases : - how to detect the user pixel layout? on web, native applications.. - what about users who switch between landscape/portrait orientations? - does it make correct gamma rendering more complex? switch to dark mode harder? Also, I cannot find a simple implementation, focused on subpixel-AA. So people will probably have to start from scratch.. Here is the most interesting link I found: https://www.grc.com/cttech.htm https://www.grc.com/cttech.htm
- jcelerier 5y ago> - how to detect the user pixel layout? on web, native applications.. 99% of the monitors are RGB. BGR monitors are an oddity.
- boondaburrah 5y agoMy CRT would like to speak with you. More seriously, it seems every phone screen invents it's own pixel layout and of course, can be rotated 90° at any time.
- Gankra 5y agoThe fact that there are many different pixel layouts on phones is kinda irrelevant since they've largely all converged on retina resolutions for their viewing distance, making subpixel entirely pointless. For this reason, to my knowledge no one has ever bothered designing pentile subpixel rendering or whatever. Like I'm sure there's a cute tech demo but no one has any reason to seriously design and ship such a thing. Same situation with the vast majority of macs. Apple just disables subpixel at the OS level since most things are retina anyway. It still has its practical applications when you have the kind of userbase Firefox or Chrome does, but yeah it's increasingly easy to just Not Bother.
- kevingadd 5y agoAs soon as phones, tablets, and hybrid laptops (i.e. surface, etc) enter the picture you can no longer assume RGB because users rotate the device. People now stream PC/console games on their phones, too. Incidentally 'vertical sync is vertical' is also no longer a correct assumption. In some cases if you rotate a device now the tearing (when vsync is off) is vertical instead of horizontal, which is really disorienting if you're not used to it.
- dspillett 5y agoBut they do exist, as do other sub-pixel layouts (pentile, RGBG, ...). If you use sub-pixel rendering assuming RGB you are going to look worse on some devices (many Samsung phones, IIRC). Also, if you use sub-pixel tricks in static resources such as images (or your text renderer is not aware that the sub-pixels may not always be arranged horizontally) you are going to have colour halo effects when a device is rotated. Windows is doing that (optimising for horizontal RGB, when vertical RGB is the reality) right now on the screen I have rotated to portrait aspect. It isn't stark enough that I can see any colour halo at this dot pitch, in fact the effect is very subtle, but seen side-by-side text looks a little blury on that screen compared to the other screen (practically the same dot pitch, but landscape so actually is a horizontal RGB layout). Someone with better eyes (mine are somewhat shite) might find it more irritating that I do. I must get around to telling Windows to just use greyscale text trickery...
- kuschku 5y agoI use one monitor in portrait mode, one in landscape. Something relatively common for devs.
- steerablesafe 5y agoYes, it's more complicated, and parts of it might need hacks, as there are no standard way to get subpixel layout. That's a failure of those display APIs though, not the failure of the concept of subpixel-AA itself. > does it make correct gamma rendering more complex? switch to dark mode harder? Most text rendering is gamma-incorrect anyway, AFAIK, subpixel-AA or not. It doesn't make it more complex, just work in a linear colorspace either way.
- d_tr 5y agoSubpixel AA literally gets the colors wrong at the boundary, so calling grayscale AA a simplification is a bit too much IMO. Some people prefer subpixel AA and it might even be a matter of accessibility for others, so its existence is a good thing I guess, but it is not grayscale that makes any false assumptions.
- steerablesafe 5y agoPixel boundaries on your display are imaginary, all you have are RGBRGB light sources next to each other. The pixel boundaries are determined by your left-most and right-most light sources on the display, so you have |RGB|RGB|..., but it really shouldn't affect how you render text in the middle of your screen. edit: > it is not grayscale that makes any false assumptions Grayscale assumes that those pixel boundaries are real, and they are relevant.
- kevingadd 5y agoThis assumes you actually have RGB light sources in that order. There are (were?) consumer displays with RGBW or other alternative arrangements out there, not to mention panels with a different color ordering. And if you rotate or invert the display, the ordering becomes different. An ordinary consumer will never understand what's going on here, so if your code assumes RGB subpixel rendering for text is always correct, it's just going to look ugly to them for no reason.
- steerablesafe 5y agoI was assuming that to make a point. The actual subpixel order can either be retrieved by an appropriate API (if available) or be provided by the user (display settings). Point being, subpixels don't usually overlap on the same area, which is what's grayscale's assumption. I agree that if subpixel order is not known, then grayscale is a sane default.
- user-the-name 5y agoIf your stroke is 7 subpixels wide, it will be, for instance, RGBRGBR. That has three Rs, two Gs, and two Bs. That is 50% more red light than blue or green. That is tinted red, no matter how you look at it. Subpixel antialiasing does distort colours. That is just a physical fact. The only reason it works at all is that on average, it will even out to a uniform white. But in the details, it will not. Especially around straight vertical edges.