chunky-dev / chunky

A path tracer to create realistic images of your Minecraft worlds.
https://chunky-dev.github.io/docs
GNU General Public License v3.0
643 stars 76 forks source link

Ray branching and DOF-enabled scenes #1628

Open Peregrine05 opened 12 months ago

Peregrine05 commented 12 months ago

1559 adds the ability to reuse initial rays multiple times, which is beneficial to performance in many situations; however, the convergence of DOF-enabled scenes depends on quantity of initial rays being generated, so total required rendering time is increased greatly if both ray branching and DOF are enabled. It may be reasonable to warn users about this if Chunky detects that ray branching and DOF are both enabled when a render is started, or (slightly less reasonable) to disable ray branching if Chunky detects that DOF is enabled.

JustinTimeCuber commented 12 months ago

Interesting point, I didn't really think about this side effect since I don't personally use DOF. I suppose that with a minor enough DOF effect branching could still be useful, but in a lot of cases it would hurt more than it helps. Adding some sort of warning would make sense, such as if branch count is increased while DOF is enabled or DOF is enabled while branch count > 1.

ProNoob135 commented 11 months ago

A warning more than once would be annoying, could store whether the warning has been given before, or just add the warning to an info popup for the option

JustinTimeCuber commented 11 months ago

A less obtrusive option might be to make the warning appear next to the setting in the GUI

megamasterbloc commented 11 months ago

DOF only depends on the true number of SPP, a similar problem was already mentioned in #1559 in the form of aliasing and the recommendation was to have a true SPP count high enough for it to not be a problem. I've also found that DOF and ray branching dont' go well together and I usally don't use them together

JustinTimeCuber commented 11 months ago

Ok I've thought about this a bit more. How about an extra checkbox in the advanced section that's something like "Always enable branching" (default: false). Then, we do branching if "Always enable branching" is true OR if DOF is disabled.

This way it "just works" without having to go into the advanced tab, and if you then do another scene without DOF, branching will be enabled automatically.

The other option might just be to remove branch count as a persistent setting, so it is automatically reset to the default on each scene.