Gradient-Domain Path Tracing for Cycles = FASTER RENDERING
I recently was going over Blender Cycles forums on why BiDir hasn't been implemented, when i stumbled upon a comment mentioning Gradient-Domain Path Tracing.
I went to do some research on it, and the improvements over traditional Path Tracing are HUGE. I think this would greatly improve rendering speed for cycles as a whole, and not cause any trouble with the materials and the like.
The basic explanation: instead of shooting rays randomly (a good portion of which would contribute nothing at all), it will focus samples on parts with a strong gradient. This gives amazing results as you can see from the preview image, but it is 2.5x slower per sample . But this does mean you get great results with WAY less samples, which heavily outweighs the 60% speed reduction. Pair this with the built-in denoiser and rendering should be allot faster per frame.
Below are some links and pictures detailing what it does, if you're interested in understanding the full thing.
Link 1: mediatech.aalto.fi/publications/graphics/GPT/
full paper: mediatech.aalto.fi/publications/graphics/GPT/kettunen2015siggraph_paper.pdf
Image 1: mediatech.aalto.fi/publications/graphics/GPT/teaser.png
Link 2: raytracey.blogspot.com/2015/05/brandnew-gpu-path-tracing-research-from.html
Image 2: 2.bp.blogspot.com/-4HX1W4AcHdU/VV6StVnkbtI/AAAAAAAAECM/-k1kcJt9Cu0/s400/gradientdomainPT.png
8 Comments
To awnser to your first question "why BiDir hasnt been implemented?" thats because undidirectionel path tracing is able to render more detailed and larger scenes compared to some other rendering algorithms. Also, it can keep rays relatively coherent to use an on-demand image cache, wich is quite dificult with bidirectional path tracing or even MLT (wich use BiDir as base algorithm but produce way too much artifacts).
But yeah, Gradient-Domain path tracing seems quite efficient for most situation so it would give awesome results with denoiser! Maybe asking to the E-Cycles team to try that would help the implementation
* @Shimoon * I read about why bidir couldn't be implemented a long time ago yeah. Which i don't mind since for crazy realistic stuff i default to Luxcore instantly. But GDPT would be great for an animation focused render engine like Cycles.
I saw this paper, and this shouldn't be too hard to add in blender, it's not a bidirectional path tracing, it's a normal path tracing with a couple of extra steps, and it would be awesome to see in practice :D
Any adaptive sampling and ray-building is welcome IMO! And yes, the same: I use Lux/Yafa for caustics, where Cycles (or any pathtracer) just sux.
Wouldn't this introduce bias? Not a big deal, but everybody claims to be unbiased and physically accurate these days.
* @Josephbburg * I'm not sure if it introduces bias or not, but that's not the point of this implementation.
* @Josephbburg * I read more into it, and even without changing the sample distribution (which would be creating bias), it yields many improvements in error prevention.
* @Julien * It sounds pretty cool. I like biased renders because I do NPR and it makes my life easier to cheat a little.