Branched vs. unbranched Pathtracing in SF

  • After reading some articles about Cycles branched path tracing and seeing some videos about it, I tried to see how BPT works in Superfly. I kind of avoided it previously. I've read claimes that BPT is better done with CPU, while the simpler PT is more for GPUs. In my experiments I did not find a proof for this. Both variants work equaliy well with GPU and CPU, at least on my system.

    First thing to notice is that the number of samples are not the same on BPT and PT, so I don't compare the same number of samples. I do compare render times. In BPT, this are my settings:

    Min Bounces 1
    Max Bounces 3
    Diffuse Bounces 1
    Glossy Bounces 2
    Transmission Bounces 4
    Min / Max Tranparent Bounces 4/8
    Volume Bounces 0
    The Bucket size is 32 for CPU and 256 for GPU

    Filter / Clamp / Clamp

    No motion blur, no DOF, no Caustics

    My BPT samples are:
    Diffuse 1
    Glossy 1
    Transmission 1
    Subsurface 1
    Volume 1
    AO 1
    Mesh Light Samples 1
    Both Sample all lights direct and indirect are checked.

  • 0_1517653920527_Comparison2.png

    Here is GND2, rendered in Superfly with Clamshell lights. Both renders took 190 Seconds, you can see the render time and the sample in the file name of the original images, in the Irfanview window title. On the right is the BPT image with 20 samples, I think it's less noisy than the 30 samples PT image on the left.

  • @bantha I've read a lot of articles on reducing the amount of time it takes to render an image in Cycles. The problem is these suggestions don't translate well between Cycles and Superfly. Unfortunately also, my laptop doesn't have GPU.

  • 0_1517654220353_Comparison3.png

    In this image, Diffuse samples was set to 2. According to what I've read, this helps with grainy parts of the image which are indirectly lit. The time is not exactly the same, with 274 seconds for the PT render (35 samples) and 299 seconds for the BPT render.

    You can clearly see in the image that BPD handles fresnel calculations differently. the reflections are less grainy in the PT image, the bathtub is less grainy in the BPT image.

  • @eclark1849

    All images here are Superfly. For my findings it does not matter if you use GPU or CPU, from what I've seen so far.

    I've rendered images with CPU (Ryzen 1700, 15 threads) and GPU (Nvidia GTX 780). The GTX is faster most of the time, but the speed differences between BPT and PT are similar.

    My working theory is that you will get lesser noise in the same time when you use PBT. If you use it in the right way.

    You will need fewer samples with BPT, so please use the render time to compare the results.

  • Poser Ambassadors

    I'd be interested to see the results after setting maximum bounces to 16 and re-testing.

  • @bantha Looks like it's also darker. Could that be what's making it less grainy? Not complaining, by the way. It looks great.

  • 0_1517671424586_Comparison4.png

    Your wish is my command. The PT render took a bit longer and has less noise on the bathtub. The BPT render looks like it's antialiased, the edges are much less jaggy.

    PT: 262 sec. 35 samples, BPT 206 sec. 15 samples

    With Maximum Bounces = 16, the reflection on the floor is much stronger in PT then in SPT.

  • BPT on GPU crashes every time when it gets to the first tile with transmapped hair. Remove the hair and no crash. Odly enough it does not crash on eyelashes.

  • 0_1517676396747_hair.png

    I did not encounter this problem yet. Transmapped hair often needs more transparent bounces, though.

    This is a real quick, an old scene. Agent hair, V4, EZSkin3 for Skin and Hair. Rendered on GPU without any problems. BPT, 15 samples.

  • Settings:

  • By the way, could someone correct "Branched" in the title?

  • Things do look better with BPT enabled but it's highly unstable using CUDA unfortunately. Sometimes I can get lucky and a render with a single figure will finish but most times something will crash, either my display drivers or poser.

    Click on that "i" in the render options when you select BPT and your video card, it warns you that BPT should be disabled while using GPU rendering.

  • I do admit that most of my test renders are pretty simple, but I did not experience a crash up to now. I will test more complex scenes tomorrow and see if I get crashes.

    Since my CPU is nearly as fast as my GPU, I probably would change to the CPU then.

  • @bantha said in Branced vs. unbranched Pathtracing in SF:

    By the way, could someone correct "Branched" in the title?


  • I tried two more complex scenes on GPU and they failed to render with BPT. The scene I tried used three clothed V4 in an environment with difficult light condiditons.

    So yes, complex scenes won't work on the GPU with BPT right now, as it seems.

  • You need a lot of memory for BPT, and most GPU's will run out of memory in a hurry with even simple scenes depending on how many times it branches out. Even with a 32 gig GPU, you could easily run out.