Overlapping volumes render incorrectly in path tracing
Closed, ResolvedPublic

Description

The attached Blender file should illustrate the issue. Branched path tracing shows the correct and expected result, as does 2.79a. Path tracing in current builds from master shows visible boundaries where the volumes intersect.

This occurs since revision 7f86afec9d6799e22127c53d9d0805a87462fc08

Brecht Van Lommel (brecht) raised the priority of this task from Normal to Confirmed.Mar 15 2018, 3:20 AM

Could this be similar to T53854? When I change the two occurrences of

int rng_offset = state->rng_offset + state->transparent_bounce*PRNG_BOUNCE_NUM;

to

int rng_offset = state->rng_offset + (state->volume_bounds_bounce + state->transparent_bounce)*PRNG_BOUNCE_NUM;

in kernel_random.h it works as expected.

That alone isn't a stable fix though, since this uses extra dimensions in the RNG that aren't taken into account at setup time, potentially causing out of bounds crashes reading from the sobol table.