- Edited
So, any conclusions to be drawn here? Is HDMI and a lower/different colour depth worth further trials?
So, any conclusions to be drawn here? Is HDMI and a lower/different colour depth worth further trials?
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.
This is brilliant work!
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!
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
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.
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.
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.
Any progress on videodiff?
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)