Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/integrator/shade_light.h
| Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | #endif | ||||
| Spectrum light_eval = light_sample_shader_eval(kg, state, emission_sd, &ls, ray_time); | Spectrum light_eval = light_sample_shader_eval(kg, state, emission_sd, &ls, ray_time); | ||||
| if (is_zero(light_eval)) { | if (is_zero(light_eval)) { | ||||
| return; | return; | ||||
| } | } | ||||
| /* MIS weighting. */ | /* MIS weighting. */ | ||||
| float mis_weight = 1.0f; | float mis_weight = 1.0f; | ||||
| if (!(path_flag & PATH_RAY_MIS_SKIP)) { | if (!(path_flag & PATH_RAY_MIS_SKIP)) { | ||||
| /* multiple importance sampling, get regular light pdf, | mis_weight = light_sample_mis_weight_forward_lamp(kg, state, path_flag, &ls, ray_P); | ||||
| * and compute weight with respect to BSDF pdf */ | |||||
| const float mis_ray_pdf = INTEGRATOR_STATE(state, path, mis_ray_pdf); | |||||
| mis_weight = light_sample_mis_weight_forward(kg, mis_ray_pdf, ls.pdf); | |||||
| } | } | ||||
| /* Write to render buffer. */ | /* Write to render buffer. */ | ||||
| guiding_record_surface_emission(kg, state, light_eval, mis_weight); | guiding_record_surface_emission(kg, state, light_eval, mis_weight); | ||||
| film_write_surface_emission(kg, state, light_eval, mis_weight, render_buffer, ls.group); | film_write_surface_emission(kg, state, light_eval, mis_weight, render_buffer, ls.group); | ||||
| } | } | ||||
| ccl_device void integrator_shade_light(KernelGlobals kg, | ccl_device void integrator_shade_light(KernelGlobals kg, | ||||
| Show All 34 Lines | |||||