Cycles Development Updates

Just to be clear, the possible improvements I mention at the end are just random ideas and might never happen (or might not give any benefit), so the patch is probably good to go without them for now.
I’ll still try to test them out when I find the time, of course :slight_smile:

22 Likes

Can you also revive your patch that eliminates noise production for the multiscatter ggx model?

The reason I ask is that thanks to the adaptive sampling from Stefen, any sampling improvements will produce an outsized amount of time saved.

1 Like

Yeah, that’s next. To be clear, that patch replaces the exact multiscatter GGX with another model that is only an approximation, but has significantly lower noise. Given that virtually nobody seems to use the “real” model due to the noise, I guess that’s a good tradeoff.

Also, update on the Dwivedi sampling:
Unfortunately I think the exit resampling is not applicable to the case of arbitrary geometry yet, so I don’t think that will be a part of the patch.

On the bright side, I got the backwards guiding working, which reduces noise in thin backlit objects. With the Dwivedi patch, they got noisier, now they’re back roughly to how they looked before while flat regions are still less noisy.
I’ll upload the new version soon, I just need to figure out which of the two versions to use (the difference is extremely small, so probably just the simpler one).
It makes the math even more complex, but the comments should hopefully explain what’s going on.

11 Likes

I must be among the only Cycles users then who uses the model instead of a workaround :smile:

I would still say it is a good tradeoff if the results don’t look wildly different from the exact model (ie. frosted glass still looking ‘correct’ unless the person was a physics major).

1 Like

Thanks for your work on Cycles, @lukasstockner97. I second what @Ace_Dragon stated. I always use Multiscatter GGX. The shading model is simply better than the regular GGX, especially with higher roughness. So unless the new approximation is virtually indistinguishable from the current implementation, I’d prefer the current Multiscatter GGX to be kept as an option as well please, thanks.

And I hope that someone also continues to sponsor Lukas’ works for internal denoiser.
Enhancements to avoid stains/patches and some GUI to work with Animation Denoising from the interface (currently we don’t even have documentation to work with animation denoising in cycles standalone). That would be great!

1 Like

FYI. Thanks to @lukasstockner97 a bug was fixed in the latest nightly build of 2.92 that finally makes tile stealing work as expected. Before tile stealing didn’t work when denoising was enabled - now it does. In my simple test scene the render time went down from 75s to 51s - that’s significant. The best speeds were achieved at a tile size of 64px (with and without CPU).

For one of my production scenes, the render time went from 16:43min down to 13:32min, which is a time reduction by 20%. Pretty good. Here the best tile size was 32px for both options.

CPU+GPU is a no-brainer from now on. Awesome.

9 Likes

Wow, the comparison pictures between the different SSS models are telling. Outstanding work Lukas. :o

1 Like

CUDA or OpenCL?

I’ve only tested CUDA.

Asking cause lukas wrote that on OpenCL the performance gains could be quite big.

I only have an NVidia card so I can’t test OpenCL. But give it a try and let us know.

1 Like

Sure, you can !

image

No you cannot :wink: I also like @AndreasResch do not see anything under openCL

1 Like

Is this new ? my workstation used to render fine with OpenCL and a GTX970, but I just checked and my laptop (GTX1660Ti) does not. I can’t check the workstation, it’s on another continent. Is this a matter of Blender version, or video card ?

If I’m remembering correctly, it was decided that the option would be disabled for those with nvidia cards because there was no reason to use it. I assume it also made working on the OpenCL mode easier because they no longer needed to test for both GPU vendors.

1 Like

You must start blender with the following environment variable: CYCLES_OPENCL_TEST=1

I’m not sure how it’s done in Windows. In Linux you open the terminal where “blender” binary is located and you execute:
CYCLES_OPENCL_TEST=1 ./blender

For now seem that the upcoming release works only with these devices
Intel Iris and Xe GPUs can now be enabled for OpenCL rendering.

Ah that makes sense - a little.

CUDA is just well really fast/well developed and now it also render GPU and CPU together which is like openCL.