Differential D2591 Diff 8685 intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h
Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h
| Show First 20 Lines • Show All 117 Lines • ▼ Show 20 Lines | get_work_pixel_tile_position(kg, &pixel_x, &pixel_y, | ||||
| work_index, | work_index, | ||||
| ray_index); | ray_index); | ||||
| buffer += (kernel_split_params.offset + pixel_x + pixel_y * stride) * kernel_data.film.pass_stride; | buffer += (kernel_split_params.offset + pixel_x + pixel_y * stride) * kernel_data.film.pass_stride; | ||||
| #ifdef __SHADOW_TRICKS__ | #ifdef __SHADOW_TRICKS__ | ||||
| if((sd->object_flag & SD_OBJECT_SHADOW_CATCHER)) { | if((sd->object_flag & SD_OBJECT_SHADOW_CATCHER)) { | ||||
| if(state->flag & PATH_RAY_CAMERA) { | if(state->flag & PATH_RAY_CAMERA) { | ||||
| state->flag |= (PATH_RAY_SHADOW_CATCHER | PATH_RAY_SHADOW_CATCHER_ONLY); | state->flag |= (PATH_RAY_SHADOW_CATCHER | PATH_RAY_SHADOW_CATCHER_ONLY | PATH_RAY_STORE_SHADOW_INFO); | ||||
| state->catcher_object = sd->object; | state->catcher_object = sd->object; | ||||
| if(!kernel_data.background.transparent) { | if(!kernel_data.background.transparent) { | ||||
| PathRadiance *L = &kernel_split_state.path_radiance[ray_index]; | PathRadiance *L = &kernel_split_state.path_radiance[ray_index]; | ||||
| ccl_global Ray *ray = &kernel_split_state.ray[ray_index]; | ccl_global Ray *ray = &kernel_split_state.ray[ray_index]; | ||||
| L->shadow_color = indirect_background(kg, &kernel_split_state.sd_DL_shadow[ray_index], state, ray); | L->shadow_color = indirect_background(kg, &kernel_split_state.sd_DL_shadow[ray_index], state, ray); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | if(IS_STATE(ray_state, ray_index, RAY_ACTIVE)) { | ||||
| if(terminate >= probability) { | if(terminate >= probability) { | ||||
| ASSIGN_RAY_STATE(ray_state, ray_index, RAY_UPDATE_BUFFER); | ASSIGN_RAY_STATE(ray_state, ray_index, RAY_UPDATE_BUFFER); | ||||
| enqueue_flag = 1; | enqueue_flag = 1; | ||||
| } | } | ||||
| else { | else { | ||||
| kernel_split_state.throughput[ray_index] = throughput/probability; | kernel_split_state.throughput[ray_index] = throughput/probability; | ||||
| } | } | ||||
| } | } | ||||
| kernel_update_denoising_features(kg, sd, state, L); | |||||
| } | } | ||||
| } | } | ||||
| #ifdef __AO__ | #ifdef __AO__ | ||||
| if(IS_STATE(ray_state, ray_index, RAY_ACTIVE)) { | if(IS_STATE(ray_state, ray_index, RAY_ACTIVE)) { | ||||
| /* ambient occlusion */ | /* ambient occlusion */ | ||||
| if(kernel_data.integrator.use_ambient_occlusion || | if(kernel_data.integrator.use_ambient_occlusion || | ||||
| (sd->flag & SD_AO)) | (sd->flag & SD_AO)) | ||||
| ▲ Show 20 Lines • Show All 61 Lines • Show Last 20 Lines | |||||