Path tracing v Branched path tracing...unusual speeds?

Hi,

I have been experimenting with the branched path tracer and have found that the speed it renders is quite confusing. With the default settings (1 sample for each component of the AA sample) I get a clean render of non-volumetric stuff considerably faster than with the normal path tracer (one or two orders of magnitude in speed increase!)…yet when I try to render volumes it actually takes quite a bit longer. I have tried changing the number of volume samples and I can’t get any improvement in the speed that it converges to a decent render.

Is this the typical experience with branched path tracing? Are there any particularly good sources of information that may help shed some light on how I can get the most out of it? I have read a bit about it, but nothing that would suggest such differences in redner time.

Thanks,

Matt

This isn’t clearly explained a lot of places, but they do light sampling differently. Progressive samples a single lamp on each hit, by default, branched path will sample ALL the lights on the first hit. (newer builds of Blender allow you to set whether to sample all lights for direct (first hit) and indirect, but the default is direct=sample all, indirect=sample one).

Thus, render times and noise is going to be different between the two, especially if you have a lot of lights.

If you’ve got some time and a CGCookie membership, this will explain everything: http://cgcookie.com/blender/cgc-courses/cycles-non-progressive-integrator/

Otherwise, this doc for Arnold does a pretty good job of explaining things. Keep in mind, Arnold always squares samples, so you’ll want the “square samples” option checked in Cycles for the instructions to work right. https://support.solidangle.com/display/mayatut/Removing+Noise

Finally, on the volume noise, have you tried increasing the step size instead?

Another thing to keep in mind is that the volumetric system is still very new in Cycles, so there’s likely still a lot of bugs to work out with it. It doesn’t even have it’s own dedicated render pass yet.

Matt, correct me if I am wrong.

You render non-volumetric objects with Branched Path tracing, and it renders 2-3 times faster than the same scene, but with original Path Tracer?

are you rendering on gpu or on cpu?

No to make new thread. So I’ll ask here.These are two renders.
First is PT, second branch PT.Look at the difference in reflections on the left side.
I thought that there can be small differences in renders when using PT or bPT, but I didn’t thought that it is so big difference. Does main reason of it is different algorithms?
I also didn’t noticed any speed improve in using bPT. In cases where I have only HDRI lighting the scene bPT always takes little bit more time to render.I also noticed that the viewport becomes much slower when using bPT in Render viewport mode. But when I use PT, and switch to the Rendered mode, navigation in the viewport stays smooth and fast. How can it be?
When i set in PT mode 12 samples, I get 144AA samples.Does it mean, that it will shoot 144 diffuse samples, 144 glossy, 144 transmition, 144 A0 samples e. g. when render?

Attachments



Thanks for all the info. I don’t have a CG cookie membership right now, but there are a number of tutorials that I have on my “to watch” list that require a membership, so it’s probably time that I join. :slight_smile:

I have tried increasing the volume step size, and the render goes a lot faster, but I’m not sure if there is actually less noise for an equal number of samples. With an increased sample size there is some loss in definition if the volume has detailed heterogeneity right?

That’s true. Judging by my recent test, the render results actually seem quite different.

CPU rendering, and yes what you say is right, except the speed increase is even more than that. It is almost noise free after 5 AA samples (with 1 sample per diffuse, glossy etc). Where as the normal path tracing is still noisey past 100 samples. The branched path tracer gets to 5AA way sooner than the normal path tracing gets to 100. It might just be my particular scene, but it’s an enormous difference in speed!

However, like I said, that speed increase is all lost as soon as I add volumetrics to my scene. In fact, the branched path tracer doesn’t even seem to converge to the same result as the normal path tracer.

That’s caused by sampling one lamp vs all. I honestly don’t know they’d both give the same result with enough samples, or if one of them is bugged.

I also didn’t noticed any speed improve in using bPT. In cases where I have only HDRI lighting the scene bPT always takes little bit more time to render.

bPT supports multiple samples per lamp, and the default for the world is >1. (it’s set as “4”, but I don’t know if that value is square or not). And as noted, bPT will sample all lamps on every sample, instead of 1. So it’s going to be slower inherently. The idea is it becomes more efficient once dialed in correctly.

I also noticed that the viewport becomes much slower when using bPT in Render viewport mode. But when I use PT, and switch to the Rendered mode, navigation in the viewport stays smooth and fast. How can it be?

bPT does more on each sample. (or this might be a bug…)

When i set in PT mode 12 samples, I get 144AA samples.Does it mean, that it will shoot 144 diffuse samples, 144 glossy, 144 transmition, 144 A0 samples e. g. when render?

Yes, because PT does not split samples. Every secondary sample is always 1 per AA sample.

Hmmm! I did not noticed speed increase on GPU. I am using GTX 690. It my case bPT is slower then PT for 10-20%.