Please, dont remove Branched Path Tracing!

‘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

I had just analyzed and compared v341 vs v29 BPT rendering. I see huge, at least 5x better convergence for v29 BPT. v341 of my result is obviously more noisy. :worried:
I think that somehow, BPT is superior, at least for scenes using all around mesh lightning.
I will test 35 version for path guiding & light trees.

P.S. I pray this difference is not from some other changes, like stuff changed in adaptive tessellation or in bump node.

Many Lights Sampling (Light Trees) was added in Blender 3.5. So I’m not sure what you tested.

This 5x better convergence statement can be kind of confusing. Does Branched Path Tracing offer the same quality as normal path tracing at a 5th the sample count? A 5th the time? Things like that.

Depending on how you use Branched Path Tracing, it can produce a cleaner result than standard path tracing in the same render time. And Branched Path Tracing will always be better quality than the Light Tree at the same sample count. However, depending on the scene, using standard path tracing with the light tree can produce good/usable results in significantly less time than Branched Path Tracing.

In fact, the paper the light tree is based on, and the original implementation of the feature in Cycles back in 2019/2020 was to use it as a feature to improve the efficiency of Branched Path Tracing rather than use it to replace Branched Path Tracing.

Note: The Light Tree feature didn’t make it into a stable release of Blender/Cycles until 2023. It was in development back in the 2019/2020 time period.

1 Like

Nope, v35 cannot digest it. Light trees are on now, (compared to v341 settings), rendering is jammed.
Blender is:

  • not responding,
  • memory is +10gb (from 15gb to 25+ gb), I assume light pats are adding more to it.
  • CPU is at 10%,
  • I don’t see page swapping…SSD is showing 0% work.

OK, Blender35 had finally digested scene. Memory at rendering like +5Gb.
And, result using light paths?
More render time +10min for light trees to digest scene.
Result image quality same as 341, noisy! :face_with_diagonal_mouth:

In either way, if light paths need more memory, let say +30 percent, this is not good for me. I use massive adaptive tessellation, like 15 Gb memory minimum (and really I need more). Compare it for RTX 4090 & 24 Gb…it is very close to memory limit I can use for fast rendering…after…I only can use like Ryzen 7950X & 256 Gb…

RTX 4090 median score 12167.93
Ryzen 7950X median score 621.88

cca 20x 4090 is faster, but has memory limit at 24 Gb.

Then you add some 5% or more of time for to light trees work is job…

Conclusion,
Im friendly suggest you to manage Branched Path Tracing and to return it…simply superior in cases where you have all around mesh lights. My scene full outdoor,

  • uses mesh light ball for sun
  • light dome for environment texture (half ball mesh)
  • sea is at bottom, all way connecting dome, where I use adaptive tessellation for bigger waves, and bump node for smaller.
  • sea has some volumetric light source…to emulate & speed up volumetric.
    First I didnt use BPT, and, I was petrified after I found it. It is light year difference.
    These, light trees are probably good for indoor scenes, not having big memory footprint…but BPT is better in real situation, outdoor & 360 full light scene.

Light Trees as found in Blender 3.5 are built on a single core. This means scenes with many lights, or many triangles that emit light, can take a really long time to build.

Parallel light tree building was added with Blender 3.6. So 3.6 will probably be faster at initialising your scene.

Sadly Light Trees do need more memory.

I am doubtful the Cycles development team will add back Branched Path Tracing. It adds complexity, and I believe it isn’t a particularly efficient algorithm for GPU rendering. And Cycles can still be improved to be more efficient with how it uses it’s samples so hopefully quality can get closer to Branched Path Tracing with faster render times with further development.

Light Trees are best for scenes with:

  • Many Lights
  • Lights of varying brightnesses
  • Lights spread out over large areas
  • Directional lights
  • Probably others.
1 Like

I admit, there can be some switch in Blender, or something else was changed … like bump node…

When comparing two image results I dont use some math convergence tests. I use my eyes and simply put it… for same amount of render times…result obviously better for v293 BPT vs v341. Now, I punch time 5x for v341 renderer…and result is still better for v293 BPT that was rendering 1/5 of that time.

Of course, there can be some changes in adaptive tessellation calculations or in bump node when going from v293 to v341…but Im not sure this is root of the problem…rendering looks same, but noisiness is main difference.

OK, well typed… So you really say: Blender dont really have BPT surrogate.

Blender ditched BPT, didnt see its use…but it has use and people are using it. I am example.

Did Blender team analyze BPT, see where it gives better results, do math comparison of results & render time?

, and I believe it isn’t a particularly efficient algorithm for GPU rendering.

If Blender do their moves only on belief system, not using mathematical & empirical testing…it is not good.

The Cycles team knew there were benefits to the Branched Path Tracing approach. But it has some issues (Primarily in terms of performance, and the extra cost of maintaining the code for it). So the focus in recent years appears to be to improve the quality and/or speed of normal Path Tracing so you can get fast convergence without some of the issues Branched Path Tracing introduces.

And when the time came for the Cycles-X re-write, the Cycles team gave more priority to designing a fast render engine with the ability to more easily expand it with some better sampling methods over keeping Branched Path Tracing.


I do not believe they published any data like that publically.


I am not a Blender or Cycles developer, so what I say does not represent them.

However, this concern about Branched Path Tracing not being efficient on the GPU come from things that have been tested. When there is divergence in the ray tracing process, there is a reduction in performance, and this reduction in performance is easily measurable on the GPU (removing almost all divergence from the ray tracing process can reduce render times by 10-20% in my testing). Branched Path Tracing adds a lot of divergence to the ray tracing process and so it reduces performance more than would be expected from a logical stand point, most noticeably on the GPU.

1 Like

I have difference in +500% or more, I stopped at x5 adding time samples to get close to BPT result!
20% in opposite direction is nothing!

What scene were you testing? Standard indoor? Standard outdoor?
I explained my scene…360+360 deg light.

OK, Simply put it, we dont want to waste any more time on it… BPT is not going back, I will use v29 for my little scene.

This was talking about the divergence in normal path tracing, not the divergence in branched path tracing, which would be worse (I’m not sure how much worse.)

1 Like

Thanks for your replies!
I think it is lost cause to try to change where mainstream is going.
I will do it using v29.

Nice to talk to you. :slight_smile:

I agree with you on some aspects. Branched Path Tracing is just better for some scenes.

But maintaining Branched Path Tracing along with normal Path Tracing is an extra cost in terms of development time, Branched Path Tracing has some issues, and it can be hard to improve or keep feature parity with the normal Path Tracer in some situations depending on how the Cycles team plans to progress.

It is sad that we’ve lost that feature with Cycles-X, but I think it may be for the better in the long term. As Cycles continues to develop, the difference in quality between the Branched Path Tracer and normal Path Tracer at the same render time will decrease for a lot of scenes.

2 Likes