I've been looking into why I can tolerate temporal dithering on monitors, but not GPUs. Using samples taken using my capture card I have analysed how many frames it takes a pixel to change.

As with all my capture samples, I captured the windows desktop only.

To do this, I decode the first frame of my captured footage and turn it into raw RGB values. I then get the next frame, compare it with the original, and the next frame and compare and so on. I record how many frames it takes for each pixel of the first frame to change. Lets call this Time Till Change (TTC).

The image below shows a small selection of the TTCs. It does not look very random, particularly that big blob of 1s and 2s on the bottom half.

I found that dithering seems to happen in blobs on the screen. Some blobs didn't even dither over 90 frames. A TTC of -1 means no change in colour value.

Below is a frequency histogram of the TTCs obtained for the above. If the TTCs were truly random there would be a smooth curve. The peaks and troughs show that enough in aggregate, the dithering method is not great.

The temporal dithering produced by GPUs is not particularly random. There are observable patterns. I have no way of testing how the dithering of a monitor works, but for now I presume they do a better job of producing a random dithering field and that is why they affects me less.

I repeated this test on both an RX570 and a GTX660 and saw similar patterns.

[Edited as a I found a mistake in the image, will probably find a few more if I look long enough]

Update 1

When doing the original testing I noticed a lot of the TTCs seemed to correlate with particular colours. To explore if this was the case I captured the grey colour palette below using a GTX660. The image was displayed using google chrome.

The resulting TTCs confirmed my suspicion that the temporal dithering frequency does depend on the colours being displayed. The taller the spike, the larger the TTC, ie the more frames it took for the pixel to change colour (dither). The results are fascinating. Some of the colours, including the background colour did not dither at all (tested for 300frames). Other colours had quite long TTCs, some quite short. The Z part of the labels on the graph show the TTC for that pixel. In simple terms: some colours aren't being temporally dithered, some are dithering quickly and consistently, others are dithering over a wide range of frames.

Next I looked at spatial dithering - where the colour values do not change with time - but are still dithered. the graph below shows the Red sub-pixel values for the colour palette. Z-labels show the actual value for the pixel selected. It shows the colours which were not temporally dithered, are not spatially dithered either.

I use my GTX660 everyday without any discomfort, its the only modern external GPU I can use without issue. I don't think its special, I think I have simply adapted to it over 7 years of use. Some applications do cause me pain when using it though, namely the updated steam library interface and the odd website. I think whats occurring here is the colour palettes in use are producing different dithering frequencies that I'm not used to it.

This could also explain why colour settings improve pain for some people. I will explore this next.

Update 2

I changed the colour setting for the GTX660 from default to the other options available: RGB Full, RGB Limited, and YCC444. That screen should look familiar to windows Nvidia users.

YCC444 and RGB Limited produced no change. Same TTCs, same patterns. RGB Full, was a different matter entirely. All the dark colours disappeared. I viewed it on my monitor to check it wasn't the capture card messing up, still no dark colours. I think this is what's called Black Crush? but I'm not at all familiar with it.

Stranger still? No dithering on RGB Full, none at all. Obviously this requires further investigation. I only captured the grey palette with RGB Full, so I'll be trying out more normal images.

Update 3

Tried out some other cards. First the GTX550. It used temporal dithering on both full and limited RGB. But neither used a random algorithm. TTCs were all between 1 and 3.

Next I tried an RX570. Its dithering was a bit more random than the GTX660, but it was still affected by colour. Below is the TTCs for Limited RGB set to 8 bit, 1080interlaced - I couldn't get the RX570 to send 1080p to the capture card unfortunately. There were some differences when capturing 10 bit, but I think I have posted enough graphs in this thread already.

