Another interesting thing, for Dade, dithering for Sobol

Discussion related to the Engine functionality, implementations and API.
Post Reply
juangea
Donor
Posts: 107
Joined: Thu Jan 02, 2020 6:23 pm

Another interesting thing, for Dade, dithering for Sobol

Post by juangea » Thu Jan 30, 2020 6:06 pm

I'm back with another interesting topic that can lead to the need of less samples per render.

This is Dithering for the Sobol sampler, it could be something kind of "easy" to implement (please keep in mind that I use the "easy" term very carefully because I'm not sure if it's actually "easy") but it can benefit A LOT the render results and it could help A LOT also with denoising quality.

I will present here an example, in this case and for the shake of making the effect more visible I will be also using Scramble Distance in Cycles, but the effects of dithering are good without scrambel too.

Here I present two pictures, the first one is the standard Sobol pattern of cycles at 500 samples:
NO_Dithering_500Samples.jpg
The second one is the exact same scene with the exact same amount of samples, just that it renders 3 seconds faster and delivers a far better quality under the same amount of samples:
With_Dithering_500Samples.jpg
Now the better sobol pattern ends up giving less visible noise (or subjective noise) and a far better picture to look at.

Also the denoiser behaves way better, here is the example (There is a bit JPG compression):
Denoise_Comparison.jpg
Here are both denoised pictures:

NO Dither version:
NO_Dithering_Denoised.jpg
DIther version:
With_Dithering_Denoised.jpg
Regarding the technical side of things here is a paper from Solid Angle about this, I think this is the one used in Cycles:

https://www.arnoldrenderer.com/research ... stract.pdf

And also here is the patch from Lukas Stockner with the implementation in Cycles, it may be useful since I read in the wiki the sobol implementation is coming from the Cycles Sobol implementation :)

(OK, I'll post the patch later, it seems blender.org is under DoS attack for some reason :S )

I hope you see the benefits, and what it's more important, I hope it's easy to implement and we can get big improvement with low effort :)

juangea
Donor
Posts: 107
Joined: Thu Jan 02, 2020 6:23 pm

Re: Another interesting thing, for Dade, dithering for Sobol

Post by juangea » Fri Feb 07, 2020 2:56 pm

And LordOdin found this paper that is pretty recent that look MUCH more interesting even!

https://hal.archives-ouvertes.fr/hal-02 ... slides.pdf

This could accelerate rendering quite a lot!

User avatar
Dade
Developer
Posts: 3889
Joined: Mon Dec 04, 2017 8:36 pm
Location: Italy

Re: Another interesting thing, for Dade, dithering for Sobol

Post by Dade » Fri Feb 07, 2020 3:22 pm

It is something I have definitely to look into but I will after I have fished to work on the new OpenCL Textures (already done) and Material (in progress) evaluation code to totally remove the need to re-compile GPU kernels: https://github.com/LuxCoreRender/LuxCor ... erial_eval
Support LuxCoreRender project with salts and bounties

kintuX
Posts: 524
Joined: Wed Jan 10, 2018 2:37 am

Re: Another interesting thing, for Dade, dithering for Sobol

Post by kintuX » Fri Feb 07, 2020 3:43 pm

... and to keep things organized, "CGI tech news" is where we post such beneficial stuff collected in one place ;)

juangea
Donor
Posts: 107
Joined: Thu Jan 02, 2020 6:23 pm

Re: Another interesting thing, for Dade, dithering for Sobol

Post by juangea » Fri Feb 07, 2020 4:34 pm

Noted! Next things will end up in that thread :)

Thanks.

Post Reply