VolumeIntegrateResult result = kernel_volume_decoupled_scatter(kg,
state, ray, sd, &tp, rphase, rscatter, segment, (ls.t != FLT_MAX)? &ls.P: NULL, false);
- (void)result;
- kernel_assert(result == VOLUME_PATH_SCATTERED);
-
/* todo: split up light_sample so we don't have to call it again with new position */
- if(lamp_light_sample(kg, i, light_u, light_v, sd->P, &ls)) {
+ if(result == VOLUME_PATH_SCATTERED &&
+ lamp_light_sample(kg, i, light_u, light_v, sd->P, &ls)) {
if(kernel_data.integrator.pdf_triangles != 0.0f)
ls.pdf *= 2.0f;
VolumeIntegrateResult result = kernel_volume_decoupled_scatter(kg,
state, ray, sd, &tp, rphase, rscatter, segment, (ls.t != FLT_MAX)? &ls.P: NULL, false);
- (void)result;
- kernel_assert(result == VOLUME_PATH_SCATTERED);
-
/* todo: split up light_sample so we don't have to call it again with new position */
- if(light_sample(kg, light_u, light_v, sd->time, sd->P, state->bounce, &ls)) {
+ if(result == VOLUME_PATH_SCATTERED &&
+ light_sample(kg, light_u, light_v, sd->time, sd->P, state->bounce, &ls)) {
if(kernel_data.integrator.num_all_lights)
ls.pdf *= 2.0f;
VolumeIntegrateResult result = kernel_volume_decoupled_scatter(kg,
state, ray, sd, &tp, rphase, rscatter, segment, (ls.t != FLT_MAX)? &ls.P: NULL, false);
- (void)result;
- kernel_assert(result == VOLUME_PATH_SCATTERED);
-
/* todo: split up light_sample so we don't have to call it again with new position */
- if(light_sample(kg, light_u, light_v, sd->time, sd->P, state->bounce, &ls)) {
+ if(result == VOLUME_PATH_SCATTERED &&
+ light_sample(kg, light_u, light_v, sd->time, sd->P, state->bounce, &ls)) {
/* sample random light */
float terminate = path_state_rng_light_termination(kg, state);
if(direct_emission(kg, sd, emission_sd, &ls, state, &light_ray, &L_light, &is_lamp, terminate)) {