Dade wrote: Fri Jun 21, 2019 9:40 am
I should have fixed this problem.
Thanks Dade and acasta69 for fixing things!
Indeed persistent indirect and periodic caustic cache now work together!
But an old bug reemerged again: When indirect and caustic cache are written for the first time, the caustic cache is not filled properly.
It can easily be tested and seen in debug mode in the concrete4 scene.
With periodic update the subsequent cache builds have the expected normal size because no indirect is build along.
But the bad first caustic one stored in persistent is always thrown in the mix at first messing up things.
.
It is even worse with the
Corona test file (see above).
When I render the animation, 400 samples are finished in 45s without a single cache update taking place, though I specified 7 step samples (should be more, if they would work).
Update: It is possible I had periodic update unchecked when persistent cache was written but checked later, maybe that's not allowed?
In order to make periodic cache update work it is important that each update is equally sampled, preferably with the specified step sample amount.
In my testing this works kind of in LuxCoreUI, but Blender always takes a minute or more before the first update no matter the step size, and when the render is already finished, just bad luck
No idea where this higher latency comes from.
We have here two different algorithms with their own pace of converging that need to be properly synchronized.
In CPU only that has to be done alternatingly which already works.
With OpneCL there is a huge speed disparity between GPU + cache accelerated path tracing and slow CPU based photon mapping.
I'd suggest that hybrid path tracing gets abandoned here and instead caustic cache updating is done continuously on CPU and at the same time path tracing on the GPU for the specified step number and then waiting until the next cache update is ready (or vice versa if the sampling takes longer in case of a weak GPU).
The idea to permutate a cache during sampling is pure genius and I think it has high potential not only for caustic but indirect too in order to reduce flickering and make object animation finally possible with cache acceleration!