04.01.2023, 23:38
Hi,
unfortunately, the only mode of operation with fft3dgpu that produces almost no banding is mode 2 with precision 0 (and a border of 2-4 and best wintype=2 and sharpen turned off).
As you know, precision=0 does not work properly with 4K stuff in any mode and creates grid artefacts that destroy the material. Therefore you have to live with the banding of precision=1 / 2, especially if you use higher sigma values than 1.5.
However, I have found a quite good solution to the problem. Apparently, the 32 bit floats only seem to handle 10 bit input reasonably, so a simple prefix "ConvertBits(10)" is enough to fight the banding. This works in mode 1 as well as in mode 2.
Even if you then convert back to 8 bit, the banding is reduced, if you encode with 10 bit it is practically eradicated and you achieve unimagined quality and significantly improved compressibility, even if you use low sigma values like 1.3, which hardly causes any loss of image sharpness.
With 4K material, the speed loss is only about 10-15% compared to precision=2 and is therefore tolerable. With material up to WQHD (1440p) it is somewhat higher, but there, as I said, mode=2 works with precision=0, which also hardly produces any banding.
1.) I think a "HQ 10 bit 4K filtering" or similar option, that explains the problem with grid artefacts and banding, would be a good thing?!?
2.) Also an option to set prefetch(1,2) - prefetch(1,7) after the FTFT3DGPU call would boost speed significantly in many use cases, for example when prefetch is set to 2-5 at the end of the script.
3.) Also bw + bh=64 would be the better default setting for the banding free mode 2. Increases speed by almost 100% for me at 1080p and 500% at 4K with ConvertBits(10)! Generally mode 1+2 seem to benefit from bw+bh=64. Maybe this could be realized with an "auto" setting which switches to bw + bh=64 when >WQHD stuff is detected or generally if mode 2 is active (it doesn't necessarily have to be the default setting).
With the explained tricks, FFT3DGPU achieves at least the quality of KNLMeansCL with significantly higher speed and better compressibility of the video material. It would be a shame if the vast majority of users were deprived of this!
unfortunately, the only mode of operation with fft3dgpu that produces almost no banding is mode 2 with precision 0 (and a border of 2-4 and best wintype=2 and sharpen turned off).
As you know, precision=0 does not work properly with 4K stuff in any mode and creates grid artefacts that destroy the material. Therefore you have to live with the banding of precision=1 / 2, especially if you use higher sigma values than 1.5.
However, I have found a quite good solution to the problem. Apparently, the 32 bit floats only seem to handle 10 bit input reasonably, so a simple prefix "ConvertBits(10)" is enough to fight the banding. This works in mode 1 as well as in mode 2.
Even if you then convert back to 8 bit, the banding is reduced, if you encode with 10 bit it is practically eradicated and you achieve unimagined quality and significantly improved compressibility, even if you use low sigma values like 1.3, which hardly causes any loss of image sharpness.
With 4K material, the speed loss is only about 10-15% compared to precision=2 and is therefore tolerable. With material up to WQHD (1440p) it is somewhat higher, but there, as I said, mode=2 works with precision=0, which also hardly produces any banding.
1.) I think a "HQ 10 bit 4K filtering" or similar option, that explains the problem with grid artefacts and banding, would be a good thing?!?
2.) Also an option to set prefetch(1,2) - prefetch(1,7) after the FTFT3DGPU call would boost speed significantly in many use cases, for example when prefetch is set to 2-5 at the end of the script.
3.) Also bw + bh=64 would be the better default setting for the banding free mode 2. Increases speed by almost 100% for me at 1080p and 500% at 4K with ConvertBits(10)! Generally mode 1+2 seem to benefit from bw+bh=64. Maybe this could be realized with an "auto" setting which switches to bw + bh=64 when >WQHD stuff is detected or generally if mode 2 is active (it doesn't necessarily have to be the default setting).
With the explained tricks, FFT3DGPU achieves at least the quality of KNLMeansCL with significantly higher speed and better compressibility of the video material. It would be a shame if the vast majority of users were deprived of this!