Please, dont remove Branched Path Tracing!

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

Better in long termā€¦? Not sure. It is not question just about easiness of code maintainingā€¦question is how you maintain code. :smiley:
I am skeptical from the day when Bump node was changed in a way to render differentlyā€¦and not giving possibility with some check box to render as the old way.
Not to be confused, I am really happy for Blender, Blender team and their effort. But, people are people (Depeche mode) :smiley:

I must admit, my scene is probably very unique, or at leas less then 0.0001% of scenes people are doing are alike. And to maintain BPT for 0.0001% is nonsense in terms of life and death. :smiley:

2 Likes

Btw can you send this scene if it is possible :smile:

2 Likes

That is the point. If your work is ā€œnicheā€ (0,0001%), you really canā€™t ask for changes in the software.
On the other hand, you could make it less ā€œnicheā€, for example removing useless meshlights: turn your hemisphere dome light into a proper World, get rid of a sphere sun and use a real sun lamp. And so onā€¦

2 Likes

Sorry, currently, it is not for public. But, when completed, published, source Blend will be Copy Left. :slight_smile:

1 Like

Nicheā€¦that is my assumption according no one cares about BTP gone. I more believe no one cares, then that my scene is niche. Probably 99,999% users didnt even scratched using BTP. And, really, who cares?

Scene is well optimized. Maybe few more stuff could optimize rendering moreā€¦like 3D cache for near cloudsā€¦but, without of ā€œBTP optimizationā€ā€¦any other is useless. If plough is wrong, who cares about a field.

1 Like

Why someone did put BTP in first place? For joke? Someone has placed BTP for a reasonā€¦to give richness and possibility for tweaking. To fill the gaps.

If parity is problem, then, better dont progress if progress is to cut functionality. Lets, shrink Blender to run on iPod, lol

2 Likes

Branched Path Tracing was added to Cycles prior to the publishing of many of the papers that offer more efficient solutions to the problems Branched Path Tracing was trying to solve. So presumably Branched Path Tracing was added because it solved issues with normal path tracing. But we live in the ā€œfutureā€ now, and there are different techniques that can be used instead of Branched Path Tracing that may offer higher quality, performance, or both.


For example, Branched Path Tracing is a way to work with around the Many Lights problem.
In the last 5ish years, techniques like light trees and stochastic light cuts have been published that can be used to achieve improved convergence in the Many Lights situation compared to normal path tracing, just like Branched Path Tracing, but Light Trees and stochastic light cuts typically have better performance than Branched Path Tracing in many cases.

Note: Ray Tracers with Light Trees typically include a simplified version of Branched Path Tracing in them for use with the Light Tree. Cycles doesnā€™t use this approach, so it does differ from many of the other render engines with light trees in this regard.

Branched path tracing also has some other uses, like with caustics or indirect lighting.
Branched Path Tracing can be used to help speed up the convergence of caustics. But recently techniques like Specular and Manifold Next Event Estimation, and Path Guiding came out. They assist with the convergence of caustics and indirect lighting, and are typically much faster than Branched Path Tracing.


As always, there will be some situation where Branched Path Tracing is better than using these other approaches. But for a large number of situations, these other techniques will offer similar quality (maybe worse, maybe better), at typically higher performance levels.

And when developers have limited time, they need to focus on developing features that are useful for the majority of users and/or scenes rather than developing features for limited use cases. So it seems the Cycles developers priorities have shifted from Branched Path Tracing to other techniques.

11 Likes