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.

    4 days later
    a month later

    Fantastic work here @Seagull, thank you for all your experimentations. I've got a GTX770 sitting here that I was going to put in a machine - if I were to send it to you would that be helpful for running some tests? Very happy to do so.

      si_edgey

      You are very welcome. Thanks for the offer of the card, but there isn't anything else I can think of to test for. I've since moved on to biohacking!

        Seagull Thanks for the offer of the card, but there isn't anything else I can think of to test for.

        I guess I (selfishly?!) would love to know if there's a colour profile for this card that doesn't use dithering, as it appears that every card you have tested has been different. It would be a great to have a database of non-dithering settings for different Nvidia cards. 😀

        Seagull I've since moved on to biohacking!

        Very curious to hear about this. Keep up the good work and keep us in the loop with your experiments!

          si_edgey

          If you want to buy your own card I can give you my software so you can do these tests yourself.

          Funny you should say that - I've just bought an ATEM Mini Pro, and it can capture direct to USB which is quite handy. I'd need to look as to whether it applies any kind of processing but it might even be interesting to test if it can be used to negate the dithering by acting as an active HDMI processor between the computer and the monitor.

          If you're able to provide your software I'd really appreciate it and could continue to post dithering tests of different cards as and when I get my hands on them. I'd be tempted even to order cards from Amazon, test them and return them and post the results to try to find a 'safe' list.

            si_edgey If you're able to provide your software I'd really appreciate it and could continue to post dithering tests of different cards as and when I get my hands on them. I'd be tempted even to order cards from Amazon, test them and return them and post the results to try to find a 'safe' list.

            @Slacor and I have "our" project too

            Setup isn't exactly trivial because it was a) developed on Linux, b) requires a Python runtime, OpenCV and parts of ffmpeg

            https://github.com/ledstrain/videodiff

            Expect some more features in the future

              si_edgey

              How programming literate are you? My software works, but its written badly, and requires editing the source code to change anything (file name, frame to start and end on etc). I can either give you the code, or the whole MS Visual Studio project file. The later might be easier to work with if you are unsure. The graphs are made in Matlab, which I can give you the scripts for aswell.

              Real time removal of dithering is an interesting concept. Thinking about it now, the easiest way to do it will be to drop the colour depth. That way most dithering will be lost as 2/256 blue and 3/256 blue will both become say 0/16 blue. Edge cases like 15/256 and 16/256 that could flicker between 0/16 and 1/16 could be filtered out with a few frames held back to say look for scenarios where: frame 1 = 0/16; frame 2 = 1/16; frame 3 = 0/16, to change frame 2 to 0/16. The latter could be quite computationally demanding though, can't say if you could do that in real time.

                Seagull How programming literate are you? My software works, but its written badly, and requires editing the source code to change anything (file name, frame to start and end on etc). I can either give you the code, or the whole MS Visual Studio project file. The later might be easier to work with if you are unsure. The graphs are made in Matlab, which I can give you the scripts for aswell.

                Why not just gather everything together and post it on GitHub? If there's anything interesting there either myself or Slacor can look into integrating it to "our" project and give you credit.

                  Seagull Real time removal of dithering is an interesting concept. Thinking about it now, the easiest way to do it will be to drop the colour depth. That way most dithering will be lost as 2/256 blue and 3/256 blue will both become say 0/16 blue. Edge cases like 15/256 and 16/256 that could flicker between 0/16 and 1/16 could be filtered out with a few frames held back to say look for scenarios where: frame 1 = 0/16; frame 2 = 1/16; frame 3 = 0/16, to change frame 2 to 0/16. The latter could be quite computationally demanding though, can't say if you could do that in real time.

                  I'm on a laptop with the latest ditherig installed. On spatial (default) my desktop background gradients are smooth, immediately when switching to 'Disable all dithering functions' I can see quite visible banding. So ditherig is working in real time. This I imagine is on the driver level but I am not sure if the actual physical output of a GPU adheres to the same rules. It seems as if the video output on modern devices is hard-wired with some dithering algorithm.

                    JTL

                    That would necessitate learning how to git. There is nothing at all interesting in there, it just decodes with OpenCV, compares the states of each pixel with the prior frame looking for changes, and writes a CSV file for Matlab to graph.

                    • JTL replied to this.

                      diop ditherig is working in real time

                      This is different. Ditherig is simply telling the GPU to not dither in the first place, rather than removing dithering that's already been applied.

                      Seagull

                      Seagull That would necessitate learning how to git. There is nothing at all interesting in there, it just decodes with OpenCV, compares the states of each pixel with the prior frame looking for changes, and writes a CSV file for Matlab to graph.

                      Ah okay. I could probably write a custom implementation of that myself.

                      I was more interested in seeing it to make sure I replicate it precisely, even if it was trivial.

                      Seagull That would necessitate learning how to git

                      I could find you a nice guide or walk you through it if you'd like

                      Also good to know for Wiki stuff, etc.

                      Seagull

                      How programming literate are you? My software works, but its written badly, and requires editing the source code to change anything (file name, frame to start and end on etc). I can either give you the code, or the whole MS Visual Studio project file. The later might be easier to work with if you are unsure. The graphs are made in Matlab, which I can give you the scripts for aswell.

                      I used to do some programming when I was doing games development so I'm sure I'd be able to pick my way through it, although the simpler the better please - if the Visual Studio file is the simplest for me to get my head around that would be great, along with Matlab scripts - thank you. 😀

                      JTL @Slacor and I have "our" project too

                      Any progress on videodiff?

                      • JTL replied to this.

                        si_edgey Any progress on videodiff?

                        Been busy. such is life 😛

                        a month later

                        An update:

                        Tested my work laptop's HDMI for temporal dithering and it's fine.

                        Its a Dell Lattitude 5410 with a 10th gen i5.

                        Easiest way I found around this is simply disabling the device. Graphics for most casual laptop usage is completely fine. Only downside is, you can't connect up a second monitor via HDMI (have to use USB/USB-c)

                        dev