I disabled dithering on Apple silicon + Introducing Stillcolor macOS M1/M2/M3
Possibly. I may have spoke to soon. Today i installed premiere which comes with Adobe media encoder. It seems to have flipped a switch again. And toggling 8bit does not help. I'll try reinstalling the OS when I have time. I think something changes on an OS level. My work supplied intel imac pro is unusable now as it upgraded the firmware
- Edited
async No rebooting did nothing. I tried toggling everything I could. Luckily I have a Mac Mini M1 working atm which I'd migrated the air setup to before I installed Adobe Media encoder. I thought the Mini did not work for me but it was on 10bit color mode so changing that to 8bit seemed to fix it. It's annoying some apps trigger something for me.
thorpee in BetterDisplay. Try switching resolution, toggling hidpi and enabling color profile support in settings and changing it back and forth. If that doesn't help see if there are login items for premiere that could be disabled. You could also try to cover the light sensor next to the webcam to see if that improves it, as that chabge the screen. I'm pretty certain things switch on the macbook, but it's quite hard to pinpoint what is actually happening.
- Edited
async Have you checked this?
https://github.com/belvederef/visual-snow-relief-overlay/releases/tag/v1.6.1
It is not that heavy on the CPU, but the most annoying thing for me is that it is seen as a "space" in Mission Control.
It helped me in the past, but it's not a true solution. If you find a way to incorporate your overlay, let me know.
- Edited
anon123 I'll check it out. I have visual snow, but it's pretty mild. Noise pattern definitely does something. The plan is to package the different overlays in some app where others can experiment as well.
I've tried a lot of things and I'm sure there are modifications that can be done that either provide relief, or assist in some sort of adaptation. I usually use a shadow around the edge of the screen and feel that it helps quite a bit. I've also experimented with what changes prevents visual distortions from happening, as it is easily testable to see when patterns are blinking and not. Diagonal patterns can also be used to remove botching thar is present on Mac.
Tbh after spending a lot of time with overlays on scaled resolutions on Mac I'm getting the feel that it's the closest you can get to living inside a compressed jpg hellhole. Just try the inverted framebuffer in BetterDisplay if anyone wants to see just how much shit there is. Currently I only do retina or native scaling, but need to get a 220 ppi monitor to make it better.
Apart from this there is a lot of things that can give pixel inversion flicker. Especially when not using scaled resolutions that smooths out things. Overlays can mitigate some of this.
I do need to find a way to do more advanced overlays tho, as there is no reason you couldn't do shaders that doesn't shade images, or just affects pure whites. Mening you could make everything feel like paper without breaking images, or just pattern all white backgrounds.
I also think there is benefit to be gained from shifting whites and blacks differently. For example adjusting the gamma curve so blacks are more blue and whites are more red, or applying different patterns on them.
I've been pondering a bit around adaptation after seeing this where they have shown adaptations for months after minutes of exposure. https://michaelbach.de/ot/col-McCollough/
This is also super interesting in relation to high gamut colors on high contrast displays. At a certain threshold you get the depth effect that might be contributing. They also note something about the size of pixels and the wavelengths for it to happen. Might be one more clue as to why certain screens work better. https://www.frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2015.00337/full
- Edited
async Just try the inverted framebuffer in BetterDisplay if anyone wants to see just how much shit there is
Strangely, I've noticed that using the inverted grayscale framebuffer option (specifically the BetterDisplay one, not the normal Mac Invert Colors option) helps reduce strain somewhat on M1 Air when running at a scaled resolution like 1440x900 (yes, I do mean the extremely "compressed JPEG" ones you mentioned). This is probably because -- although all of the post-processing and sharpening is still there -- everything including the post-processing (and even the black bars in non-native aspect ratio resolutions) gets inverted and at least some of it is converted to monochrome which probably reduces the effects of some of the processing. It doesn't "fix" the M1 Air, and I still vastly prefer the 2016 13" MBP which is very usable for me, but it definitely reduces my strain by a small but noticeable amount. The non-monochrome inverted framebuffer also seems to improve something too but the grayscale one works even better.
After using the framebuffer invert, you can use an invert colors browser extension to make your browser look "normal". BTW this is also the closest you can get to the iOS "double invert" technique on a Mac. This will actually highlight the compression artifacts even more -- this directly and visually exposes what the Mac is "secretly" doing to the screen.
Interesting semi-related find that I can't test at the moment: search "scaler" in IORegistryExplorer, and within one of the results, you can actually find a property called "DisableDeringing" that for some reason is one of the few display-related flags that's elsewhere instead of within the usual IOMobileFramebuffer flags. Not sure what this does but I wonder if it affects the artifacts in some way.
- Edited
Check these out.
Proof it has been used by Samsung since 2011 + a real-time algorithm that splits every frame of display input into foreground, middle, and background layers and then applies color fringing to create a false 3D effect
Let me know if you want the PDF if it isn't loading for you.
Proof that a very similar real-time algorithm has been used by Intel (!!)
https://jov.arvojournals.org/article.aspx?articleid=2749907
This may explain issues with Intel integrated graphics.
It also may have been exactly what was implemented with this 2013 driver update on a ThinkPad x220.
Proof that it affects text readability
https://core.ac.uk/download/pdf/81129309.pdf
I was going to post about this soon…
I believe that this is the #1 ISSUE with modern displays, much worse than either PWM or temporal dithering.
I do get "some" strain from very old (pre-2010) devices that use PWM, but — unlike modern devices — never in a way that makes the screen feel blurry or 3D, causes extreme brain fog, or impacts my reading ability.
And on the few "very comfortable" modern devices I've managed to find, all of them seem to have little to no false 3D effect, and I cannot easily see color fringing (except for the standard RGB pixel structure itself).
Finally, on every modern screen I find either uncomfortable or unusable, I always see extra, very noticeable (to me) red and blue color fringing, even around pure black and white sharp pixel lines, and it remains even if I set the screen to a software "grayscale mode". This fringing shows up on everything — not just subpixel text — and it will remain even if subpixel text is disabled.
All post-2011 Apple devices are the worst offenders (except for specifically my 2016 13" MacBook Pro, which is fine for whatever reason and looks very flat to me) but I've also seen it on multiple Android devices (both LCD and OLED) and Windows laptops.
There is also most likely equivalent implementations in software -- on Windows 11, which is much worse for me than Windows 10, I see even more obvious color fringing. On some laptops, both Windows 1809 and 22H2 have issues, but 22H2 makes it even worse than it already was on 1809.
Until something is done about this, the only way to "consistently" get around it (i.e. without the trial-and-error of scavenging for the rare modern devices that work), is to find some kind of way to use a truly monochrome display without RGB subpixels like a monochrome LCD or e-ink.
Or for a less effective but still extremely helpful workaround you can use strong monochrome color filter glasses (I have pure red glasses that eliminate almost all colors except red, and they consistently make many unusable screens at least "tolerable" to me and sometimes even better than that in some cases. FYI, the "monochrome filter glasses" that work for me are very different from the more common "blue light" glasses that only tint things orange and keep colors -- those ones don't work for me at all.)
Now I'm very sure that the reason why reducing displays to physically monochrome works so well is that it significantly reduces the possibility that this effect can be created.
- Edited
DisplaysShouldNotBeTVs This is super interesting. I'll review everything at home.
I posted some things about the scaler at some point. Searched a lot for somewhere to config it. I think things like surface compression, max framebuffer layers etc are involved in when it decides to do excessive compression.
One thing I really would like to see is for someone with a capture card to capture the same screen with both a screenshot and with the capture card.
DisplaysShouldNotBeTVs These values can be changed with this too RehabMan/OS-X-ioio: Command-line utility for setting ioreg properties via IOService::SetProperties (github.com)
ioio -s AppleM2ScalerCSCDriver DisableDeRinging false
ioio -s AppleM2ScalerCSCDriver DisableSIMDOptimizations false
ioio -s AppleM2ScalerCSCDriver EnableFiltersNoRewriteMode true
Didn't really see any changes when switching around things. But there might be caching of rendered tiles and similar going on at the same time. If I remember correctly I had some cases when playing around where I could see the cached ones being replaces gradually.
I tried to modify ioio at some point to allow changing dictionary values, but couldn't get it to work. If someone with more Xcode / MacOS experience wants to take at shot at tormenting ChatGPT until that works feel free. There are many hierarchical / dictionary values that no one tried changing.
- Edited
async Yes, I use a low level API for that. There are actually several APIs to manage Presets, including a high level one that Apple made for System Settings - it's a bit clumsy but otherwise works fine. If you are interested, I can send you the details, but you'll need to do heavy coding to utilize it.
FNP7 Thank you! Many of the techniques should work on iOS/iPadOS as well, but did not experiment with it.
Donux Yes, you can use terminal commands. Download betterdisplaycli
or just use the binary inside the app bundle. Example:
betterdisplaycli set -n=displayname -quantization=0.5
Here is more help: https://github.com/waydabber/BetterDisplay/wiki/Integration-features,-CLI
async I was planning to add some shader effects to BetterDisplay. Right now if Metal overlays are enabled in the app (a bit difficult to make that happen now as you need to change some awkward settings) you can do some simple color adjustments with it only (temperature, RGB control etc) - I primarily added this to support a night shift like effect on non-native displays (on which gamma table adjustments don't work) but did not expand the featureset much. So much to do…
- Edited
Here is more proof that Intel is interested in the false 3D effect
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6126933/
"Computer-graphics engineers and vision scientists often wish to create display images that reproduce such depth-dependent blur, but their methods are incorrect. […] We found that accommodation is not driven at all by conventional rendering methods, but that it is driven surprisingly quickly and accurately by our method with defocus and chromatic aberration incorporated."
Funded by NSF Research Grant BCS-1734677 and by Corporate University Research, Intel Labs
Here are a bunch of highlights from the above article
"Example stimuli generated using our rendering method. The left, middle, and right images are simulated to be farther, at, and nearer than current focus"
"LCA were as effective at driving accommodation as real changes in focal distance"
"our rendering technique provides a useful signal for accommodation"
"spherical aberration can in principle provide directional information to guide accommodation"
"We are currently developing methods that enable real-time updating and are measuring how effectively they can be used to drive accommodation and create realistic depth appearance"
"The color effects associated with LCA are generally not perceived […] accommodation and depth perception results are good evidence that LCA contributes to visual function even though the resulting color fringes are not necessarily consciously perceived."
(^ this is not true LOL I can see the color fringing so easily)
This paper is specifically about creating the effect by modifying existing 2D images
"In an earlier paper, we describe how to do this for complex 3D scenes using computer graphics (Cholewiak et al., 2017). Here we describe the general problem of which blur kernels are most appropriate for creating realistic retinal images. And then we describe a method for implementing realistic blur for 2 D scenes"
They know that this can cause depth conflicts
"Our experiment presented a cue conflict in which LCA indicated that a response was required while the other cues indicated that none was needed."
They know this can simulate something floating in front of the screen
"When we simulate that the object is nearer than current focus (positive defocus), blue is displayed sharper than green which is displayed sharper than red. Our results and those of Cholewiak et al. (2017) show that presenting such a stimulus causes the viewer's eye to accommodate nearer such that it becomes focused in front of the screen"
They know that it creates a blurry image, and that people can notice this
"Instead of maximizing image sharpness as defined by those metrics, accommodative responses to simulated changes in focal distance (specifically, Defocus + LCA) actually reduce sharpness"
"an accommodative response in the Defocus + LCA condition necessarily causes more blur in the retinal image. Subjects actually noticed this, but nonetheless made responses in the direction specified by Defocus + LCA"
DisplaysShouldNotBeTVs Really nice find. I'm certain there are important things to be found here. The list of random shit they are doing instead of actually taking a grid of colored pixels and displaying them is just mind blowing.
Some random observations.
I've had a gradient overlay on my Mac with a weak red color near the edges, and blue near the middle for a few days, and it seems to make everything more pleasant. It almost makes the screen feel a bit curved.
Similar experiments can be carried out with slight color shifts, like making blacks more red, and whites more blue to offsett effects like the text jumping out of the page. I for one can't stand orange looking whites. This can be done with holding the option button when creating a color profile thru the build in MacOS solution, to a lesser extent with color table manipulation in BetterDisplay, or thru the app Gamma Control.
I have not found any overlays or patterns that affects chromostereopsis in any meaningful way without being too invasive, but I have however seen examples where tormening the color profiles and color table adjustments can create colored fringes that makes everything seem way more flat.
I advice everyone to actually look up some chromostereopsis image on an OLED screen and see how extreme the 3D effect is with oversaturated colors. I've had one of those image as my wallpaper for a few days now, and it seems like the effect is significantly reduced, so it might be possible to trigger some adaptation. Also it might be required to have enough stimuli to do any kind of adaptation.
Learning to suppress task-irrelevant visual stimuli with attention - ScienceDirect
- Edited
DisplaysShouldNotBeTVs is there a way to turn this off? Is it mentioned anywhere when this stuff was added to drivers?
Just curious does anyone know if nvidia or amd does this sort of thing ?
@waydabber is there a way to make an additional app or some sort of to be open source or so, to let us install it on working machines to switch between 8/10bit color mode? I think it will help a lot of people here. Currently i'm not able to install betterdisplay for some reasons on my working laptop.
- Edited
async I advice everyone to actually look up some chromostereopsis image on an OLED screen and see how extreme the 3D effect is with oversaturated colors
The really interesting part is that the chromostereopsis images even "temporarily" affect typically safe displays, which is what really nailed this down for me as possibly THE core issue.
For example, my 2016 Xiaomi Redmi 3 with LineageOS 18.1, which is one of the most comfortable mobile devices I own, typically looks very flat and is 100% usable for me.
(The only phone I have with a screen that looks even flatter is the 2014 Nokia X on Android 4.3, which is sooooo comfortable but too slow to really do anything with aside from typing notes)
However, the moment I put certain chromeostereopsis patterns on the Redmi 3 screen, the false 3D effect suddenly appears out of nowhere, and the pattern creates the same exact "vibrating and shaking" + "strain when trying to focus" feeling that I get from modern devices, especially on the red areas of the pattern.
Side note:
The first time I EVER experienced a device with a false 3D effect (and the corresponding eyestrain and brain fog) was in 2015 — it was the GPD XD Android gaming handheld, it ran Android 4.4, although had more obscure specs such as a Rockchip CPU.
The moment I started playing games on it I noticed that the game "looked 3D" immediately which confused me so much. It was the first time I ever felt "depth" outside of a true stereoscopic 3D screen. However I kind of brushed it off initially, because I had no idea back then if it was from the screen or if it was "just me".
Although my other devices at the time like my old laptop, luckily, were (and remain) safe — even then, something was very off about that console (but I wasn't yet aware that it was connected to the 3D effect).
I had difficulty playing games and following what was going on, and sometimes I felt a light "seasickness" after playing. I was otherwise skilled at video games back then, so I wondered why I never completed any games on that system. Now I know why.
I also vividly remember noticing red artifacts/color fringing next to all white elements on the handheld's screen, which 100% lines up with my current theory.
Edit 9/10/2024: I was incorrect that 2015 was the "first time" I experienced it. The first device I had the depth perception issue was a Late 2008 MacBook Pro I bought in 2012 (although to a milder degree)… I still have that laptop today and it still has that issue, on both macOS and Linux, it just clicked in my memory that I actually do remember it looking like that back then. I have evidence.. one image I found in the downloads folder from 2014, I actually remember saving because it "looked 3D" on that screen
Weridly, a 2009 MacBook Pro I just bought recently (that actually has more PWM than the 2008) is surprisingly fine in Linux, unlike the 2008.
DisplaysShouldNotBeTVs Interesting. As I noted further up here. I did the double invert trick that significantly reduces high gamut colors (and possibly other things on iPhone 14 Pro Max. I switched it off for 1-2 days and noticed this intense red colors on lots of other monitors again. Which is uncommon these days. I was testing the LG woled at some point so it could have been influenced by that as well, but nevertheless interesting.
I also noted this experience where color filters on the same mobile caused a significanat shift in how other non screen colors looked. Tbh the entire phone is cursed and something is going on.
I don't necessarily think exposure is always bad, but I guess in some cases it bypasses or messes with the proper adaptation mechanisms. Possibly when the effects are subtle or high frequency. Would love to hear what happens if someone goes all in to use high gamut wallpapers and 3d effects for a few days, if someone wants to risk it. I put one of these 3d ones on my iPhone (with double invert) and have noticed that I experience the 3d effect less.
One point to note as well is that with shitty glasses or bad fitting contact lenses you'll get chromatic aberration that can look a bit similar to fringing, and that probably doesn't help too much. This also happens more with too high of a prescription strength. White text on a black oled background would probably be the worst one here.
Mostly all my issues started at a time where I wore too high prescription contact lenses with a green ting for screens (Acuvue Max). I also switched from the touchbar mac to my M1 Max at roughly the same time. But then again, there has been more and more led bulbs, oled tvs and other things, so it is always hard to pinpoint.