When set to YCC422 there was no dithering at all.

    Seagull Good work - this could provide some interesting results if you are able to do side by side comparisons of dithering on a 'good' setup and a 'bad' setup using the same hardware.

    Since I have a laptop here that I can use for 8 hours a day on Windows 10 1511 with the graphics adapters disabled, but not for more than 30 minutes on build 1909 in any configuration, my capture data could be very helpful to analyse?

    Did you capture this using an external capture card on a separate machine? I'm guessing screen capture software wouldn't work even if it's 120fps?

      si_edgey

      Its all captured using an a capture card in a second PC, you are right, screen capture software don't work for GPU dithering.

      Windows is tricky, I've not been able to find any temporal dithering which I can attribute to windows. Whenever I test intel integrated GPUs, I find no temporal dithering. If windows was using temporal dithering, I would always see some temporal dithering, regardless of which GPU I test. I believe people when they say they have a problem with windows, but either its not temporal dithering, or its very hardware dependent. All my testing is done on desktop hardware, so that could be a factor.

        Seagull Could I ask what capture card you're using? If it's not ridiculously expensive I could pick up the same card, use the same settings and send you my laptop captures as I have a desktop PC here I can use for recording?

        That's interesting that you're not finding any temporal dithering in Windows - perhaps it's exclusively an Intel mobile GPU issue?

          Added an update to the original post exploring colour palettes.

          Update 2 explores colour settings.

          • KM replied to this.

            KM

            I must have missed that or I'd have tried it sooner. I have an AMD RX570 and a GTX550 here to try next. Unfortunately I have no newer Nvidia cards to hand.

            Would be great to know if Chrome or Firefox do something while Full RGB is on. As the current versions give some of us eye strain on known-good cards.

              KM

              On the GTX 660, RGB Full, no dithering with chrome open.

              Last Update (I think) trying this stuff out with different cards.

                tfouto

                I haven't tried it out yet, but I expect it to be fine. If you can, it'll be in the colour settings for your gpu.

                  Seagull I tried on Windows 10 1909 yesterday, and frankly, it seemed no different, but i just used for a couple minutes. My daily pc is other Windows 8.1, which is fine. I think there is subpixel rendering on Windows 10. Because fonts seem fuzzy, and sometimes i find difficult to focus on. I also think there is something different about color temperature or color space that changed with latest updates.

                    tfouto No subpixel font smoothing in Windows 10. It's greyscale anti-aliasing.

                    You know, it's funny.. my work managed laptop is a T480 on windows 10 build 1803. Funny thing is, I also have the usb dock it came with, so usb-c to the dock, displayport output from the dock to an old HP displayport to DVI active adapter to my old CCFL monitor, and the backlight looks more stable than on my regular PC which is Win 7, mini-displayport out to active vga adapter to same monitor. The image is fine and I'm confident you all can use it, but there's this subtle background shimmer that isn't there with the T480 setup as-is. One of these days I should look for a mini-displayport to displayport adapter, so I can plug in the same HP to DVI and see how it looks on the Win 7 machine.

                    I was just now playing with a laptop from 2005, was a good one back then. Amazing how fast it is with a SSD drive in it, even after all these years. Anyway the hardware isn't that healthy anymore unfortunately. The screen isn't that good today. There's this shimmer or fuzz that's hard to quantify, almost a snowy moire effect. I think it might actually be the backlight beginning to fail because in one corner of the screen there's a crack (not on the glass, but behind it) from someone having dropped or crushed it. CCFLs don't last forever unfortunately.

                    I'm going to slap OpenBSD on the antique laptop tomorrow probably and see how it compares to XP and Linux which I've already viewed on it.

                    Seagull I changed the colour setting for the GTX660 from default to the other options available: RGB Full, RGB Limited, and YCC444. That screen should look familiar to windows Nvidia users.

                    Very curious, on my GTX970, I only have Desktop Colour Depth on #3. My connection is DVI so perhaps that has something to do with it.

                      AgentX20

                      Just tried out a dvi cable (single link) and saw the same thing with my GTX660. With the AMD card I also recall colour setting options changing depending on the connection type.

                        a month later

                        Seagull Yep i can confirm it. For example, if i use the display port cable i can set 6 bit or 8 bit (there is a BIG difference because with the 8 bit my monitor use the FRC) with HDMI i don't have this option.

                        So, any conclusions to be drawn here? Is HDMI and a lower/different colour depth worth further trials?

                          AgentX20

                          All I can really say is that its worth trying different colour formats on the cards you have if you are having a problem. Whilst my gtx 660 does not dither on full RGB, I can't say if it will be the same for other Nvidia cards. But, I personally would be fairly confident that if I bought a new card I'd be able to find a setting that did not dither.

                          The other, and in my opinion, more important conclusion is that dithering frequency depends upon the colour being displayed. I think this is why people have problems when software updates or changes, steam and chrome for example. The software itself isn't dithering, but if the colours have been changed slightly that will affect how the GPU is dithering and might produce symptoms.

                          dev