auto sub sampling optimisation based on per pass error rate, combined with adaptive per pixel sampling.
Would be cool if cycles could increase samples per ray type automatically based on the corresponding pass's noise amount.
For example if all of the noise is on the glossy pass (indirect/direct), then it could increase the samples of just the glossy rays.
If it could be combined with adaptive sampling also (per pixel error threshold), then Cycles would destroy everything.
Let the squeeky wheel get the oil, instead of throwing the whole barrel over the car.
6 Comments
halfway there!
this is crucial for blender. cycles doesnt have an error or noise limit. it needs one
The "branched" path tracing integrator (in the "Sampling" panel) is doing that kind of thing already, or I dont understand what you mean. The only thing is, its not automatic. You need to check what pass is noisy then manually set the sample count
* @Shimoon * yep, that's right. So my proposal is to have the engine look at each pixel, and then look at that pixel in each pass to determine how many samples of each ray type to give it based on the noise of individual passes.
Like if you have a child in school. You get a report from each subject once per year, if they're great at math but crap at english, then you give them extra help with english homework. The child is the pixel, the class is the render pass, their report is the noise level, and the parents help is the samples. At the moment if the child is crap at english but great at math, then the parent is helping twice as much with math as well as english.
* @tibbyninja * Yeah I see! But you still need to manually set a quality goal to achieve, because if not, Cycles wouldnt know when to stop increasing the sampling (path tracers can be quite dumb at sampling things they dont like, especially unbiased ones). How would you display that for the users?
I suspect Cycles to sample way more than its actually needed most of the time since its progressive based. The final precision/quality of a pixel is relative to the user itself.
* @Shimoon * In other engines you generally just set an acceptable noise threshold in the render settings. The sampler then stops sampling a pixel if it falls beneath that noise level. I'm not sure if the other engines do it on each pass, or just on the beauty, but if it could do it on all passes then that would be even more efficient.