diff options
Diffstat (limited to 'intern/cycles/kernel/integrator/path_state.h')
-rw-r--r-- | intern/cycles/kernel/integrator/path_state.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/intern/cycles/kernel/integrator/path_state.h b/intern/cycles/kernel/integrator/path_state.h index eac9ceeae70..ff6b55a73c3 100644 --- a/intern/cycles/kernel/integrator/path_state.h +++ b/intern/cycles/kernel/integrator/path_state.h @@ -70,6 +70,9 @@ ccl_device_inline void path_state_init_integrator(KernelGlobals kg, INTEGRATOR_STATE_WRITE(state, path, continuation_probability) = 1.0f; INTEGRATOR_STATE_WRITE(state, path, throughput) = make_float3(1.0f, 1.0f, 1.0f); + INTEGRATOR_STATE_WRITE(state, isect, object) = OBJECT_NONE; + INTEGRATOR_STATE_WRITE(state, isect, prim) = PRIM_NONE; + if (kernel_data.kernel_features & KERNEL_FEATURE_VOLUME) { INTEGRATOR_STATE_ARRAY_WRITE(state, volume_stack, 0, object) = OBJECT_NONE; INTEGRATOR_STATE_ARRAY_WRITE( @@ -122,7 +125,7 @@ ccl_device_inline void path_state_next(KernelGlobals kg, IntegratorState state, /* volume scatter */ flag |= PATH_RAY_VOLUME_SCATTER; flag &= ~PATH_RAY_TRANSPARENT_BACKGROUND; - if (bounce == 1) { + if (!(flag & PATH_RAY_ANY_PASS)) { flag |= PATH_RAY_VOLUME_PASS; } @@ -184,7 +187,7 @@ ccl_device_inline void path_state_next(KernelGlobals kg, IntegratorState state, } /* Render pass categories. */ - if (bounce == 1) { + if (!(flag & PATH_RAY_ANY_PASS) && !(flag & PATH_RAY_TRANSPARENT_BACKGROUND)) { flag |= PATH_RAY_SURFACE_PASS; } } |