Please, dont remove Branched Path Tracing!

Blender version 3.0 intends to remove Branched Path Tracing. :frowning: Please don’t!

For all my experience, Branched Path Tracing has faster convergence (at least 3x).
It can be tuned for a scene for faster results. Path Tracing is simply no match for Branched!

Actually, You can consider adaptive sampling to be a automatic branched path tracing. In branched path tracing you assign different samples to different kinds of materials, in the end that is assigning different sample counts to different part of the image. Adaptive sampling is doing roughly the same thing, but better.

You set a noise level (like how noisy your image should be). Then adaptive sampling would constantly compare your image with the noise level, If one part of the image reaches the noise level it stops sampling for that region, and other regions still continue to accumulate samples.

So branched path tracing and adaptive sampling are both assigning different samples to different parts of your image,But adaptive sampling does it better because it actually dynamically look at the noise level of your image.

Now in 3.0 master adaptive sampling is on by default and the user is expected to work with the noise threshold (noise level) majority of the time. So there’s really no need for branched path tracing now, because adaptive sampling is good enough to be on by default now.

3 Likes

If you find a scene where Branched PT is significantly slower then just report it as a regression bug. Users should not be forced to manually chose between rendering algorithms based on which one performs better in which scenario. That’s a workflow which belongs back into early 2000’s.

Branched PT being significantly faster in some scenes than CyclesX adaptive sampling doesn’t mean Branched PT should be added back, but Adaptive sampling should be improved/fixed to cover that scenario as well.

1 Like

I agree that Adaptive Sampling is great option, fabulous! (And has a bug that I have reported: ⚓ T91718 Adaptive sampling down-samples volume scattered shaded objects)

But, when you say that “Adaptive sampling is doing roughly the same thing” is not same as they are equal.

Branched + Adaptive have even faster convergence than Path + Adaptive.

For Branched, user can tune branch samples per scene type. Adaptive can use only heuristic to determine what to sample more. Adaptive is not aware, it is generic. When user tunes Branched, he uses brain and his eyes.

Look, I have tried v3.0 & Adaptive for my scene and convergence is no way near as Branched can do at v2.934 It is simple empirical fact for me that Branched is more superior than Path, with or without Adaptive.
Branched + Adaptive is better then Path + Adaptive.
Branched is better then Path.

1 Like

I have scene where I tune it to have more noise at small parts of image. I have enormous fast convergence… 5x times. So, I’m willingly sacrifice noise at small parts of an image, not noticeable for eye, 5x faster render…Adaptive will never know this! And, this I can do only when using Branched! :slight_smile:

Well, if you have such a deep rendering technology knowledge to be 100% certain that adaptive sampling will never match up to branched path tracing, then you have sufficient knowledge to write your own renderer, probably far better than Cycles.

Otherwise, if you don’t, then you should pause and think about if you have sufficient experience to make such assumptions. :slight_smile:

1 Like

Huh! I’ve missed this completely, and I just made a super optimized render pass thing…I only need the samples for AO. How do I achieve this without branched?
image
But, seems like a done deal. Oh well.

1 Like

I didn’t mean to offend anybody and I have not used such language in my posts.
I never pointed that I’m 100% certain, but, my certainty about Branched is great.

I only speak from my experience using Blender for some time (~2 years). I can speak from experience as software developer (25 years… from Fortran, assembler to C++, C# etc). And, from experience acquired at university of physics.

Life is short, and, currently I do not have time to write my complex render software, and, this task is for a group of people. I’m completely occupied by some 3 other projects, and for one of these projects I need animation in Blender. But, if I will have time, I could try to enter Cycles development. It is interesting to me. For now, I can only help posting at Blender bugs & forums.

4 Likes

I agree! :slight_smile:

It would be nice to have Branched tuning per object. That goes for Adaptive too. :smiley:

If it’s just AO pass, then why don’t you increase the samples in the AO map itself?

As I mentioned, It is a render pass - I’m not sure what “map” you are talking about? I render these straight to output files in the compositor. Maybe I have missed something basic?
Render passes:
image

Hi all.

Adaptive sampling is good to use right now, and it has been improved for Cycles X.

However, what we really need to ensure that branched path won’t be missed is ‘many light sampling’ (which last I checked is on the roadmap, but has not been worked on). This is despite the fact that you needed quite a lot of lights for BPT to bring a serious advantage (because the all closure sampling caused complex shader setups to take much longer to render).

2 Likes

‘many light sampling’ - That seems like the exact opposite of my use-case? (zero lights)
But, it does not matter all that much. (EEVEE render passes are much faster for me anyway, this is just for backup, so I’m ok with slower renders (for my ao passes in cycles, x or not)) I’m out, peace!

Yes, I mean just making your own custom render pass which overrides scene materials with a simple emissive material using AO map.

But anyway, is there any reason you are making an AO pass for a physically based path tracer like Cycles?

I cant override materials. But, look, I’m not going to explain the entire process and go back and forth: I have made my peace with the “branch-less” future, moving on. (muted this)

1 Like

Yes, I have many lights on my scene and that is why BPT has much faster convergence.

I hope Adaptive will mature enough. It is very promising. Currently, BPT + Adaptive fails to render my scene as good + fast than BPT only. I do some Compositor de-noising on some particular objects. Open Image Denoiser does great job for some objects, while for others tend to blur too much. If I turn on Adaptive, then post de-noised object tend to sample slower. If I could control Adaptive per object base, and then de-noise them in post processing, it would give me better result.

Secondly, why I also currently do not use Adaptive is it looks like there is a bug when doing volume scattering… :anchor: T91718 Adaptive sampling down-samples volume scattered shaded objects

Still, only good reason for ditching Branched is to simplify code maintenance.

Yes, I know this topic is pretty useless. I don’t believe it will change futile future for Branched. I have prepared myself to stay on v2.9 level for sometime. But, who knows, in a future maybe I will buy 10 x 64 core machines and totally forget any particular switches. :smiley:

Once Cycles has light trees, BPT will be firmly obsolete (because instead of the sampler trying to sample all lights at once, it will intelligently choose which light gets sampled for which light path).

Some of the newer papers on many light sampling give truly spectacular results that are more or less foolproof, the smarter sampling even applies to light from emission meshes (which BPT can’t do).

It is on the roadmap along with path guiding, these are two things we need to encourage the devs. to get started on ASAP.

4 Likes

If light trees are happening in v3, I am glad to hear that. Because, if BPT is removed and surrogates like light trees are not added in same time…I will shurly skip number 3 :smiley:

Just tried v3.4.1 and it looks like light trees are implemented and my scene is rendering like before…like Branched is on. :slight_smile:
Also, it loads my v2.9 scene with no problem. :slight_smile:
I’m very very happy! :smiley:

Superb job you guys!!! :v: :love_you_gesture:

1 Like