Error Diffusion Dithering
- 1 madVR Dithering and Error Diffusion Overview
- 2 madVR Dithering configurations and settings for GTX 970
- 3 madvr Dithering Performance Results
- 4 madvr Dithering Algorithm Screenshot Comparisons: 1080p
- 5 More Pages
madVR Dithering and Error Diffusion Overview
MadVR has added a few new dithering options: Error Diffusion Option 1 and Error Diffusion Option 2. Both of these new options are somewhat demanding in terms of GPU usage, and require that your GPU is DirectX 11 compatible, such as a GTX 970, GTX 960, or any of the newer AMD GPUs.
If you stick with the ordered dithering or random dithering options you will save yourself about 4ms of render time per frame, which can be a lot of you have a weaker GPU. If you have a GTX 960 or GTX 970 or better then I highly recommend enabling Error Diffusion Option 1, or Error Diffusion Option 2. Both of these new dithering options for madVR perform about the same. I did notice that Option 2 was slightly faster, about 1ms per frame faster, so performance wise you won't notice much of a difference if you have a pretty powerful GPU.
After some back and forth testing, I've come to like Option 1 the most, it seems to produce less noise / patterns.
madVR Dithering configurations and settings for GTX 970
I tested both of the options under the main dither menu and there is very little performance gain / loss between Error Diffusion 1 and Error Diffusion 2, at least if you have a newer Nvidia GTX 970 or GTX 960. You must have a DX11 GPU to enable the highest two options, so if you have an older or not very powerful GPU, stick with either ordered or random dithering.
I chose to go with Error Diffusion Option 1 for Dithering, with both of the options enabled. Personally I like option 1 over option 2, but everyone has their own preferences, so choose whatever option looks better to you. In terms of performance, the fastest option is to use "None", Random, Ordered, Error Diffusion Option 2, and finally Error Diffusion Option 1. If you have a higher end GPU like the GTX 970, GTX 980, or any kind of SLI setup then you should go with Error Diffusion Option 1.
When playing a 1080p video I noticed that Error Diffusion Option 1 cost about 1ms more than Error Diffusion Option. By that I mean the average frame render time was about 6.10ms with option 1 enabled, and 5.10ms with option 2 enabled. While 1ms may not seem like a lot, it can mean the difference between dropped frames, or no dropped frames, so keep that in mind if you start to notice slow playback.
- use colored noise -- Not sure if this option really helps all that much. I currently have colored noise enabled. This option and the one below do not seem to impact performance at all, so if you like colored noise, go for it! You can also use Nvidia's Control Panel to reduce some video noise in addition to the options found here.
- change dither for every frame -- I like to have this enabled, but you should test out this option to see what you prefer.
madvr Dithering Performance Results
As you can see there is some difference in render times between the dithering settings. Error Diffusion Option 2 seemed to be slightly faster than Option 1, and I did not notice much difference in video quality so you might as well use option 2 if you have a somewhat modern GPU. If you don't have a very good GPU then I would probably go with either random dithering or ordered dithering, using no dithering won't give you much in terms of performance.
To gather this data I used madvr's built in stats (ctrl + j) and played a short 1080p video, waited about 1 minute and recorded the average render time per frame that was displayed. I am using a GTX 970 and I am using the following settings for madVR (other than the category I am testing of course).
|MadVR Scaling Option||MadVR Scaling Algorithm|
|chroma upscaling||BiCubic 75 with anti ringing filter enabled|
|image doubling||Always use NNEDI3 to double Luma resolution with 64 neurons|
|image upscaling||Lanczos 3 Taps with anti-ringing filter|
|image downscaling||Lanczos 3 Taps with anti-ringing filter|
|smooth motion||enable smooth motion only if...|
|dithering||Error Diffusion Option 2|
As you can see from the results above, there is a performance gap between the Error Diffusion Options and the other options such as ordered or random. There was basically no performance difference between no dithering, random dithering, and ordered dithering, so there's no point in disabling dithering entirely.
madvr Dithering Algorithm Screenshot Comparisons: 1080p
The image below was taken while playing a 1080p video with dithering set to "none" in the madVR configuration area for dithering. I used PotPlayer to play the video, but MPC-HC should yield similar performance and quality.
Ordered dithering seems to produce a sharper image, at least compared to random.
Random dithering seemed to be smoother, but less sharp than ordered dithering. Some people like sharper, some people prefer smoother, blurrier video, there's no right or wrong way to go. If you are using an older GPU, try and stick with either ordered or random dithering.
Error Diffusion Option 1 Dithering
It is kind of hard to tell the difference between Option 1 and Option 2, or even between ordered and random dithering. I did notice a slight improvement with Option 1 over ordered or random, but the differences are still somewhat subtle.
Error Diffusion Option 2 Dithering
- Official wikipedia page -- http://en.wikipedia.org/wiki/Error_diffusion